IAM 개요

Identity and Access Management(IAM)를 사용하면 프로젝트, Spanner 인스턴스, Spanner 데이터베이스 수준에서 Spanner 리소스에 대한 사용자 및 그룹 액세스를 제어할 수 있습니다. 예를 들어, 사용자가 프로젝트의 특정 인스턴스에서 특정 데이터베이스를 완전히 제어할 수 있지만 프로젝트에서 인스턴스를 만들거나 수정 또는 삭제할 수 없도록 지정할 수 있습니다. IAM으로 액세스를 제어하면 각 Spanner 인스턴스 또는 데이터베이스 권한을 개별적으로 수정할 필요 없이 사용자나 그룹에게 권한을 부여할 수 있습니다.

이 문서는 Spanner와 관련된 IAM 권한과 해당 권한을 부여하는 IAM 역할을 집중적으로 설명합니다. IAM 및 해당 기능에 대한 자세한 설명은 Identity and Access Management 개발자 가이드를 참조하세요. 특히 IAM 정책 관리 섹션을 참조하세요.

권한

사용자는 권한을 통해 Spanner 리소스에서 특정 작업을 수행할 수 있습니다. 예를 들어 사용자는 spanner.databases.read 권한을 통해 Spanner의 읽기 API를 사용하여 데이터베이스에서 읽을 수 있고, spanner.databases.select 권한을 통해 데이터베이스에서 SQL select 문을 실행할 수 있습니다. 사용자에게 권한을 직접 부여하는 대신 하나 이상의 권한이 번들로 포함된 사전 정의된 역할이나 커스텀 역할을 부여합니다.

다음 표에는 Spanner와 관련된 IAM 권한이 나열되어 있습니다.

인스턴스 구성

Spanner 인스턴스 구성에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 인스턴스 구성 참조를 확인하세요.

인스턴스 구성 권한 이름 설명
spanner.instanceConfigs.create 커스텀 인스턴스 구성을 만듭니다.
spanner.instanceConfigs.delete 커스텀 인스턴스 구성을 삭제합니다.
spanner.instanceConfigs.get 인스턴스 구성을 가져옵니다.
spanner.instanceConfigs.list 인스턴스 구성 조합을 나열합니다.
spanner.instanceConfigs.update 커스텀 인스턴스 구성을 업데이트합니다.

인스턴스 구성 작업

Spanner 인스턴스 구성 작업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 인스턴스 참조를 확인하세요.

인스턴스 구성 작업 권한 이름 설명
spanner.instanceConfigOperations.list 인스턴스 구성 작업을 나열합니다.
spanner.instanceConfigOperations.get 특정 인스턴스 구성 작업을 가져옵니다.
spanner.instanceConfigOperations.cancel 인스턴스 구성 작업을 취소합니다.
spanner.instanceConfigOperations.delete 인스턴스 구성 작업을 삭제합니다.

인스턴스

Spanner 인스턴스에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 인스턴스 참조를 확인하세요.

인스턴스 권한 이름 설명
spanner.instances.create 인스턴스를 만듭니다.
spanner.instances.list 인스턴스를 나열합니다.
spanner.instances.get 특정 인스턴스 구성을 가져옵니다.
spanner.instances.getIamPolicy 인스턴스의 IAM 정책을 가져옵니다.
spanner.instances.update 인스턴스를 업데이트합니다.
spanner.instances.setIamPolicy 인스턴스의 IAM 정책을 설정합니다.
spanner.instances.delete 인스턴스를 삭제합니다.

인스턴스 작업

Spanner 인스턴스 작업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 인스턴스 참조를 확인하세요.

인스턴스 작업 권한 이름 설명
spanner.instanceOperations.list 인스턴스 작업을 나열합니다.
spanner.instanceOperations.get 특정 인스턴스 작업을 가져옵니다.
spanner.instanceOperations.cancel 인스턴스 작업을 취소합니다.
spanner.instanceOperations.delete 인스턴스 작업을 삭제합니다.

파티션

Spanner 파티션에 적용되는 권한은 다음과 같습니다. 자세한 내용은 RESTRPC API의 파티션 참조를 확인하세요.

