Uzantı için uygun erişimi ayarlama

Bir uzantının belirtilen işlemleri yapması için Firebase her bir örneği verir projenin verilerine ve verilerine sınırlı erişimini hizmet hesabı oluşturun.

Hizmet hesabı nedir?

Hizmet hesabı özel bir Google kullanıcı hesabı türüdür. İnsan olmayan bir kullanıcıyı temsil eder Google hizmetlerine yetkili API çağrıları yapabilir.

Bir uzantının yüklenmesi sırasında Firebase, eklemesi gerekir. Bir uzantının yüklenen her örneği kendine ait hizmet hesabı. Bir uzantı örneği kaldırılırsa Firebase, uzantının hizmet hesabına ekleyin.

Uzantılar için oluşturulan hizmet hesapları şu biçimdedir:

ext-extension-instance-id@project-id.iam.gserviceaccount.com

Firebase, belirli roller (izin grupları) uzantının hizmet hesabına ekleyin. Bir uzantı oluşturduğunuzda uzantınızın çalışması için gereken rolleri belirleyin, ardından bu rolleri rolleri ve uzantınızın extension.yaml içinde bu rollere ihtiyaç duymasının nedeni (bu sayfanın alt kısmındaki örneğe bakın).

Uzantınızın hangi rolleri gerektirdiğini belirleyin

Uzantınızı oluştururken, web'de gördüğünüz erişim düzeyini eklentisinin çalışması gerekir.

Yükleme sırasında Firebase CLI, kullanıcıdan Her rol tarafından verilen erişim düzeyi. Uzantınız bundan daha fazla rol istiyorsa ihtiyaç duyulmazsa kullanıcıların uygulamayı yükleme ihtimali daha düşük olabilir.

  1. Uzantınızın bir ürünle etkileşime geçip geçmediğini belirleyin:

    • Uzantınız bir ürünle etkileşim kuruyorsa veya uzantınızın o ürüne erişimini sağlayın.

      Örneğin, uzantınız bir Realtime Database örneğine veri yazıyorsa uzantınızın bir Realtime Database rolüne (özellikle firebasedatabase.admin).

    • Uzantınız yalnızca bir sunucudan tetikleyici bir etkinlik dinlediğinde ürün ürününüzle ilişkilendirilmiş bir role ihtiyacınız yoktur bahsedeceğim.

      Örneğin, uzantınız bir Realtime Database'e yazma işlemi sırasında tetikleniyorsa örnek (ancak veritabanına hiçbir şey yazmazsa) uzantısı için bir Realtime Database rolüne gerek yoktur.

  2. Uzantınızın hangi ürünlerle etkileşime girdiğini belirledikten sonra hangi rolün gerekli olduğuna karar vermeniz gerekir. Biraz Ürünler, eyleme veya eylem kümesine göre farklı roller sunar gerçekleştirildi.

    Örneğin, uzantınızın bir Cloud Storage ile etkileşimde bulunduğunu varsayalım paket. storage.objectCreator rolü, uzantının şunları yapmasına izin verir: Cloud Storage paketinde bir nesne oluşturacak ancak bu rol, uzantısı kullanabilirsiniz. Uzantıyı etkinleştirmek için bu ek işlemleri gerçekleştirdiğinizde, izlemek istediğiniz Bunun yerine storage.objectAdmin rolü var.

Bu sayfanın alt kısmındaki bölüme bakarak Uzantınızın hizmetine atayabileceğiniz desteklenen roller hesap. Her bir rolün açıklaması ve verilen izinler hakkında bilgi edinmek için şu sayfayı ziyaret edin: Firebase belgelerini veya Google Cloud belgeleri. Ayrıca, Google Cloud konsolunun IAM ve Yönetici paneline gidin.

Bir uzantıya rol atama

Uzantınızın roles bölümünde çalışması için gereken IAM rollerini listeleyin extension.yaml dosyanız.

