Cloud Firestore için sunucu istemci kitaplıklarını kullandığınızda Identity and Access Management (IAM) ile kaynaklarınıza erişimi yönetebilirsiniz. IAM, belirli Google Cloud kaynaklarına daha ayrıntılı erişim vermenize olanak tanır ve diğer kaynaklara istenmeyen erişimi engeller. Bu sayfada, Cloud Firestore için IAM izinleri ve rolleri açıklanmaktadır. IAM'nin ayrıntılı açıklaması için IAM belgelerini okuyun.
IAM, en az ayrıcalık ilkesi güvenlik ilkesini uygulamanıza olanak tanır. Böylece kaynaklarınıza yalnızca gerekli erişim iznini verirsiniz.
IAM, IAM politikaları belirleyerek hangi kaynaklar için kimin (kullanıcı) ne (rol) iznine sahip olduğunu kontrol etmenizi sağlar.
IAM politikaları, bir kullanıcıya bir veya daha fazla rol vererek kullanıcıya belirli izinler sağlar. Örneğin, bir kullanıcıya datastore.indexAdmin rolünü verebilirsiniz. Bu rol, kullanıcının dizin oluşturmasına, değiştirmesine, silmesine, listelemesine veya görüntülemesine olanak tanır.
İzinler ve roller
Bu bölümde, Cloud Firestore tarafından desteklenen izinler ve roller özetlenmektedir.
API yöntemleri için gerekli izinler
Aşağıdaki tabloda, her bir işlemi gerçekleştirmek için çağrı yapanın sahip olması gereken izinler listelenmiştir:
| Yöntem | Gerekli izinler |
|---|---|
projects.databases.documents |
|
batchGet |
datastore.entities.get |
exists ön koşulu false olarak ayarlanmış batchWrite güncellemesi veya dönüşümü |
datastore.entities.create |
exists ön koşulu true olarak ayarlanmış batchWrite güncellemesi veya dönüşümü |
datastore.entities.create |
batchWrite güncelleme veya dönüştürme işlemi ön koşul olmadan gerçekleştirildi |
datastore.entities.create |
beginTransaction |
datastore.databases.get |
exists ön koşulu false olarak ayarlanmış commit güncellemesi veya dönüşümü |
datastore.entities.create |
exists ön koşulu true olarak ayarlanmış commit güncellemesi veya dönüşümü |
datastore.entities.update |
commit güncelleme veya dönüştürme işlemi ön koşul olmadan gerçekleştirildi |
datastore.entities.create |
commit silme |
datastore.entities.delete |
createDocument |
datastore.entities.create |
delete |
datastore.entities.delete |
get |
datastore.entities.get |
list |
datastore.entities.getdatastore.entities.list |
listCollectionIds |
datastore.entities.list |
partitionQuery |
datastore.entities.get |
patch |
datastore.entities.update |
rollback |
datastore.databases.get |
runAggregationQuery |
datastore.entities.get |
runQuery |
datastore.entities.get |
executePipeline (RPC)Aşağıdaki aşamalardan herhangi birini içeren: - collection(...)- collection_group(...)- database()
|
datastore.entities.get
|
executePipeline (RPC)Aşağıdaki aşamalardan herhangi birini içeren: - documents(...) |
datastore.entities.get
|
executePipeline (RPC)Aşağıdaki aşamalardan herhangi birini içeren: - update(...) |
datastore.entities.update
|
executePipeline (RPC)Aşağıdaki aşamalardan herhangi birini içeren: - delete(...) |
datastore.entities.delete
|
exists ön koşulu false olarak ayarlanmış write (RPC) güncellemesi veya dönüşümü |
datastore.entities.create |
exists ön koşulu true olarak ayarlanmış write (RPC) güncellemesi veya dönüşümü |
datastore.entities.update |
write (RPC) güncelleme veya dönüştürme işlemi ön koşul olmadan gerçekleştirildi |
datastore.entities.create |
write (RPC) silme |
datastore.entities.delete |
projects.databases.indexes |
|
create |
datastore.schemas.create |
delete |
datastore.schemas.delete |
get |
datastore.schemas.get |
list |
datastore.schemas.list |
projects.databases |
|
create |
datastore.databases.create
Bağlamaları listeleyerek etiket bağlamalarının başarıyla ayarlanıp ayarlanmadığını doğrulamak istiyorsanız aşağıdaki ek izinler gerekir:
|
delete |
datastore.databases.delete |
get |
datastore.databases.getMetadata |
list |
datastore.databases.list |
patch |
datastore.databases.update |
| restore | datastore.backups.restoreDatabase |
clone |
datastore.databases.clone
Bağlamaları listeleyerek etiket bağlamalarının başarıyla ayarlanıp ayarlanmadığını doğrulamak istiyorsanız aşağıdaki ek izinler gerekir:
|
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 |
Önceden tanımlanmış roller
IAM ile Cloud Firestore içindeki her API yöntemi, API isteğini gönderen hesabın kaynağı kullanmak için uygun izinlere sahip olmasını gerektirir. İzinler, bir kullanıcıya, gruba veya hizmet hesabına rol veren politikalar ayarlanarak verilir. Sahip, düzenleyici ve görüntüleyici gibi temel rollerin yanı sıra projenizin kullanıcılarına Cloud Firestore rolleri de verebilirsiniz.
Aşağıdaki tabloda Cloud Firestore IAM rolleri listelenmiştir. Bir kullanıcıya, gruba veya hizmet hesabına birden fazla rol verebilirsiniz.
| Rol | İzinler | Açıklama |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
Cloud Firestore için tam erişim. |
roles/datastore.user |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
Cloud Firestore veritabanındaki verilere okuma/yazma erişimi. Uygulama geliştiriciler ve hizmet hesapları için tasarlanmıştır. |
roles/datastore.viewer |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.listdatastore.insights.get |
Tüm Cloud Firestore kaynaklarına okuma erişimi. |
roles/datastore.importExportAdmin |
appengine.applications.getdatastore.databases.exportdatastore.databases.getMetadatadatastore.databases.importdatastore.operations.canceldatastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list |
İçe ve dışa aktarımları yönetmek için tam erişim. |
roles/datastore.bulkAdmin |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.databases.bulkDeletedatastore.operations.canceldatastore.operations.getdatastore.operations.list |
Toplu işlemleri yönetmek için tam erişim. |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list |
Dizin tanımlarını yönetmek için tam erişim. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadatadatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listresourcemanager.projects.getresourcemanager.projects.list |
Key Visualizer taramalarına tam erişim. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
Cloud Firestore veritabanındaki yedekleme planlarına okuma erişimi. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
Cloud Firestore veritabanındaki yedekleme programlarına tam erişim. |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
Cloud Firestore konumundaki yedekleme bilgilerine okuma erişimi. |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
Cloud Firestore konumundaki yedeklere tam erişim. |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Cloud Firestore yedeklemesini yeni bir veritabanına geri yükleme özelliği. Bu rol, yedeklemeden geri yükleme yapmadan yeni veritabanları oluşturma olanağı da sağlar. |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Cloud Firestore veritabanını yeni bir veritabanına kopyalama özelliği. Bu rol, klonlama yoluyla olması gerekmeksizin yeni veritabanları oluşturma olanağı da sağlar. |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
Analizler, istatistikler ve Key Visualizer taramalarına okuma erişimi. |
Özel rol sayısı
Önceden tanımlanmış roller işletmenizin gereksinimlerini karşılamıyorsa belirttiğiniz izinlerle kendi özel rollerinizi tanımlayabilirsiniz:
Etiket oluşturmak ve yönetmek için gereken roller
Oluşturma veya geri yükleme işlemlerinde herhangi bir etiket varsa bazı roller gerekir. Etiket anahtar/değer çiftlerini veritabanı kaynaklarıyla ilişkilendirmeden önce oluşturma hakkında daha fazla bilgi için Etiket oluşturma ve yönetme başlıklı makaleyi inceleyin.
Aşağıda listelenen izinler gereklidir.
Etiketleri görüntüle
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
Kaynaklardaki etiketleri yönetme
Etiket değerini eklediğiniz veritabanı kaynağı için aşağıdaki izin gereklidir.
datastore.databases.createTagBinding
İzinler
Aşağıdaki tabloda, Cloud Firestore tarafından desteklenen izinler listelenmiştir.
| Veritabanı izni adı | Açıklama | |
|---|---|---|
datastore.databases.get |
İşlem başlatma veya geri alma | |
datastore.databases.import |
Varlıkları bir veritabanına aktarma | |
datastore.databases.export |
Veritabanındaki varlıkları dışa aktarma | |
datastore.databases.bulkDelete |
Veritabanındaki varlıkları toplu olarak silme | |
datastore.databases.getMetadata |
Veritabanından meta verileri okuma | |
datastore.databases.list |
Projedeki veritabanlarını listeleme | |
datastore.databases.create |
Veritabanı oluşturun. | |
datastore.databases.update |
Veritabanını güncelleme | |
datastore.databases.delete |
Veritabanı silme | |
datastore.databases.clone |
Veritabanı klonlama | |
datastore.databases.createTagBinding |
Veritabanı için etiket bağlama oluşturma | |
datastore.databases.deleteTagBinding |
Veritabanı için etiket bağlamayı silme | |
datastore.databases.listTagBindings |
Bir veritabanı için tüm etiket bağlamaları listeleme | |
datastore.databases.listEffectiveTagBindings |
Bir veritabanı için geçerli etiket bağlamaları listeleme | |
| Varlık izni adı | Açıklama | |
datastore.entities.create |
Doküman oluşturun. | |
datastore.entities.delete |
Belge silme | |
datastore.entities.get |
Bir dokümanı okuyun. | |
datastore.entities.list |
Bir projedeki dokümanların adlarını listeleme (Belge verilerine erişmek için datastore.entities.get gereklidir.) |
|
datastore.entities.update |
Doküman güncelleme | |
| Dizin izni adı | Açıklama | |
datastore.schemas.create |
Dizin oluşturun. | |
datastore.schemas.delete |
Dizini silme | |
datastore.schemas.get |
Bir dizindeki meta verileri okuma | |
datastore.schemas.list |
Bir projedeki dizinleri listeler. | |
datastore.schemas.update |
Dizini güncelleme | |
| İşlem izni adı | Açıklama | |
datastore.operations.cancel |
Uzun süreli bir işlemi iptal etme | |
datastore.operations.delete |
Uzun süreli bir işlemi siler. | |
datastore.operations.get |
Uzun süreli bir işlemin en son durumunu bildirir. | |
datastore.operations.list |
Uzun süreli işlemleri listeleme | |
| Proje izni adı | Açıklama | |
resourcemanager.projects.get |
Projedeki kaynaklara göz atın. | |
resourcemanager.projects.list |
Sahibi olduğunuz projeleri listeleme | |
| Konum izni adı | Açıklama | |
datastore.locations.get |
Veritabanı konumuyla ilgili ayrıntıları alma Yeni bir veritabanı oluşturmak için gereklidir. | |
datastore.locations.list |
Kullanılabilir veritabanı konumlarını listeleme Yeni bir veritabanı oluşturmak için gereklidir. | |
| Key Visualizer izin adı | Açıklama | |
datastore.keyVisualizerScans.get |
Key Visualizer taramaları hakkında ayrıntılı bilgi edinin. | |
datastore.keyVisualizerScans.list |
Kullanılabilir Key Visualizer taramalarını listeleme | |
| Yedekleme programı izin adı | Açıklama | |
datastore.backupSchedules.get |
Yedekleme programı hakkında ayrıntılı bilgi edinme | |
datastore.backupSchedules.list |
Mevcut yedekleme programlarını listeleme | |
datastore.backupSchedules.create |
Yedekleme programı oluşturun. | |
datastore.backupSchedules.update |
Yedekleme programını güncelleme | |
datastore.backupSchedules.delete |
Yedekleme programını silme | |
| Yedekleme izni adı | Açıklama | |
datastore.backups.get |
Yedeklemeyle ilgili ayrıntıları öğrenme | |
datastore.backups.list |
Kullanılabilir yedekleri listeleme | |
datastore.backups.delete |
Yedek silme | |
datastore.backups.restoreDatabase |
Veritabanını yedekten geri yükleme | |
| Analiz izni adı | Açıklama | |
datastore.insights.get |
Bir kaynağın analizlerini alma |
Rol değişikliği gecikmesi
Cloud Firestore, IAM izinlerini 5 dakika boyunca önbelleğe alır. Bu nedenle, rol değişikliğinin geçerlilik kazanması 5 dakikayı bulabilir.
Cloud Firestore IAM'yi yönetme
Google Cloud Console, IAM API veya gcloud komut satırı aracını kullanarak IAM politikalarını alabilir ve ayarlayabilirsiniz. Ayrıntılar için Proje üyelerine erişim izni verme, erişim iznini değiştirme ve iptal etme başlıklı makaleyi inceleyin.
Koşullu erişim izinlerini yapılandırma
Koşullu erişim denetimi tanımlamak ve uygulamak için IAM koşullarını kullanabilirsiniz.
Örneğin, aşağıdaki koşul, belirli bir tarihe kadar bir alt öğeye datastore.user rolünü atar:
{
"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')"
}
}
Geçici erişim için IAM Condition'larını nasıl tanımlayacağınızı öğrenmek istiyorsanız Geçici erişimi yapılandırma başlıklı makaleyi inceleyin.
Bir veya daha fazla veritabanına erişim için IAM Koşulları'nı nasıl yapılandıracağınızı öğrenmek istiyorsanız Veritabanı erişim koşullarını yapılandırma başlıklı makaleyi inceleyin.
IAM'ye güvenlik kuralı bağımlılığı
Mobil/web istemcileri için Cloud Firestore Security Rules, aşağıdaki hizmet hesabına ve IAM bağlamasına bağlıdır:
| Hizmet hesabı | IAM rolü |
|---|---|
service-project_number@firebase-rules.iam.gserviceaccount.com |
roles/firebaserules.system |
Firebase, bu hizmet hesabını sizin için otomatik olarak ayarlar. firebaserules.system rolünü bu hizmet hesabından kaldırırsanız güvenlik kurallarınız tüm istekleri reddeder. Bu IAM bağlamasını geri yüklemek için aşağıdaki gcloud CLI komutunu kullanın:
gcloud projects add-iam-policy-binding project_id \ --member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \ --role=roles/firebaserules.system
project_id ve project_number değerlerinizi belirlemek için Projeleri tanımlama başlıklı makaleyi inceleyin.
firebaserules.system rolü varsayılan olarak konsolda gizlendiğinden
Google Cloud konsolu yerine Google Cloud CLI aracını kullanın.
Sırada ne var?
- IAM hakkında daha fazla bilgi edinin.
- IAM rolleri verme
- Kimlik doğrulama hakkında bilgi edinin.