Uzantı için uygun erişimi ayarlama

Bir uzantının belirtilen işlemlerini 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 Realtime Database rolüne sahip olması gerekir (özellikle firebasedatabase.admin) tıklayın.

    • Uzantınız yalnızca bir sunucudan tetiklenen bir etkinlikten dinliyorsa: ürün ürününüzle ilişkilendirilmiş bir role ihtiyacınız yoktur bahsedeceğim.

      Örneğin, uzantınız Realtime Database öğesine yazma işleminden sonra tetikleniyorsa örnek (ancak veritabanına hiçbir şey yazmazsa) uzantısı için 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. Bazı ürünler, gerçekleştirilen işleme veya işlem grubuna bağlı olarak farklı roller sunar.

    Ö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şturabilir ancak bu rol, uzantısı kullanabilirsiniz. Uzantı için bu ek işlemleri gerçekleştirme izni vermek istiyorsanız bunun yerine storage.objectAdmin rolünü atamanız gerekir.

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.

Belirli bir Firebase Realtime Database yolunu dinleyen bir uzantı örneğini aşağıda bulabilirsiniz. Uzantı tetiklendiğinde bir kullanıcı hesabı e-postasını günceller (Firebase Authentication ile etkileşim) ve bildirim gönderir (Firebase Cloud Messaging ile etkileşim). 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ğundan, uzantısı, bu ürünlere erişmek için roller gerektirir (firebaseauth.admin ve firebasenotifications.admin) seçebilirsiniz.
# 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, uzantının hizmet hesabına rol atamak için aşağıdaki alanları kullanın:

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 alanı paketlerini (projects/{project_id}/buckets/{bucket_id}) destekler.

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) dokunun.

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 Testing firebaseabt.admin
firebaseabt.viewer
Firebase Cloud Messaging firebasenotifications.admin
firebasebildirimleri.viewer
Firebase Crashlytics firebasecrashlytics.admin
firebasecrashlytics.viewer
Firebase Hosting firebasehosting.admin
firebasehosting.viewer
Firebase In-App Messaging 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 edinmek için Google Cloud belgelerine göz atın.

Uzantınız şunlarla etkileşimde bulunursa: Bu 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.reader
bigtable.user
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 file.editor
file.viewer
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 notebooks.admin
notebooks.viewer
Pub/Sub pubsub.editor
pubsub.yayıncı
pubsub.subscriber
pubsub.viewer
Memorystore Redis redis.editor
redis.viewer
Cloud Run run.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
Cloud Transcoder 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