Identity and Access Management (IAM) memungkinkan Anda mengontrol akses pengguna dan grup ke resource Spanner di level database Spanner, instance, dan project. Misalnya, Anda dapat menetapkan bahwa pengguna memiliki kontrol penuh atas database tertentu dalam instance tertentu dalam project, tetapi tidak dapat membuat, mengubah, atau menghapus instance dalam project Anda. Penggunaan kontrol akses dengan IAM memungkinkan Anda memberikan izin kepada pengguna atau grup tanpa harus mengubah setiap izin database atau instance Spanner 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, baca panduan developer Identity and Access Management. Secara khusus, baca 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 select SQL di
database. Anda tidak memberi pengguna izin secara langsung; sebagai gantinya, Anda memberi mereka peran standar atau peran khusus, 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 REST dan RPC API.
Nama izin konfigurasi instance | Deskripsi |
---|---|
spanner.instanceConfigs.create |
Membuat konfigurasi instance kustom. |
spanner.instanceConfigs.delete |
Menghapus konfigurasi instance kustom. |
spanner.instanceConfigs.get |
Mendapatkan konfigurasi instance. |
spanner.instanceConfigs.list |
Menampilkan daftar kumpulan konfigurasi instance. |
spanner.instanceConfigs.update |
Mengupdate konfigurasi instance kustom. |
Operasi konfigurasi instance
Izin berikut berlaku untuk operasi konfigurasi instance Spanner. Untuk informasi selengkapnya, lihat referensi instance untuk REST dan RPC API.
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 mengetahui informasi selengkapnya, lihat referensi instance untuk REST dan RPC API.
Nama izin instance | Deskripsi |
---|---|
spanner.instances.create |
Membuat instance. |
spanner.instances.list |
Mencantumkan instance. |
spanner.instances.get |
Mendapatkan konfigurasi instance tertentu. |
spanner.instances.getIamPolicy |
Mendapatkan Kebijakan IAM instance. |
spanner.instances.update |
Memperbarui 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 REST dan RPC API.
Nama izin operasi instance | Deskripsi |
---|---|
spanner.instanceOperations.list |
Membuat daftar operasi instance. |
spanner.instanceOperations.get |
Mendapatkan operasi instance tertentu. |
spanner.instanceOperations.cancel |
Membatalkan operasi instance. |
spanner.instanceOperations.delete |
Menghapus operasi instance. |
Database
Izin berikut berlaku untuk database Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin database | Deskripsi |
---|---|
spanner.databases.beginPartitionedDmlTransaction |
Menjalankan pernyataan Bahasa Manipulasi Data Terpartisi (DML). |
spanner.databases.create |
Membuat database. |
spanner.databases.createBackup |
Buat cadangan dari database. Juga memerlukan spanner.backups.create untuk membuat resource cadangan. |
spanner.databases.list |
Membuat daftar database. |
spanner.databases.update |
Memperbarui metadata database. |
spanner.databases.updateDdl |
Perbarui 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 |
Mulai transaksi hanya baca di database Spanner. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Memulai atau me-roll back transaksi baca-tulis di database Spanner. |
spanner.databases.read |
Membaca dari database menggunakan read API. |
spanner.databases.select |
Menjalankan pernyataan SQL select pada database. |
spanner.databases.write |
Menulis ke dalam {i>database<i}. |
spanner.databases.drop |
Melepaskan database. |
spanner.databases.useRoleBasedAccess |
Gunakan kontrol akses yang mendetail. |
spanner.databases.useDataBoost |
Gunakan resource komputasi Spanner Data Boost untuk memproses kueri terpartisi. |
Peran database
Izin berikut berlaku untuk peran database Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
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 mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin operasi database | Deskripsi |
---|---|
spanner.databaseOperations.list |
Mencantumkan operasi database dan memulihkan operasi database. |
spanner.databaseOperations.get |
Mendapatkan operasi database tertentu. |
spanner.databaseOperations.cancel |
Membatalkan operasi database. |
Membuat cadangan
Izin berikut berlaku untuk cadangan Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi cadangan untuk REST dan RPC API.
Nama izin pencadangan | Deskripsi |
---|---|
spanner.backups.create |
Membuat cadangan. Juga memerlukan spanner.databases.createBackup pada database sumber. |
spanner.backups.get |
Dapatkan cadangan. |
spanner.backups.update |
Perbarui cadangan. |
spanner.backups.delete |
Menghapus cadangan. |
spanner.backups.list |
Mencantumkan cadangan. |
spanner.backups.restoreDatabase |
Pulihkan database dari cadangan. Juga memerlukan spanner.databases.create untuk membuat database yang dipulihkan pada 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. |
Sesi
Izin berikut berlaku untuk sesi Spanner. Untuk mengetahui informasi selengkapnya, lihat referensi database untuk REST dan RPC API.
Nama izin sesi | Deskripsi |
---|---|
spanner.sessions.create |
Buat sesi. |
spanner.sessions.get |
Dapatkan sesi. |
spanner.sessions.delete |
Hapus sesi. |
spanner.sessions.list |
Membuat daftar sesi. |
Peran yang telah ditetapkan
Peran yang telah ditetapkan merupakan paket yang berisi satu atau beberapa izin. Misalnya, peran roles/spanner.databaseUser
yang telah ditetapkan 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 di 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 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`. |
|
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. |
|
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 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 mencakup izin luas yang berlaku untuk semua resource Google Cloud Anda. Sebaliknya, peran bawaan Spanner mencakup izin terperinci yang hanya berlaku untuk Spanner.
Peran dasar | Deskripsi |
---|---|
roles/viewer |
Dapat mencantumkan dan mendapatkan metadata skema dan instance. Dapat juga membaca dan membuat kueri menggunakan SQL pada database. |
roles/editor |
Dapat melakukan semua yang bisa dilakukan roles/viewer . Juga dapat 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 yang telah ditetapkan untuk Spanner tidak memenuhi persyaratan bisnis, Anda dapat menentukan peran khusus dengan izin yang Anda tentukan.
Sebelum membuat peran khusus, Anda harus mengidentifikasi tugas yang perlu dilakukan. Selanjutnya, Anda dapat mengidentifikasi izin yang diperlukan untuk setiap tugas dan menambahkan izin ini ke peran khusus tersebut.
Peran khusus untuk tugas akun layanan
Untuk sebagian besar tugas, sudah jelas izin mana yang perlu Anda tambahkan ke peran kustom Anda. Misalnya, jika Anda ingin akun layanan dapat membuat database, tambahkan izin spanner.databases.create
ke peran khusus Anda.
Namun, saat membaca atau menulis data di tabel Spanner, Anda perlu menambahkan beberapa izin yang berbeda ke peran khusus Anda. 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
|
Buat cadangan |
spanner.backups.create
|
Memulihkan database |
spanner.databases.create
|
Peran khusus untuk tugas konsol Google Cloud
Untuk mengidentifikasi daftar izin yang diperlukan untuk tugas tertentu di Konsol Google Cloud, Anda perlu menentukan alur kerja untuk tugas tersebut dan mengompilasi izin untuk alur kerja tersebut. Misalnya, untuk melihat data dalam tabel, ikuti 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 pada halaman Instance |
|
Melihat 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 |
|
Melihat grafik di tab Monitor pada halaman detail Instance atau halaman detail Database |
|
Melihat daftar database di halaman detail Instance |
|
Melihat daftar di tab Izin pada halaman detail Database |
|
Menambahkan akun utama di tab Izin pada halaman detail Database |
|
Memilih database dari daftar database dan melihat 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 |
|
Buat cadangan |
|
Memulihkan database dari cadangan |
|
Memperbarui cadangan |
|
Menghapus cadangan |
|
Pengelolaan kebijakan IAM Spanner
Anda dapat memperoleh, menetapkan, dan menguji kebijakan IAM menggunakan REST API atau RPC API pada instance, database, dan resource pencadangan 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 |
Membuat 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 Spanner, instance, atau project Google Cloud.
- Pelajari cara mengontrol akses ke resource Google Cloud, termasuk Spanner, dari internet.