인스턴스 권한 이름 설명
spanner.instancePartitions.create 파티션을 만듭니다.
spanner.instancePartitions.get 특정 파티션 구성을 가져옵니다.
spanner.instancePartitions.list 파티션을 나열합니다.
spanner.instancePartitions.update 파티션을 업데이트합니다.
spanner.instancePartitions.delete 파티션을 삭제합니다.

파티션 작업

Spanner 파티션 작업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST 및 RPC API의 인스턴스 파티션 참조를 확인하세요.

인스턴스 파티션 작업 권한 이름 설명
spanner.instancePartitionOperations.list 파티션 작업을 나열합니다.
spanner.instancePartitionOperations.get 특정 파티션 작업을 가져옵니다.
spanner.instancePartitionOperations.cancel 파티션 작업을 취소합니다.
spanner.instancePartitionOperations.delete 파티션 작업을 삭제합니다.

데이터베이스

Spanner 데이터베이스에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

데이터베이스 권한 이름 설명
spanner.databases.beginPartitionedDmlTransaction

Partitioned DML 문을 실행합니다. 파티션 쿼리에 관한 자세한 내용은 동시에 데이터 읽기를 참고하세요.

spanner.databases.create 데이터베이스를 만듭니다.
spanner.databases.createBackup 데이터베이스에서 백업을 만듭니다. 또한 spanner.backups.create로 백업 리소스를 만들어야 합니다.
spanner.databases.list 데이터베이스를 나열합니다.
spanner.databases.update

데이터베이스의 메타데이터를 업데이트합니다.

spanner.databases.updateDdl 데이터베이스의 스키마를 업데이트합니다.
spanner.databases.get 데이터베이스의 메타데이터를 가져옵니다.
spanner.databases.getDdl 데이터베이스의 스키마를 가져옵니다.
spanner.databases.getIamPolicy 데이터베이스의 IAM 정책을 가져옵니다.
spanner.databases.setIamPolicy 데이터베이스의 IAM 정책을 설정합니다.
spanner.databases.beginReadOnlyTransaction Spanner 데이터베이스에서 읽기 전용 트랜잭션을 시작합니다.
spanner.databases.beginOrRollbackReadWriteTransaction Spanner 데이터베이스에서 읽기-쓰기 트랜잭션을 시작하거나 롤백합니다.
spanner.databases.read 읽기 API를 사용하여 데이터베이스에서 읽습니다.
spanner.databases.select 데이터베이스에서 SQL select 구문을 실행합니다.
spanner.databases.write 데이터베이스에 씁니다.
spanner.databases.drop 데이터베이스를 삭제합니다.
spanner.databases.useRoleBasedAccess 세분화된 액세스 제어를 사용합니다.
spanner.databases.useDataBoost Spanner Data Boost의 컴퓨팅 리소스를 사용하여 파티션을 나눈 쿼리를 처리합니다.

데이터베이스 역할

Spanner 데이터베이스 역할에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

데이터베이스 역할 권한 이름 설명
spanner.databaseRoles.list 데이터베이스 역할을 나열합니다.
spanner.databaseRoles.use 지정된 데이터베이스 역할을 사용합니다.

데이터베이스 작업

Spanner 데이터베이스 작업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

데이터베이스 작업 권한 이름 설명
spanner.databaseOperations.list 데이터베이스를 나열하고 데이터베이스 작업을 복원합니다.
spanner.databaseOperations.get 특정 데이터베이스 작업을 가져옵니다.
spanner.databaseOperations.cancel 데이터베이스 작업을 취소합니다.

백업

Spanner 백업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 백업 참조를 확인하세요.

백업 권한 이름 설명
spanner.backups.create 백업 만들기 또한 소스 데이터베이스에서 spanner.databases.createBackup이 필요합니다.
spanner.backups.get 백업을 가져옵니다.
spanner.backups.update 백업을 업데이트합니다.
spanner.backups.delete 백업을 삭제합니다.
spanner.backups.list 백업을 나열합니다.
spanner.backups.restoreDatabase 백업에서 데이터베이스를 복원합니다. 또한 spanner.databases.create로 대상 인스턴스에서 복원된 데이터베이스를 만들어야 합니다.
spanner.backups.getIamPolicy 백업의 IAM 정책을 가져옵니다.
spanner.backups.setIamPolicy 백업의 IAM 정책을 설정합니다.

백업 작업

