Google Cloud menawarkan Identity and Access Management (IAM), yang memungkinkan Anda memberikan akses yang lebih terperinci ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Halaman ini menjelaskan peran IAM Firestore dalam mode Datastore. Untuk mengetahui deskripsi mendetail tentang IAM, baca dokumentasi IAM.
IAM memungkinkan Anda menerapkan prinsip keamanan dengan hak istimewa terendah, sehingga Anda hanya memberikan akses yang diperlukan ke resource Anda.
Dengan IAM, Anda dapat mengontrol siapa (pengguna) yang memiliki izin apa (peran) ke
resource tertentu dengan menetapkan kebijakan IAM. Kebijakan IAM memberikan peran tertentu kepada pengguna, sehingga pengguna memiliki izin tertentu. Misalnya, Anda dapat memberikan peran datastore.indexAdmin
kepada pengguna dan pengguna dapat membuat, mengubah, menghapus, mencantumkan, atau melihat indeks.
Izin dan Peran
Bagian ini merangkum izin dan peran yang didukung Firestore dalam mode Datastore.
Izin
Tabel berikut mencantumkan izin yang didukung Firestore dalam mode Datastore.
Nama izin database | Deskripsi | |
---|---|---|
datastore.databases.export |
Mengekspor entity dari database. | |
datastore.databases.get |
Mulai atau rollback transaksi. Lakukan commit dengan mutasi kosong. |
|
datastore.databases.import |
Mengimpor entity ke dalam database. | |
datastore.databases.getMetadata |
Membaca metadata dari database. | |
datastore.databases.list |
Mencantumkan database dalam project. | |
datastore.databases.create |
Membuat database. | |
datastore.databases.update |
Memperbarui database. | |
datastore.databases.delete |
Menghapus database. | |
datastore.databases.createTagBinding |
Membuat binding tag untuk database. | |
datastore.databases.deleteTagBinding |
Menghapus binding tag untuk database. | |
datastore.databases.listTagBindings |
Mencantumkan semua binding tag untuk database. | |
datastore.databases.listEffectiveTagBindings |
Mencantumkan binding tag yang efektif untuk database. | |
Nama izin entitas | Deskripsi | |
datastore.entities.allocateIds |
Mengalokasikan ID untuk kunci dengan jalur kunci yang tidak lengkap. | |
datastore.entities.create |
Buat entity. | |
datastore.entities.delete |
Menghapus entity. | |
datastore.entities.get |
Membaca entity. | |
datastore.entities.list |
Mencantumkan kunci entity dalam project. ( datastore.entities.get diperlukan untuk mengakses data entity.) |
|
datastore.entities.update |
Memperbarui entity. | |
Nama izin indeks | Deskripsi | |
datastore.indexes.create |
Membuat indeks. | |
datastore.indexes.delete |
Menghapus indeks. | |
datastore.indexes.get |
Membaca metadata dari indeks. | |
datastore.indexes.list |
Membuat daftar indeks pada project. | |
datastore.indexes.update |
Mengupdate indeks. | |
Nama izin namespace | Deskripsi | |
datastore.namespaces.get |
Mengambil metadata dari namespace. | |
datastore.namespaces.list |
Membuat daftar namespace pada project. | |
Nama izin operasi | Deskripsi | |
datastore.operations.cancel |
Membatalkan operasi yang berjalan lama. | |
datastore.operations.delete |
Menghapus operasi yang berjalan lama. | |
datastore.operations.get |
Mengambil status terbaru dari operasi yang berjalan lama. | |
datastore.operations.list |
Mencantumkan operasi yang berjalan lama. | |
Nama izin project | Deskripsi | |
resourcemanager.projects.get |
Menjelajahi resource di project. | |
resourcemanager.projects.list |
Membuat daftar project yang dimiliki. | |
Nama izin statistik | Deskripsi | |
datastore.statistics.get |
Ambil entity statistik. | |
datastore.statistics.list |
Cantumkan kunci entity statistik. ( datastore.statistics.get diperlukan untuk mengakses data entity statistik.) |
|
Nama izin App Engine | Deskripsi | |
appengine.applications.get |
Akses hanya baca ke semua konfigurasi dan setelan aplikasi App Engine. | |
Nama izin akses lokasi | Deskripsi | |
datastore.locations.get |
Mendapatkan detail tentang lokasi database. Diperlukan untuk membuat database baru. | |
datastore.locations.list |
Mencantumkan lokasi database yang tersedia. Diperlukan untuk membuat database baru. | |
Nama izin Key Visualizer | Deskripsi | |
datastore.keyVisualizerScans.get |
Mendapatkan detail tentang pemindaian Key Visualizer. | |
datastore.keyVisualizerScans.list |
Mencantumkan pemindaian Key Visualizer yang tersedia. | |
Nama izin Jadwal Pencadangan | Deskripsi | |
datastore.backupSchedules.get |
Mendapatkan detail tentang jadwal pencadangan. | |
datastore.backupSchedules.list |
Mencantumkan jadwal pencadangan yang tersedia. | |
datastore.backupSchedules.create |
Buat jadwal pencadangan. | |
datastore.backupSchedules.update |
Memperbarui jadwal pencadangan. | |
datastore.backupSchedules.delete |
Menghapus jadwal pencadangan. | |
Nama izin cadangan | Deskripsi | |
datastore.backups.get |
Mendapatkan detail tentang pencadangan. | |
datastore.backups.list |
Mencantumkan cadangan yang tersedia. | |
datastore.backups.delete |
Menghapus cadangan. | |
datastore.backups.restoreDatabase |
Memulihkan database dari cadangan. |
Peran yang telah ditetapkan
Dengan IAM, setiap metode Datastore API mengharuskan akun yang membuat permintaan API memiliki izin yang sesuai untuk menggunakan resource. Izin diberikan dengan menetapkan kebijakan yang memberikan peran ke akun pengguna, grup, atau layanan. Selain peran dasar, Pemilik, Editor, dan Pelihat, Anda dapat memberikan peran Firestore dalam mode Datastore kepada pengguna project Anda.
Tabel berikut mencantumkan peran IAM Firestore dalam mode Datastore. Anda dapat memberikan beberapa peran ke akun pengguna, grup, atau layanan.
Peran | Izin | Deskripsi |
---|---|---|
roles/datastore.owner |
appengine.applications.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
Akses penuh ke instance database. Untuk akses Datastore Admin, berikan peran appengine.appAdmin kepada akun utama. |
roles/datastore.user |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.* datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
Akses baca/tulis ke data dalam database mode Datastore. Ditujukan untuk developer aplikasi dan akun layanan. |
roles/datastore.viewer |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.get datastore.entities.list datastore.indexes.get datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
Akses baca ke semua resource database mode Datastore. |
roles/datastore.importExportAdmin |
appengine.applications.get datastore.databases.export datastore.databases.getMetadata datastore.databases.import datastore.operations.cancel datastore.operations.get datastore.operations.list resourcemanager.projects.get resourcemanager.projects.list |
Akses penuh untuk mengelola impor dan ekspor. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* resourcemanager.projects.get resourcemanager.projects.list |
Akses penuh untuk mengelola definisi indeks. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadata datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list resourcemanager.projects.get resourcemanager.projects.list |
Akses penuh ke pemindaian Key Visualizer. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Akses baca ke jadwal pencadangan di database mode Datastore. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.get datastore.backupSchedules.list datastore.backupSchedules.create datastore.backupSchedules.update datastore.backupSchedules.delete datastore.databases.list datastore.databases.getMetadata |
Akses penuh ke jadwal pencadangan di database mode Datastore. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Akses baca ke informasi pencadangan di lokasi mode Datastore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Akses penuh ke cadangan di lokasi mode Datastore. |
roles/datastore.restoreAdmin |
datastore.backups.get datastore.backups.list datastore.backups.restoreDatabase datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
Kemampuan untuk memulihkan cadangan mode Datastore ke database baru. Peran ini juga memberikan kemampuan untuk membuat database baru, tidak harus dengan memulihkan dari cadangan. |
Peran khusus
Jika peran bawaan tidak memenuhi persyaratan bisnis Anda, Anda dapat menentukan peran khusus sendiri dengan izin yang Anda tentukan:
Izin yang Diperlukan untuk metode API
Tabel berikut mencantumkan izin yang harus dimiliki pemanggil untuk memanggil setiap metode:
Metode | Izin yang Diperlukan |
---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
commit dengan mutasi kosong |
datastore.databases.get |
commit untuk sisipan |
datastore.entities.create |
commit untuk upsert |
datastore.entities.create datastore.entities.update |
commit untuk update |
datastore.entities.update |
commit untuk penghapusan |
datastore.entities.delete |
commit untuk pencarian |
datastore.entities.get Untuk pencarian yang terkait dengan metadata atau statistik, lihat Izin yang Diperlukan untuk Metadata dan Statistik. |
commit untuk kueri |
datastore.entities.list datastore.entities.get (jika kueri bukan kueri khusus kunci)Untuk kueri yang terkait dengan metadata atau statistik, lihat Izin yang Diperlukan untuk Metadata dan Statistik. |
lookup |
datastore.entities.get Untuk pencarian yang terkait dengan metadata atau statistik, lihat Izin yang Diperlukan untuk Metadata dan Statistik. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (jika kueri bukan kueri khusus kunci)Untuk kueri yang terkait dengan metadata atau statistik, lihat Izin yang Diperlukan untuk Metadata dan Statistik. |
runQuery dengan kueri tanpa jenis |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Izin yang Diperlukan untuk Metadata dan Statistik
Tabel berikut mencantumkan izin yang harus dimiliki pemanggil untuk memanggil metode di Metadata dan Statistik.
Metode | Izin yang Diperlukan |
---|---|
lookup entitas dengan nama jenis yang cocok dengan __Stat_*__ |
datastore.statistics.get |
runQuery menggunakan jenis dengan nama yang cocok dengan __Stat_*__ |
datastore.statistics.get datastore.statistics.list |
runQuery menggunakan jenis __namespace__ |
datastore.namespaces.get datastore.namespaces.list |
Peran yang diperlukan untuk membuat instance database mode Datastore
Untuk membuat instance database mode Datastore baru, Anda memerlukan peran Pemilik atau peran Pemilik Datastore.
Database mode Datastore memerlukan aplikasi App Engine yang aktif.
Jika project tidak memiliki aplikasi, Firestore dalam mode Datastore akan membuatnya untuk Anda. Dalam hal ini, Anda memerlukan izin appengine.applications.create
dari peran Pemilik atau dari peran kustom IAM yang berisi izin tersebut.
Latensi perubahan peran
Firestore dalam mode Datastore meng-cache izin IAM selama 5 menit, sehingga perubahan peran akan memerlukan waktu hingga 5 menit untuk diterapkan.
Mengelola IAM
Anda dapat memperoleh dan menetapkan kebijakan IAM menggunakan konsol Google Cloud, metode IAM, atau Google Cloud CLI.
- Untuk konsol Google Cloud, lihat Kontrol akses melalui konsol Google Cloud.
- Untuk metode IAM, lihat Kontrol akses melalui API.
- Untuk gcloud CLI, lihat Kontrol akses melalui alat gcloud.
Mengonfigurasi izin akses bersyarat
Anda dapat menggunakan IAM Conditions untuk menentukan dan menerapkan kontrol akses bersyarat.
Misalnya, kondisi berikut menetapkan peran datastore.user
kepada akun utama hingga tanggal yang ditentukan:
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
Untuk mempelajari cara menentukan IAM Conditions untuk akses sementara, lihat Mengonfigurasi akses sementara.
Untuk mempelajari cara mengonfigurasi IAM Conditions untuk akses ke satu atau beberapa database, lihat Mengonfigurasi kondisi akses database.
Langkah selanjutnya
- Pelajari IAM lebih lanjut.
- Memberikan peran IAM.