Mengelola akses ke resource Anda dengan Identity and Access Management (IAM). Dengan IAM, Anda dapat memberikan akses yang lebih terperinci ke Google Cloud resource tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Halaman ini menjelaskan izin dan peran IAM untuk Cloud Firestore. Untuk mengetahui deskripsi 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 dapat mengontrol siapa (pengguna) yang memiliki izin apa (peran)
untuk resource mana dengan menetapkan kebijakan IAM.
Kebijakan IAM memberikan satu atau beberapa peran kepada pengguna, sehingga
pengguna tersebut memiliki izin tertentu. Misalnya, Anda dapat memberikan peran datastore.indexAdmin
kepada pengguna, yang memungkinkan pengguna 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 (hanya 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 yang membuat permintaan API memiliki izin yang sesuai untuk menggunakan resource. Izin diberikan dengan menetapkan kebijakan yang memberikan peran kepada pengguna, grup, atau akun layanan. Selain peran dasar, 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 kepada pengguna, grup, atau akun 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 memulihkan 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 meng-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 bawaan tidak memenuhi persyaratan bisnis Anda, Anda dapat menentukan peran khusus sendiri dengan izin yang Anda tentukan:
Peran yang diperlukan untuk membuat dan mengelola tag
Jika ada tag yang diwakili dalam tindakan pembuatan atau pemulihan, beberapa peran diperlukan. Lihat Membuat dan mengelola tag untuk mengetahui detail selengkapnya tentang cara membuat pasangan nilai kunci 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 |
Mulai atau melakukan rollback 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 |
Buat 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 efektif 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 |
Buat jadwal pencadangan. | |
datastore.backupSchedules.update |
Perbarui 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 |
Buat kredensial pengguna. | |
datastore.userCreds.update |
Mengaktifkan atau menonaktifkan kredensial pengguna, atau mereset sandi pengguna. | |
datastore.userCreds.delete |
Hapus kredensial pengguna. |
Latensi perubahan peran
Cloud Firestore menyimpan izin IAM dalam cache selama 5 menit, sehingga perubahan peran memerlukan waktu hingga 5 menit agar dapat diterapkan.
Mengelola IAM Cloud Firestore
Anda dapat memperoleh dan menetapkan kebijakan IAM menggunakan Konsol Google Cloud, IAM API, atau alat command line gcloud
. 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.