Spanner 백업 작업에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

백업 작업 권한 이름 설명
spanner.backupOperations.list 백업 작업을 나열합니다.
spanner.backupOperations.get 특정 백업 작업을 가져옵니다.
spanner.backupOperations.cancel 백업 작업을 취소합니다.

백업 일정

Spanner 백업 일정에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

백업 일정 권한 이름 설명
spanner.backupSchedules.create 백업 일정을 만듭니다. 또한 소스 데이터베이스에서 spanner.databases.createBackup이 필요합니다.
spanner.backupSchedules.get 백업 일정을 가져옵니다.
spanner.backupSchedules.update 백업 일정을 업데이트합니다.
spanner.backupSchedules.delete 백업 일정을 삭제합니다.
spanner.backupSchedules.list 백업 일정을 나열합니다.

세션

Spanner 세션에 적용되는 권한은 다음과 같습니다. 자세한 내용은 REST API 및 RPC API의 데이터베이스 참조를 확인하세요.

세션 권한 이름 설명
spanner.sessions.create 세션을 만듭니다.
spanner.sessions.get 세션을 가져옵니다.
spanner.sessions.delete 세션을 삭제합니다.
spanner.sessions.list 세션을 나열합니다.

사전 정의된 역할

사전 정의된 역할은 한 개 이상의 권한 번들입니다. 예를 들어 사전 정의된 역할 roles/spanner.databaseUser에는 spanner.databases.read 권한과 spanner.databases.write 권한이 있습니다. Spanner의 사전 정의된 역할에는 다음과 같은 두 가지 유형이 있습니다.

  • 사람 역할: 사용자나 그룹에게 부여되며, 이 역할을 통해 프로젝트의 리소스에서 작업을 수행할 수 있습니다.
  • 머신 역할: 서비스 계정에 부여되며, 이 역할을 통해 머신이 프로젝트의 리소스에서 작업을 수행하는 해당 서비스 계정으로 실행될 수 있습니다.

다음 표에는 각 역할과 관련된 권한 목록을 포함해 IAM의 사전 정의된 역할을 사용한 액세스 제어가 나열되어 있습니다.

Role Permissions

(roles/spanner.admin)

Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:

  • Grant and revoke permissions to other principals for all Spanner resources in the project.
  • Allocate and delete chargeable Spanner resources.
  • Issue get/list/modify operations on Cloud Spanner resources.
  • Read from and write to all Cloud Spanner databases in the project.
  • Fetch project metadata.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backupSchedules.create
  • spanner.backupSchedules.delete
  • spanner.backupSchedules.get
  • spanner.backupSchedules.getIamPolicy
  • spanner.backupSchedules.list
  • spanner.backupSchedules.setIamPolicy
  • spanner.backupSchedules.update
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databaseRoles.list
  • spanner.databaseRoles.use
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.changequorum
  • spanner.databases.create
  • spanner.databases.createBackup
  • spanner.databases.drop
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.getIamPolicy
  • spanner.databases.list
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.setIamPolicy
  • spanner.databases.update
  • spanner.databases.updateDdl
  • spanner.databases.updateTag
  • spanner.databases.useDataBoost
  • spanner.databases.useRoleBasedAccess
  • spanner.databases.write
  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list
  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update
  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list
  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list
  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update
  • spanner.instances.create
  • spanner.instances.createTagBinding
  • spanner.instances.delete
  • spanner.instances.deleteTagBinding
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.instances.listEffectiveTags
  • spanner.instances.listTagBindings
  • spanner.instances.setIamPolicy
  • spanner.instances.update
  • spanner.instances.updateTag
  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.backupAdmin)

A principal with this role can:

  • Create, view, update, and delete backups.
  • View and manage a backup's allow policy.

This role cannot restore a database from a backup.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backupSchedules.update

spanner.backups.copy

spanner.backups.create

spanner.backups.delete

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.backups.setIamPolicy

spanner.backups.update

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupWriter)

This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backups.copy

spanner.backups.create

spanner.backups.get

spanner.backups.list

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instances.get

(roles/spanner.databaseAdmin)

A principal with this role can:

  • Get/list all Spanner instances in the project.
  • Create/list/drop databases in an instance.
  • Grant/revoke access to databases in the project.
  • Read from and write to all Cloud Spanner databases in the project.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.*

  • spanner.databaseRoles.list
  • spanner.databaseRoles.use

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.create

