Identity and Access Management (IAM)

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.

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