Aşağıda, belirli bir Firebase Realtime Database yolu. Tetiklendiğinde uzantı bir kullanıcı hesabını günceller e-posta gönderir (Firebase Authentication ile etkileşim) ve bir bildirim gönderir (etkileşimlilik) . Aşağıdakilere dikkat edin:

  • Uzantı bir Realtime Database etkinliğinden tetiklese bile firebasedatabase.admin rolü listelenmiyor (dinleme, etkileşim).
  • Uzantı, Authentication ve Cloud Messaging ile etkileşim kurduğu için uzantısı, bu ürünlere erişmek için roller gerektirir (firebaseauth.admin ve sırasıyla firebasenotifications.admin).
# extension.yaml
...

# Roles assigned to the extension's service account by Firebase during installation
roles:
  - role: firebaseauth.admin
    reason: Required to update the email address of the user account

  - role: firebasenotifications.admin
    reason: Required to send a notification that the email address has been updated

...

extension.yaml dosyanızda, bir kullanıcıya rol atamak için aşağıdaki alanları kullanın: uzantının hizmet hesabına ekleyin:

Alan Tür Açıklama

role (zorunlu)
dize Proje yöneticisinin ihtiyaç duyduğu IAM rolünün çalışacak ek süre

reason (zorunlu)
dize

Uzantının neden erişime ihtiyaç duyduğunun kısa açıklaması rol tarafından verildi

Kullanıcıların uygulamanızı nasıl kullandıklarını anlayabilmesi için yeterli ayrıntı sağladığınızdan emin olun. rolü kullanır.


resource (isteğe bağlı)
dize

Bu rolün hangi kaynağın IAM politikasına eklenmesi gerektiği. Atlanırsa varsayılan olarak projects/${project_id} değerine ayarlanır.

