Google Cloud menawarkan Identity and Access Management (IAM), yang memungkinkan Anda memberikan akses yang lebih terperinci ke resource tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Google Cloud 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 mana dengan menetapkan kebijakan IAM. Kebijakan IAM memberikan
peran tertentu kepada pengguna, sehingga pengguna tersebut memiliki izin tertentu. Misalnya, Anda dapat memberikan peran datastore.indexAdmin
kepada pengguna dan pengguna tersebut 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 oleh Firestore dalam mode Datastore.
Nama izin database | Deskripsi | |
---|---|---|
datastore.databases.export |
Mengekspor entity dari database. | |
datastore.databases.bulkDelete |
Menghapus entity secara massal dari database. | |
datastore.databases.get |
Mulai atau batalkan transaksi. Lakukan 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 |
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.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 entitas. | |
datastore.entities.list |
Mencantumkan kunci entity dalam project. ( datastore.entities.get diperlukan untuk mengakses data entity.) |
|
datastore.entities.update |
Perbarui 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 |
Mengambil entity statistics. | |
datastore.statistics.list |
Mencantumkan 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 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 |
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 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 Admin Datastore, 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 di 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 datastore.insights.get |
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.bulkAdmin |
resourcemanager.projects.get resourcemanager.projects.list datastore.databases.getMetadata datastore.databases.bulkDelete datastore.operations.cancel datastore.operations.get datastore.operations.list |
Akses penuh untuk mengelola operasi massal. |
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 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. |
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. |
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.
Melihat 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 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 operasi upsert |
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 di Metadata dan Statistics.
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 menyimpan izin IAM dalam cache 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.
- Untuk konsol Google Cloud , lihat Kontrol akses menggunakan konsol Google Cloud .
- Untuk metode IAM, lihat Kontrol akses menggunakan API.
- Untuk gcloud CLI, lihat Kontrol akses menggunakan 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 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
- Pelajari IAM lebih lanjut.
- Memberikan peran IAM.