Identity and Access Management (IAM)

Kelola 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 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 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 dengan 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 operasi upsert)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (khusus untuk mengganti atau memperbarui)
datastore.entities.create (khusus untuk memperbarui dan menyisipkan)
datastore.entities.delete (khusus untuk menghapus)
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
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 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 Firestore kepada pengguna project Anda.

Tabel berikut mencantumkan peran IAM 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 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 di database 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 Firestore.
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.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Akses baca ke jadwal pencadangan di database 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 Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Akses baca ke informasi cadangan di lokasi Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Akses penuh ke cadangan di lokasi 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 Firestore ke database baru. Peran ini juga memberikan kemampuan untuk membuat database baru, tidak harus dengan memulihkan dari cadangan.
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 pemindaian Insight, Statistik, dan Key Visualizer.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Akses baca ke kredensial pengguna di database 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 Firestore.

Peran khusus

Jika peran bawaan tidak memenuhi persyaratan bisnis Anda, Anda dapat menentukan peran khusus sendiri dengan izin yang Anda tentukan:

Izin

Tabel berikut mencantumkan izin yang didukung Firestore.

Nama izin database Deskripsi
datastore.databases.get Memulai 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.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.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 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.
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 Cantumkan 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 Menghapus kredensial pengguna.

Latensi perubahan peran

Firestore meng-cache izin IAM selama 5 menit, sehingga perlu waktu hingga 5 menit agar perubahan peran diterapkan.

Mengelola IAM 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 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 berikutnya