Identity and Access Management (IAM) memungkinkan Anda mengontrol akses pengguna dan grup ke resource Spanner di tingkat project, instance Spanner, dan database Spanner. Misalnya, Anda dapat menentukan bahwa pengguna memiliki kontrol penuh atas database tertentu dalam instance tertentu di project Anda, tetapi tidak dapat membuat, mengubah, atau menghapus instance apa pun dalam project Anda. Dengan menggunakan kontrol akses dengan IAM, Anda dapat memberikan izin kepada pengguna atau grup tanpa harus mengubah setiap instance Spanner atau izin database satu per satu.
Dokumen ini berfokus pada izin IAM yang relevan dengan Spanner dan peran IAM yang memberikan izin tersebut. Untuk mengetahui deskripsi mendetail tentang IAM dan fitur-fiturnya, lihat panduan developer Identity and Access Management. Secara khusus, lihat bagian Mengelola kebijakan IAM.
Izin
Izin memungkinkan pengguna melakukan tindakan tertentu pada resource
Spanner. Misalnya, izin spanner.databases.read
memungkinkan pengguna
membaca dari database menggunakan API baca Spanner, sedangkan
spanner.databases.select
memungkinkan pengguna menjalankan pernyataan pilih SQL di
database. Anda tidak secara langsung memberikan izin kepada pengguna; tetapi, Anda memberikan peran bawaan atau peran kustom kepada pengguna, yang memiliki satu atau beberapa izin yang dipaketkan di dalamnya.
Tabel berikut mencantumkan izin IAM yang terkait dengan Spanner.
Konfigurasi instance
Izin berikut berlaku untuk konfigurasi instance Spanner. Untuk informasi selengkapnya, lihat referensi konfigurasi instance untuk API REST dan RPC.
Nama izin konfigurasi instance | Deskripsi |
---|---|
spanner.instanceConfigs.create |
Buat konfigurasi instance kustom. |
spanner.instanceConfigs.delete |
Menghapus konfigurasi instance kustom. |
spanner.instanceConfigs.get |
Mendapatkan konfigurasi instance. |
spanner.instanceConfigs.list |
Mencantumkan kumpulan konfigurasi instance. |
spanner.instanceConfigs.update |
Memperbarui konfigurasi instance kustom. |
Operasi konfigurasi instance
Izin berikut berlaku untuk operasi konfigurasi instance Spanner. Untuk informasi selengkapnya, lihat referensi instance untuk API REST dan RPC.
Nama izin operasi konfigurasi instance | Deskripsi |
---|---|
spanner.instanceConfigOperations.list |
Mencantumkan operasi konfigurasi instance. |
spanner.instanceConfigOperations.get |
Mendapatkan operasi konfigurasi instance tertentu. |
spanner.instanceConfigOperations.cancel |
Membatalkan operasi konfigurasi instance. |
spanner.instanceConfigOperations.delete |
Menghapus operasi konfigurasi instance. |
Instance
Izin berikut berlaku untuk instance Spanner. Untuk informasi selengkapnya, lihat referensi instance untuk API REST dan RPC.
Nama izin instance | Deskripsi |
---|---|
spanner.instances.create |
Buat instance. |
spanner.instances.list |
Mencantumkan instance. |
spanner.instances.get |
Mendapatkan konfigurasi instance tertentu. |
spanner.instances.getIamPolicy |
Mendapatkan Kebijakan IAM instance. |
spanner.instances.update |
Mengupdate instance. |
spanner.instances.setIamPolicy |
Menetapkan Kebijakan IAM instance. |
spanner.instances.delete |
Menghapus instance. |
Operasi instance
Izin berikut berlaku untuk operasi instance Spanner. Untuk informasi selengkapnya, lihat referensi instance untuk API REST dan RPC.
Nama izin operasi instance | Deskripsi |
---|---|
spanner.instanceOperations.list |
Mencantumkan operasi instance. |
spanner.instanceOperations.get |
Mendapatkan operasi instance tertentu. |
spanner.instanceOperations.cancel |
Membatalkan operasi instance. |
spanner.instanceOperations.delete |
Menghapus operasi instance. |
Partisi
Izin berikut berlaku untuk partisi Spanner. Untuk informasi selengkapnya, lihat referensi partisi untuk API REST dan RPC.
Nama izin instance | Deskripsi |
---|---|
spanner.instancePartitions.create |
Buat partisi. |
spanner.instancePartitions.get |
Mendapatkan konfigurasi partisi tertentu. |
spanner.instancePartitions.list |
Mencantumkan partisi. |
spanner.instancePartitions.update |
Memperbarui partisi. |
spanner.instancePartitions.delete |
Menghapus partisi. |
Operasi partisi
Izin berikut berlaku untuk operasi partisi Spanner. Untuk informasi selengkapnya, lihat referensi partisi instance untuk REST dan RPC API.
Nama izin operasi partisi instance | Deskripsi |
---|---|
spanner.instancePartitionOperations.list |
Mencantumkan operasi partisi. |
spanner.instancePartitionOperations.get |
Mendapatkan operasi partisi tertentu. |
spanner.instancePartitionOperations.cancel |
Membatalkan operasi partisi. |
spanner.instancePartitionOperations.delete |
Menghapus operasi partisi. |
Database
Izin berikut berlaku untuk database Spanner. Untuk informasi selengkapnya, lihat referensi database untuk API REST dan RPC.
Nama izin database | Deskripsi |
---|---|
spanner.databases.beginPartitionedDmlTransaction |
Menjalankan pernyataan Bahasa Manipulasi Data (DML) Terpartisi. Untuk mengetahui informasi selengkapnya tentang kueri berpartisi, lihat Membaca data secara paralel. |
spanner.databases.create |
Membuat database. |
spanner.databases.createBackup |
Buat cadangan dari database. Juga memerlukan spanner.backups.create untuk membuat resource cadangan. |
spanner.databases.list |
Mencantumkan database. |
spanner.databases.update |
Memperbarui metadata database. |
spanner.databases.updateDdl |
Memperbarui skema database. |
spanner.databases.get |
Mendapatkan metadata database. |
spanner.databases.getDdl |
Mendapatkan skema database. |
spanner.databases.getIamPolicy |
Mendapatkan Kebijakan IAM database. |
spanner.databases.setIamPolicy |
Menetapkan Kebijakan IAM database. |
spanner.databases.beginReadOnlyTransaction |
Memulai transaksi hanya baca di database Spanner. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Memulai atau melakukan rollback transaksi baca-tulis di database Spanner. |
spanner.databases.read |
Membaca dari database menggunakan read API. |
spanner.databases.select |
Menjalankan pernyataan pilih SQL di database. |
spanner.databases.write |
Menulis ke database. |
spanner.databases.drop |
Menghapus database. |
spanner.databases.useRoleBasedAccess |
Gunakan kontrol akses terperinci. |
spanner.databases.useDataBoost |
Gunakan resource komputasi Spanner Data Boost untuk memproses kueri yang dipartisi. |
Peran database
Izin berikut berlaku untuk peran database Spanner. Untuk informasi selengkapnya, lihat referensi database untuk API REST dan RPC.
Nama izin peran database | Deskripsi |
---|---|
spanner.databaseRoles.list |
Mencantumkan peran database. |
spanner.databaseRoles.use |
Menggunakan peran database yang ditentukan. |
Operasi database
Izin berikut berlaku untuk operasi database Spanner. Untuk informasi selengkapnya, lihat referensi database untuk API REST dan RPC.
Nama izin operasi database | Deskripsi |
---|---|
spanner.databaseOperations.list |
Mencantumkan database dan memulihkan operasi database. |
spanner.databaseOperations.get |
Mendapatkan operasi database tertentu. |
spanner.databaseOperations.cancel |
Membatalkan operasi database. |
Cadangan
Izin berikut berlaku untuk pencadangan Spanner. Untuk informasi selengkapnya, lihat referensi pencadangan untuk API REST dan RPC.
Nama izin cadangan | Deskripsi |
---|---|
spanner.backups.create |
Membuat cadangan. Juga memerlukan spanner.databases.createBackup di database sumber. |
spanner.backups.get |
Mendapatkan cadangan. |
spanner.backups.update |
Memperbarui cadangan. |
spanner.backups.delete |
Menghapus cadangan. |
spanner.backups.list |
Mencantumkan pencadangan. |
spanner.backups.restoreDatabase |
Memulihkan database dari cadangan. Juga memerlukan spanner.databases.create untuk membuat database yang dipulihkan di instance target. |
spanner.backups.getIamPolicy |
Mendapatkan kebijakan IAM cadangan. |
spanner.backups.setIamPolicy |
Menetapkan kebijakan IAM cadangan. |
Operasi pencadangan
Izin berikut berlaku untuk operasi pencadangan Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin operasi pencadangan | Deskripsi |
---|---|
spanner.backupOperations.list |
Mencantumkan operasi pencadangan. |
spanner.backupOperations.get |
Mendapatkan operasi pencadangan tertentu. |
spanner.backupOperations.cancel |
Membatalkan operasi pencadangan. |
Jadwal pencadangan
Izin berikut berlaku untuk jadwal pencadangan Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin jadwal pencadangan | Deskripsi |
---|---|
spanner.backupSchedules.create |
Buat jadwal pencadangan. Juga memerlukan spanner.databases.createBackup di database sumber. |
spanner.backupSchedules.get |
Mendapatkan jadwal pencadangan. |
spanner.backupSchedules.update |
Memperbarui jadwal pencadangan. |
spanner.backupSchedules.delete |
Menghapus jadwal pencadangan. |
spanner.backupSchedules.list |
Mencantumkan jadwal pencadangan. |
Sesi
Izin berikut berlaku untuk sesi Spanner. Untuk informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin sesi | Deskripsi |
---|---|
spanner.sessions.create |
Buat sesi. |
spanner.sessions.get |
Mendapatkan sesi. |
spanner.sessions.delete |
Menghapus sesi. |
spanner.sessions.list |
Mencantumkan sesi. |
Peran yang telah ditetapkan
Peran yang telah ditetapkan adalah paket berisi satu atau beberapa izin. Misalnya, peran bawaan roles/spanner.databaseUser
berisi izin spanner.databases.read
dan spanner.databases.write
. Ada
dua jenis peran bawaan untuk Spanner:
- Peran orang: Diberikan kepada pengguna atau grup, yang memungkinkan mereka melakukan tindakan pada resource dalam project Anda.
- Peran mesin: Diberikan ke akun layanan, yang memungkinkan mesin yang berjalan sebagai akun layanan tersebut untuk melakukan tindakan pada resource dalam project Anda.
Tabel berikut mencantumkan kontrol akses dengan peran bawaan IAM, termasuk daftar izin yang terkait dengan setiap peran:
Role | Permissions |
---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( 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:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader with DataBoost( 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:
|
|
Cloud Spanner Database Role User( 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:
|
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( 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:
|
|
Cloud Spanner Restore Admin( 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:
|
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the 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:
|
|
Peran dasar
Peran dasar adalah peran level project yang sudah ada sebelum IAM. Lihat Peran dasar untuk detail tambahan.
Meskipun Spanner mendukung peran dasar berikut, Anda harus menggunakan salah satu peran bawaan yang ditampilkan sebelumnya jika memungkinkan. Peran dasar menyertakan izin luas yang berlaku untuk semua resource Google Cloud Anda; sebaliknya, peran standar Spanner menyertakan izin terperinci yang hanya berlaku untuk Spanner.
Peran dasar | Deskripsi |
---|---|
roles/viewer |
Dapat mencantumkan dan mendapatkan metadata skema dan instance. Juga dapat membaca dan membuat kueri menggunakan SQL di database. |
roles/editor |
Dapat melakukan semua yang dapat dilakukan roles/viewer . Dapat juga membuat instance dan database serta menulis data ke dalam database. |
roles/owner |
Dapat melakukan semua yang dapat dilakukan roles/editor . Juga dapat mengubah akses ke database dan instance. |
Peran khusus
Jika peran bawaan untuk Spanner tidak memenuhi persyaratan bisnis Anda, Anda dapat menentukan peran khusus sendiri dengan izin yang Anda tentukan.
Sebelum membuat peran khusus, Anda harus mengidentifikasi tugas yang perlu dilakukan. Kemudian, Anda dapat mengidentifikasi izin yang diperlukan untuk setiap tugas dan menambahkan izin ini ke peran kustom.
Peran kustom untuk tugas akun layanan
Untuk sebagian besar tugas, izin yang perlu Anda tambahkan ke peran kustom
akan terlihat jelas. Misalnya, jika Anda ingin akun layanan dapat membuat database, tambahkan izin spanner.databases.create
ke peran kustom Anda.
Namun, saat membaca atau menulis data dalam tabel Spanner, Anda harus menambahkan beberapa izin berbeda ke peran kustom. Tabel berikut menunjukkan izin yang diperlukan untuk membaca dan menulis data.
Tugas akun layanan | Izin yang diperlukan |
---|---|
Membaca data |
spanner.databases.select
|
Menyisipkan, memperbarui, atau menghapus data |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Membuat cadangan |
spanner.backups.create
|
Memulihkan database |
spanner.databases.create
|
Peran kustom untuk tugas Konsol Google Cloud
Untuk mengidentifikasi daftar izin yang Anda perlukan untuk tugas tertentu di konsol Google Cloud, Anda harus menentukan alur kerja untuk tugas tersebut dan mengompilasi izin untuk alur kerja tersebut. Misalnya, untuk melihat data dalam tabel, Anda harus mengikuti langkah-langkah berikut di konsol Google Cloud:
Langkah | Izin |
---|---|
1. Mengakses project | resourcemanager.projects.get |
2. Melihat daftar instance | spanner.instances.list |
3. Pilih instance | spanner.instances.get |
4. Melihat daftar database | spanner.databases.list |
5. Memilih database dan tabel | spanner.databases.getDdl |
6. Melihat data dalam tabel | spanner.databases.select , spanner.sessions.create , spanner.sessions.delete |
Dalam contoh ini, Anda memerlukan izin berikut:
resourcemanager.projects.get
spanner.databases.getDdl
spanner.databases.list
spanner.databases.select
spanner.instances.get
spanner.instances.list
spanner.sessions.create
spanner.sessions.delete
Tabel berikut mencantumkan izin yang diperlukan untuk tindakan di konsol Google Cloud.
Tindakan | Izin |
---|---|
Melihat daftar instance di halaman Instance |
|
Lihat daftar di tab Izin pada halaman Instance |
|
Menambahkan akun utama di tab Izin pada halaman Instance |
|
Pilih instance dari daftar instance untuk melihat halaman Detail Instance |
|
Membuat instance |
|
Menghapus instance |
|
Mengubah instance |
|
Membuat partisi |
|
Menghapus partisi |
|
Mengubah partisi |
|
Melihat grafik di tab Monitor pada halaman Detail instance atau halaman Detail database |
|
Melihat daftar database di halaman Detail instance |
|
Lihat daftar di tab Izin pada halaman Detail database |
|
Menambahkan akun utama di tab Izin pada halaman detail Database |
|
Pilih database dari daftar database dan lihat skema di halaman Detail database |
|
Buat database |
|
Menghapus database |
|
Membuat tabel Memperbarui skema tabel |
|
Melihat data di tab Data pada halaman Detail database Membuat dan menjalankan kueri |
|
Mengubah data dalam tabel |
|
Melihat halaman Pencadangan/Pemulihan |
|
Melihat daftar operasi pencadangan |
|
Melihat daftar operasi pemulihan |
|
Membuat cadangan |
|
Memulihkan database dari cadangan |
|
Memperbarui cadangan |
|
Menghapus cadangan |
|
Membuat jadwal pencadangan |
|
Memperbarui jadwal pencadangan |
|
Menghapus jadwal pencadangan |
|
Manajemen kebijakan IAM Spanner
Anda dapat mendapatkan, menetapkan, dan menguji kebijakan IAM menggunakan REST atau RPC API pada resource instance, database, dan cadangan Spanner.
Instance
REST API | RPC API |
---|---|
projects.instances.getIamPolicy |
GetIamPolicy |
projects.instances.setIamPolicy |
SetIamPolicy |
projects.instances.testIamPermissions |
TestIamPermissions |
Database
REST API | RPC API |
---|---|
projects.instances.databases.getIamPolicy |
GetIamPolicy |
projects.instances.databases.setIamPolicy |
SetIamPolicy |
projects.instances.databases.testIamPermissions |
TestIamPermissions |
Cadangan
REST API | RPC API |
---|---|
projects.instances.backups.getIamPolicy |
GetIamPolicy |
projects.instances.backups.setIamPolicy |
SetIamPolicy |
projects.instances.backups.testIamPermissions |
TestIamPermissions |
Langkah selanjutnya
- Pelajari Identity and Access Management lebih lanjut.
- Pelajari cara menerapkan peran IAM untuk database, instance, atau project Google Cloud Spanner.
- Pelajari cara mengontrol akses ke resource Google Cloud, termasuk Spanner, dari internet.