Mengelola akses ke resource Anda dengan Identity and Access Management (IAM). IAM memungkinkan Anda memberikan akses yang lebih terperinci ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Halaman ini menjelaskan izin dan peran IAM untuk Cloud Firestore. Untuk penjelasan mendetail tentang IAM, baca dokumentasi IAM.
Dengan IAM, Anda dapat menerapkan prinsip keamanan dengan hak istimewa terendah, jadi Anda hanya memberikan akses yang diperlukan ke resource Anda.
Dengan IAM, Anda mengendalikan siapa (pengguna) yang memiliki izin apa (peran)
untuk resource mana dengan menetapkan kebijakan IAM.
Kebijakan IAM memberikan satu atau beberapa peran kepada pengguna, dengan
memberinya izin tertentu. Misalnya, Anda dapat memberi peran datastore.indexAdmin
kepada pengguna sehingga dia dapat membuat, mengubah, menghapus, mencantumkan, atau melihat
indeks.
Izin dan peran
Bagian ini merangkum izin dan peran yang didukung Cloud Firestore.
Izin yang diperlukan untuk metode API
Tabel berikut mencantumkan daftar izin yang harus dimiliki pemanggil untuk melakukan setiap tindakan:
Metode | Izin yang diperlukan | |
---|---|---|
projects.databases.MongoDBCompatible |
||
ListDatabases |
datastore.databases.getMetadata |
|
ListIndexes |
datastore.indexes.list |
|
Find |
datastore.entities.get datastore.entities.list |
|
Aggregate |
datastore.entities.get datastore.entities.list |
|
GetMore |
Izin yang sama yang diperlukan oleh panggilan yang membuat kursor. |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.get datastore.entities.list |
|
CommitTransaction |
datastore.databases.get |
|
AbortTransaction |
datastore.databases.get |
|
EndSessions |
datastore.databases.get |
|
KillCursors |
datastore.databases.get |
|
Insert |
datastore.entities.create |
|
Update |
datastore.entities.get datastore.entities.list datastore.entities.update datastore.entities.create (khusus untuk upsert) |
|
FindAndModify |
datastore.entities.get datastore.entities.list datastore.entities.update (khusus untuk penggantian atau update)datastore.entities.create (khusus untuk upsert)datastore.entities.delete (khusus untuk penghapusan) |
|
CreateCollection |
datastore.entities.create |
|
projects.databases.indexes |
||
create |
datastore.indexes.create |
|
delete |
datastore.indexes.delete |
|
get |
datastore.indexes.get |
|
list |
datastore.indexes.list |
|
projects.databases |
||
create |
datastore.databases.create |
|
delete |
datastore.databases.delete |
|
get |
datastore.databases.getMetadata |
|
list |
datastore.databases.list |
|
patch |
datastore.databases.update |
|
pulihkan | datastore.backups.restoreDatabase |
|
clone |
datastore.databases.clone |
Meng-clone database.
Jika permintaan
Jika Anda ingin memverifikasi apakah binding tag berhasil ditetapkan dengan mencantumkan binding, izin tambahan berikut diperlukan:
|
projects.locations |
||
get |
datastore.locations.get |
|
list |
datastore.locations.list |
|
projects.databases.backupschedules |
||
get |
datastore.backupSchedules.get |
|
list |
datastore.backupSchedules.list |
|
create |
datastore.backupSchedules.create |
|
update |
datastore.backupSchedules.update |
|
delete |
datastore.backupSchedules.delete |
|
projects.locations.backups |
||
get |
datastore.backups.get |
|
list |
datastore.backups.list |
|
delete |
datastore.backups.delete |
|
projects.databases.usercreds |
||
get |
datastore.userCreds.get |
|
list |
datastore.userCreds.list |
|
create |
datastore.userCreds.create |
|
enable |
datastore.userCreds.update |
|
disable |
datastore.userCreds.update |
|
resetPassword |
datastore.userCreds.update |
|
delete |
datastore.userCreds.delete |
Peran yang telah ditetapkan
Dengan IAM, setiap metode API di Cloud Firestore mengharuskan akun pembuat permintaan API memiliki izin yang sesuai agar dapat menggunakan resource. Izin diberikan dengan menetapkan kebijakan yang memberikan peran ke akun pengguna, grup, atau layanan. Selain peran primitif, pemilik, editor, dan pelihat, Anda dapat memberikan peran Cloud Firestore kepada pengguna project Anda.
Tabel berikut mencantumkan peran IAM Cloud Firestore. 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 Cloud Firestore. |
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 Cloud Firestore. 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 Cloud Firestore. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.list datastore.operations.get resourcemanager.projects.get resourcemanager.projects.list |
Akses penuh untuk mengelola definisi indeks. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Akses baca ke jadwal pencadangan di database Cloud Firestore. |
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 Cloud Firestore. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Akses baca ke informasi cadangan di lokasi Cloud Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Akses penuh ke cadangan di lokasi Cloud Firestore. |
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 Cloud Firestore ke dalam database baru. Peran ini juga memberikan kemampuan untuk membuat database baru, tidak harus dengan melakukan pemulihan dari cadangan. |
roles/datastore.cloneAdmin |
datastore.databases.clone datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
Kemampuan untuk meng-clone database Cloud Firestore ke database baru. Peran ini juga memberikan kemampuan untuk membuat database baru, tidak harus dengan melakukan clone. |
roles/datastore.statisticsViewer |
resourcemanager.projects.get resourcemanager.projects.list datastore.databases.getMetadata datastore.insights.get datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list datastore.statistics.list datastore.statistics.get |
Akses baca ke Insight, Statistik, dan pemindaian Key Visualizer. |
roles/datastore.userCredsViewer |
datastore.userCreds.get datastore.userCreds.list |
Akses baca ke kredensial pengguna di database Cloud Firestore. |
roles/datastore.userCredsAdmin |
datastore.userCreds.get datastore.userCreds.list datastore.userCreds.create datastore.userCreds.update datastore.userCreds.delete datastore.databases.list datastore.databases.getMetadata |
Akses penuh ke kredensial pengguna di database Cloud Firestore. |
Peran khusus
Jika peran yang telah ditetapkan tidak memenuhi persyaratan bisnis Anda, Anda dapat menentukan peran khusus sendiri dengan izin yang Anda tentukan:
- Pelajari tentang peran khusus.
- Buat dan kelola peran khusus.
Peran yang diperlukan untuk membuat dan mengelola tag
Jika ada tag yang ditampilkan dalam tindakan pembuatan atau pemulihan, beberapa peran diperlukan. Lihat Membuat dan mengelola tag untuk mengetahui detail selengkapnya tentang cara membuat key-value pair tag sebelum mengaitkannya dengan resource database.
Izin yang tercantum berikut diperlukan.
Lihat tag
datastore.databases.listTagBindings
datastore.databases.listEffectiveTags
Mengelola tag pada resource
Izin berikut diperlukan untuk resource database tempat Anda mengaitkan nilai tag.
datastore.databases.createTagBinding
Izin
Tabel berikut mencantumkan izin yang didukung Cloud Firestore.
Nama izin database | Deskripsi | |
---|---|---|
datastore.databases.get |
Memulai atau me-roll back transaksi. | |
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.clone |
Meng-clone 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 berlaku untuk database. | |
Nama izin entitas | Deskripsi | |
datastore.entities.create |
Membuat dokumen. | |
datastore.entities.delete |
Menghapus dokumen | |
datastore.entities.get |
Membaca dokumen. | |
datastore.entities.list |
Membuat daftar nama dokumen pada project. ( datastore.entities.get diperlukan untuk mengakses data dokumen.) |
|
datastore.entities.update |
Mengupdate dokumen | |
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 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 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 |
Membuat jadwal pencadangan. | |
datastore.backupSchedules.update |
Memperbarui jadwal pencadangan. | |
datastore.backupSchedules.delete |
Menghapus jadwal pencadangan. | |
Nama izin pencadangan | Deskripsi | |
datastore.backups.get |
Mendapatkan detail tentang cadangan. | |
datastore.backups.list |
Mencantumkan cadangan yang tersedia. | |
datastore.backups.delete |
Menghapus cadangan. | |
datastore.backups.restoreDatabase |
Memulihkan database dari cadangan. | |
Nama izin insight | Deskripsi | |
datastore.insights.get |
Mendapatkan insight resource | |
Nama izin kredensial pengguna | Deskripsi | |
datastore.userCreds.get |
Mendapatkan detail tentang kredensial pengguna. | |
datastore.userCreds.list |
Mencantumkan kredensial pengguna yang tersedia. | |
datastore.userCreds.create |
Membuat kredensial pengguna. | |
datastore.userCreds.update |
Mengaktifkan atau menonaktifkan kredensial pengguna, atau mereset sandi pengguna. | |
datastore.userCreds.delete |
Menghapus kredensial pengguna. |
Latensi perubahan peran
Cloud Firestore meng-cache izin IAM selama 5 menit, sehingga butuh waktu hingga 5 menit sampai perubahan peran mulai berlaku.
Mengelola IAM Cloud Firestore
Anda dapat memperoleh dan menetapkan kebijakan IAM menggunakan konsol Google Cloud,
IAM API, atau
alat command linegcloud
. Lihat
Memberikan, Mengubah, dan Mencabut Akses ke Anggota Project
untuk mengetahui detailnya.
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 tertentu:
{
"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 berikutnya
- Pelajari IAM lebih lanjut.
- Memberikan peran IAM.
- Pelajari autentikasi.