spanner.databases.drop

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.setIamPolicy

spanner.databases.update

spanner.databases.updateDdl

spanner.databases.updateTag

spanner.databases.useDataBoost

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReader)

A principal with this role can:

  • Read from the Spanner database.
  • Execute SQL queries on the database.
  • View schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReaderWithDataBoost)

Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseRoleUser)

In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.use

(roles/spanner.databaseUser)

A principal with this role can:

  • Read from and write to the Spanner database.
  • Execute SQL queries on the database, including DML and Partitioned DML.
  • View and update schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.updateDdl

spanner.databases.updateTag

spanner.databases.write

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.fineGrainedAccessUser)

Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.list

spanner.databases.useRoleBasedAccess

(roles/spanner.restoreAdmin)

A principal with this role can restore databases from backups.

If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backups.get

spanner.backups.list

spanner.backups.restoreDatabase

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.create

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.viewer)

A principal with this role can:

  • View all Spanner instances (but cannot modify instances).
  • View all Spanner databases (but cannot modify or read from databases).

For example, you can combine this role with the roles/spanner.databaseUser role to grant a user with access to a specific database, but only view access to other instances and databases.

This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databases.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

기본 역할

기본 역할은 IAM보다 먼저 발생하는 프로젝트 수준 역할입니다. 자세한 내용은 기본 역할을 참조하세요.

Spanner는 다음과 같은 기본 역할을 지원하지만 가능하면 앞에 나와 있는 사전 정의된 역할 중 하나를 사용해야 합니다. 기본 역할에는 모든 Google Cloud 리소스에 적용되는 광범위한 권한이 포함됩니다. 반면에 Spanner의 사전 정의된 역할에는 Spanner에만 적용되는 세분화된 권한이 포함됩니다.

기본 역할 설명
roles/viewer 인스턴스와 스키마의 메타데이터를 나열하고 가져올 수 있습니다. 데이터베이스에서 SQL을 사용하여 읽고 쿼리할 수도 있습니다.
roles/editor roles/viewer가 할 수 있는 모든 작업을 할 수 있습니다. 인스턴스와 데이터베이스를 만들고 데이터베이스에 데이터를 쓸 수도 있습니다.
roles/owner roles/editor가 할 수 있는 모든 작업을 할 수 있습니다. 데이터베이스 및 인스턴스에 대한 액세스를 수정할 수도 있습니다.

커스텀 역할

Spanner의 사전 정의된 역할로 비즈니스 요구사항이 해결되지 않으면 권한을 지정하여 고유한 커스텀 역할을 정의하면 됩니다.

먼저 수행해야 할 태스크를 확인한 후에 커스텀 역할을 만들어야 합니다. 그런 다음 각 태스크에 필요한 권한을 확인하고 이러한 권한을 커스텀 역할에 추가할 수 있습니다.

서비스 계정 태스크를 위한 커스텀 역할

대부분의 태스크의 경우, 커스텀 역할에 추가해야 하는 권한이 무엇인지 분명합니다. 예를 들어 서비스 계정에서 데이터베이스를 만들 수 있도록 하려면 spanner.databases.create 권한을 커스텀 역할에 추가합니다.

하지만 Spanner 테이블에서 데이터를 읽거나 쓸 경우에는 여러 가지 권한을 커스텀 역할에 추가해야 합니다. 다음 표에서는 데이터 읽기 및 쓰기에 필요한 권한을 보여줍니다.

서비스 계정 태스크 필수 권한
데이터 읽기 spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
데이터 삽입, 업데이트 또는 삭제 spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
백업 만들기 spanner.backups.create
spanner.databases.createBackup
데이터베이스 복원 spanner.databases.create
spanner.backups.restoreDatabase

Google Cloud 콘솔 태스크의 커스텀 역할

Google Cloud 콘솔에서 주어진 태스크에 필요한 권한 목록을 확인하려면 해당 태스크의 워크플로를 확인하고 해당 워크플로의 권한을 컴파일합니다. 예를 들어 테이블의 데이터를 보려면 Google Cloud 콘솔에서 다음 단계를 수행합니다.

