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.
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.
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 yerinestorage.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
vefirebasenotifications.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
|
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 |