projects/* ve projects/*/buckets/* değerleri desteklenir.

Rollerin kapsamını daraltma

Uzantılar, en az ayrıcalık ilkesini uygulamalı ve yalnızca istek göndermelidir. ihtiyaç duydukları kaynaklara erişim sağlayabilirler. role.resource alanını kullanarak uzantının erişim kapsamını sınırlandırabilirsiniz. Örneğin, uzantınızın bir Cloud Storage paketine nesne yazması gerekiyorsa aşağıdaki rolü kullanabilirsiniz:

roles:
  - role: storage.objectCreator
    reason: Needed in order to write
    resource: projects/${PROJECT_ID}/buckets/${STORAGE_BUCKET}

Bu işlem, uzantının yalnızca ihtiyaç duyduğu pakete erişmesini sağlar. aynı projede başkalarını da yönetmezler.

Bu alan, projeleri (projects/{project_id}) ve Depolama paketleri (projects/{project_id}/buckets/{bucket_id}).

Uzantılar için desteklenen roller

Aşağıdaki tabloda, Firebase ile etkileşim için desteklenen IAM rolleri listelenmiştir. ürünler. Bu tablodaki rollerin çoğu Ürün düzeyinde Firebase rolleri ancak bazıları doğrudan Google Cloud tarafından yönetilir (özellikle Cloud Firestore ve Cloud Storage).

Firebase ürünleri

Uzantınız şunlarla etkileşimde bulunursa: Şu rollerden birini atayın...
Cloud Firestore datastore.importExportAdmin
datastore.indexAdmin
datastore.sahip
datastore.user
datastore.görüntüleyici
Cloud Storage for Firebase depolama.yöneticisi
Storage.objectAdmin
Storage.objectCreator
Storage.objectViewer
Firebase App Distribution firebaseappdistro.admin
firebaseappdistro.viewer
Firebase Authentication firebaseauth.admin
firebaseauth.viewer
Firebase A/B Testi firebaseabt.admin
firebaseabt.viewer
Firebase Cloud Messaging firebasenotifications.admin
firebasebildirimleri.viewer
Firebase Crashlytics firebasecrashlytics.admin
firebasecrashlytics.viewer
Firebase Hosting firebasehosting.admin
firebasehosting.viewer
Firebase Uygulama İçi Mesajlaşma firebaseinappmessaging.admin
firebaseinappmessaging.viewer
Firebase ML firebaseml.admin
firebaseml.viewer
Firebase Performance Monitoring firebaseperformance.viewer
firebaseperformance.reader
firebaseperformans.yazarı
Firebase Realtime Database firebasedatabase.admin
firebasedatabase.viewer
Güvenlik kuralları firebaserules.viewer
firebaserules.developer
firebaserules.deployer
Google Analytics firebaseanalytics.admin
firebaseanalytics.viewer

Google Cloud ürünleri

Bu roller hakkında bilgi Google Cloud belgeleri.

Uzantınız şunlarla etkileşimde bulunursa: Şu rollerden birini atayın...
İşlemler actions.Yönetici
actions.Görüntüleyici
Apigee Apigee.analyticsAgent
Apigee.analyticsEditor
Apigee.analyticsViewer
Apigee.apiCreator
Apigee.deployer
Apigee.developerAdmin
Apigee.readOnlyAdmin
Apigee.synchronizerManager
App Engine appengine.appAdmin
appengine.appViewer
appengine.codeViewer
appengine.deployer
appengine.serviceAdmin
AutoML automl.editor
automl.predictor
automl.viewer
BigQuery bigquery.linkedAdmin
bigquery.linkedUser
bigquery.dataEditor
bigquery.dataSahip
bigquery.dataViewer
bigquery.jobUser
bigquery.metadataViewer
bigquery.readSessionUser
bigquery.user
Cloud Bigtable bigtable.okuyucu
büyüktablo.kullanıcı
bigtable.viewer
Faturalandırma billing.viewer
Hangout Sohbetleri chat.sahip
chat.okuyucu
Bulut Öğesi cloudasset.owner
cloudasset.viewer
Cloud Data Fusion datafusion.admin
datafusion.viewer
Cloud Debugger clouddebugger.agent
clouddebugger.user
Cloud Functions cloudfonksiyonlar.invoker
bulutfonksiyonları.görüntüleyici
Cloud IAP iap.admin
iap.httpsResourceAccessor
iap.settingsYöneticisi
iap.tunnelResourceAccessor
Cloud IoT cloudiot.deviceController
cloudiot.editor
cloudiot.sağlayıcı
cloudiot.viewer
Stackdriver Profiler cloudprofiler.agent
cloudprofiler.user
Cloud Scheduler cloudscheduler.admin
cloudscheduler.jobRunner
cloudscheduler.viewer
Cloud Security Scanner cloudsecurityscanner.editor
cloudsecurityscanner.runner
cloudsecurityscanner.viewer
Cloud SQL cloudsql.client
cloudsql.editor
cloudsql.viewer
Cloud Trace cloudtrace.admin
cloudtrace.agent
cloudtrace.user
Dataflow dataflow.developer
dataflow.viewer
dataflow.worker
Dialogflow contactflow.admin
contactflow.istemci
contactflow.okuyucu
Cloud Data Loss Prevention dlp.okuyucu
dlp.kullanıcı
Error Reporting errorreporting.user
errorreporting.viewer
errorreporting.writer
Eventarc eventarc.publisher
eventarc.eventReceiver
Cloud Filestore dosya.düzenleyici
dosya.görüntüleyici
Günlük Kaydı Logging.configWriter
Logging.logWriter
Logging.privateLogViewer
Logging.viewer
Machine Learning Engine ml.developer
ml.jobSahip
ml.modelSahip
ml.modelUser
ml.operationOwner
ml.görüntüleyici
İzleme Monitoring.editor
Monitoring.metricWriter
Monitoring.viewer
AI Not Defterleri not defterleri.yonetici
not defterleri.görüntüleyici
Pub/Sub pubsub.editor
pubsub.yayıncı
pubsub.subscriber
pubsub.viewer
Memorystore Redis redis.editor
redis.viewer
Cloud Run çalıştır.invoker
Kaynak kaynak.okuyucu
kaynak.yazar
Cloud Spanner spanner.databaseAdmin
spanner.databaseReader
spanner.databaseUser
spanner.viewer
Hizmet Kullanımı serviceusage.apiKeysMetadataViewer
Cloud Depolama Aktarım Hizmeti depolamaaktarma.kullanici
Storagetransfer.viewer
Bulut Dönüştürücü kod dönüştürücü.yonetici
kod dönüştürücü.görüntüleyici
Vertex AI aiplatform.user
Diğer Identity Toolkit.admin
Identity Toolkit.viewer