Identity and Access Management (IAM)

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 clone Anda berisi nilai tags, maka izin tambahan berikut diperlukan:

  • datastore.databases.createTagBinding

Jika Anda ingin memverifikasi apakah binding tag berhasil ditetapkan dengan mencantumkan binding, izin tambahan berikut diperlukan:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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