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.
- Untuk konsol Google Cloud, lihat Kontrol akses melalui Konsol Google Cloud.
- Untuk metode IAM, lihat Kontrol akses melalui API.
- Untuk gcloud CLI, lihat Kontrol akses melalui alat gcloud.
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
- Pelajari IAM lebih lanjut.
- Memberikan peran IAM.