단계 권한
1. 프로젝트에 액세스 resourcemanager.projects.get
2. 인스턴스 목록 보기 spanner.instances.list
3. 인스턴스 선택 spanner.instances.get
4. 데이터베이스 목록 보기 spanner.databases.list
5. 데이터베이스 및 테이블 선택 spanner.databases.getDdl
6. 테이블의 데이터 보기 spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

이 예시에서 필요한 권한은 다음과 같습니다.

  • resourcemanager.projects.get
  • spanner.databases.getDdl
  • spanner.databases.list
  • spanner.databases.select
  • spanner.instances.get
  • spanner.instances.list
  • spanner.sessions.create
  • spanner.sessions.delete

다음 표에서는 Google Cloud 콘솔 작업에 필요한 권한을 보여줍니다.

작업 권한
인스턴스 페이지에서 인스턴스 목록 보기

resourcemanager.projects.get
spanner.instances.list

인스턴스 페이지의 권한 탭에서 목록 보기

spanner.instances.getIamPolicy

인스턴스 페이지의 권한 탭에서 주 구성원 추가

spanner.instances.setIamPolicy

인스턴스 목록에서 인스턴스 세부정보 페이지를 보려는 인스턴스 선택

spanner.instances.get

인스턴스 만들기

spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create

인스턴스 삭제

spanner.instances.delete

인스턴스 수정

spanner.instanceOperations.get
spanner.instances.update

파티션 만들기

spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create

파티션 삭제

spanner.instancePartitions.delete

파티션 수정

spanner.instancePartitionOperations.get
spanner.instancePartitions.update

데이터베이스 세부정보 페이지 또는 인스턴스 세부정보 페이지의 모니터 탭에서 그래프 보기

monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get

인스턴스 세부정보 페이지에서 데이터베이스 목록 보기

spanner.databases.list

데이터베이스 세부정보 페이지의 권한 탭에서 목록 보기

spanner.databases.getIamPolicy

데이터베이스 세부정보 페이지의 권한 탭에서 주 구성원 추가

spanner.databases.setIamPolicy

데이터베이스 목록에서 데이터베이스 선택 및 데이터베이스 세부정보 페이지에서 스키마 보기

spanner.databases.get
spanner.databases.getDdl

데이터베이스 만들기

spanner.databases.create

데이터베이스 삭제

spanner.databases.drop

테이블 만들기

테이블 스키마 업데이트

spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl

데이터베이스 세부정보 페이지의 데이터 탭에서 데이터 보기

쿼리 작성 및 실행

spanner.databases.select
spanner.sessions.create
spanner.sessions.delete

테이블의 데이터 수정

spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete

백업/복원 페이지 보기

spanner.backups.list
spanner.backups.get

백업 작업 목록 보기

spanner.backupOperations.list

복원 작업 목록 보기

spanner.databaseOperations.list

백업 만들기

spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1

백업에서 데이터베이스 복원

spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create

백업 업데이트

spanner.backups.update

백업 삭제

spanner.backups.delete

백업 일정 만들기

spanner.backupSchedules.create

spanner.databases.createBackup

백업 일정 업데이트

spanner.backupSchedules.update

백업 일정 삭제

spanner.backupSchedules.delete

1 데이터베이스 수준 대신 인스턴스 수준으로 백업/복원 페이지에서 백업을 만드는 경우에 필수입니다.

Spanner IAM 정책 관리

Spanner 인스턴스, 데이터베이스, 백업 리소스에서 REST 또는 RPC API를 사용하여 IAM 정책을 가져오고, 설정하고, 테스트할 수 있습니다.

인스턴스

REST API RPC API
projects.instances.getIamPolicy GetIamPolicy
projects.instances.setIamPolicy SetIamPolicy
projects.instances.testIamPermissions TestIamPermissions

데이터베이스

REST API RPC API
projects.instances.databases.getIamPolicy GetIamPolicy
projects.instances.databases.setIamPolicy SetIamPolicy
projects.instances.databases.testIamPermissions TestIamPermissions

백업

REST API RPC API
projects.instances.backups.getIamPolicy GetIamPolicy
projects.instances.backups.setIamPolicy SetIamPolicy
projects.instances.backups.testIamPermissions TestIamPermissions

다음 단계