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 dalam mode Datastore. Untuk penjelasan lengkap 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) untuk resource mana dengan menetapkan kebijakan IAM. Kebijakan IAM memberikan peran tertentu kepada pengguna, dengan memberikan izin tertentu kepada pengguna. Misalnya, Anda dapat memberikan peran datastore.indexAdmin kepada pengguna dan dia 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 Memulai atau melakukan rollback transaksi.
datastore.databases.import Mengimpor entity ke dalam database.
datastore.databases.getMetadata Membaca metadata dari database.
datastore.databases.list Mencantumkan database pada sebuah project.
datastore.databases.create Membuat database.
datastore.databases.update Memperbarui database.
datastore.databases.delete Menghapus 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 yang efektif untuk database.
Nama izin entitas Deskripsi
datastore.entities.allocateIds Alokasikan ID untuk kunci dengan jalur kunci yang tidak lengkap.
datastore.entities.create Membuat entity.
datastore.entities.delete Menghapus entity.
datastore.entities.get Membaca entity.
datastore.entities.list Buat daftar kunci entity dalam sebuah 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 Mendapatkan 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 Mengambil entitas statistik.
datastore.statistics.list Daftar kunci entitas statistik.
(datastore.statistics.get diperlukan untuk mengakses data entitas 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 Menampilkan daftar lokasi database yang tersedia. Diperlukan untuk membuat database baru.
Nama izin Key Visualizer Deskripsi
datastore.keyVisualizerScans.get Dapatkan detail tentang pemindaian Key Visualizer.
datastore.keyVisualizerScans.list Mencantumkan pemindaian Key Visualizer yang tersedia.
Nama izin Jadwal Cadangan Deskripsi
datastore.backupSchedules.get Dapatkan detail tentang jadwal pencadangan.
datastore.backupSchedules.list Mencantumkan jadwal pencadangan yang tersedia.
datastore.backupSchedules.create Buat jadwal cadangan.
datastore.backupSchedules.update Memperbarui jadwal pencadangan.
datastore.backupSchedules.delete Menghapus jadwal pencadangan.
Nama izin pencadangan Deskripsi
datastore.backups.get Dapatkan detail tentang cadangan.
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 Viewer, Anda dapat memberikan peran Firestore dalam mode Datastore kepada pengguna project Anda.

Tabel berikut mencantumkan peran IAM 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 Admin Datastore, berikan peran appengine.appAdmin ke 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 dalam 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 dalam database mode Datastore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Akses baca ke informasi cadangan 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 dalam database baru. Peran ini juga memberikan kemampuan untuk membuat database baru, tidak harus dengan memulihkan dari cadangan.

Peran khusus

Jika peran yang telah ditetapkan tidak memenuhi kebutuhan bisnis, 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 untuk sisipan datastore.entities.create
commit untuk pembaruan dan penyisipan datastore.entities.create
datastore.entities.update
commit untuk mendapatkan info terbaru 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 pada 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 Owner atau peran Datastore Owner.

Database mode Datastore memerlukan aplikasi App Engine yang aktif. Jika project tidak memiliki aplikasi, Firestore dalam mode Datastore akan membuatkan aplikasi untuk Anda. Dalam hal ini, Anda memerlukan izin appengine.applications.create dari peran Owner atau dari peran khusus IAM yang berisi izin tersebut.

Latensi perubahan peran

Firestore dalam mode Datastore menyimpan izin IAM dalam cache selama 5 menit, sehingga diperlukan waktu hingga 5 menit agar perubahan peran 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')"
  }
}

Guna mempelajari cara menetapkan Kondisi IAM untuk akses sementara, lihat Mengonfigurasi akses sementara.

Guna mempelajari cara mengonfigurasi Kondisi IAM untuk akses ke satu atau beberapa database, lihat Mengonfigurasi kondisi akses database.

Langkah selanjutnya