為了讓擴充功能執行指定動作,Firebase 會授予每個執行個體 的已安裝擴充功能透過 「服務帳戶」。
什麼是服務帳戶?
服務帳戶 為特殊的 Google 使用者帳戶,代表非真人使用者 可以對 Google 服務進行授權的 API 呼叫
安裝擴充功能時,Firebase 會建立一個服務帳戶, 設定憑證每個安裝的擴充功能執行個體都有專屬的執行個體 新建立的服務帳戶如果解除安裝擴充功能執行個體,Firebase 會刪除 服務的服務帳戶
為擴充功能建立的服務帳戶格式如下:
ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase 會藉由指派角色,限制擴充功能存取專案及其資料
特定角色 (權限組合)
新增至擴充功能的服務帳戶建立擴充功能時
決定擴充功能需要哪些角色才能執行
角色,以及擴充功能在extension.yaml
中需要這些角色的原因
檔案 (請參閱本頁底部的範例)。
決定擴充功能需要哪些角色
建立擴充功能時,您可以決定擴充功能 則必須正常運作。
在安裝期間,Firebase CLI 會提示使用者接受 授予每個角色的權限如果您的擴充功能要求的角色超過要求 使用者安裝該應用程式的可能性就會降低
判斷擴充功能是否與產品互動:
如果你的擴充功能與產品互動,你必須 就能存取擴充功能
舉例來說,如果你的擴充功能會將資料寫入即時資料庫執行個體, 你的擴充功能就需要有即時資料庫角色
firebasedatabase.admin
).如果您的擴充功能只是監聽觸發事件, 產品,則不需要擴充功能相關聯的角色 或利用該產品進行交流
舉例來說,假設擴充功能在寫入即時資料庫時「觸發」 執行個體 (但不會將任何內容寫入資料庫),然後 擴充功能「不需要」即時資料庫角色。
決定額外資訊與哪些產品互動後, 請決定該次互動需要什麼角色。只有部分通知 視行動或動作組合而定 執行任務
舉例來說,假設您的擴充功能與 Cloud Storage 互動 Cloud Storage 也提供目錄同步處理功能 方便您同步處理 VM 目錄與值區
storage.objectCreator
角色可讓擴充功能 在 Cloud Storage 值區中「建立」物件,但該角色不允許 檢視、刪除或覆寫物件。如何啟用擴充功能 就必須指派 請改為使用「storage.objectAdmin
」角色。
請參閱本頁底部的章節 支援的角色:您可以指派擴充功能服務 讓他們使用服務帳戶如要瞭解每個角色的說明和授予的權限,請造訪 Firebase 說明文件或 Google Cloud 說明文件。 您也可以在 Google Cloud 控制台的 身分與存取權管理與管理控制台。
如何為擴充功能指派角色
在「roles
」區段中列出擴充功能所需的 IAM 角色
。extension.yaml
下方的例子是監聽指定 Firebase 即時資料庫路徑。觸發時,擴充功能會更新使用者帳戶 電子郵件 (與 Firebase 驗證功能互動),並傳送通知 (互動) Firebase 雲端通訊)。請留意以下事項:
- 即使擴充功能會從即時資料庫事件「觸發」,
「
firebasedatabase.admin
」角色未列在清單中 (聆聽不會視為 interaction)。 - 由於這個擴充功能與「驗證」和「雲端通訊」互動,
擴充功能需要角色,才能存取這些產品 (
firebaseauth.admin
和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
檔案中,使用下列欄位將角色指派給
的服務帳戶:
欄位 | 類型 | 說明 |
---|---|---|
role (必填) |
字串 | 所需 IAM 角色的名稱 能使用 |
reason (必填) |
字串 |
簡短說明擴充功能需要存取權的原因 由角色授予 請務必提供足夠詳細資訊,方便使用者瞭解 擴充功能會使用這個角色 |
resource (選答) |
字串 |
應將這個角色新增至哪項資源的 IAM 政策。省略時
預設值為
支援的值為 |
縮小角色範圍
擴充功能應遵循最低權限原則,且僅可要求
不必為所需資源提供存取權
您可以使用 role.resource
欄位限制擴充功能的存取權範圍。
舉例來說,如果擴充功能需要將物件寫入 Cloud Storage 值區,
您可以使用下列角色:
roles:
- role: storage.objectCreator
reason: Needed in order to write
resource: projects/${PROJECT_ID}/buckets/${STORAGE_BUCKET}
這樣一來,擴充功能就只會存取所需的值區。 而非同一項專案中的其他使用者
這個欄位支援專案 (projects/{project_id}
),以及
Storage 值區 (projects/{project_id}/buckets/{bucket_id}
)。
支援的擴充功能角色
下表列出與 Firebase 互動時支援的 IAM 角色 很少直接解答該如何打造產品這個資料表中列出的多數角色都屬於 Firebase 產品層級角色 但有些是由 Google Cloud 直接代管 Cloud Firestore Cloud Storage)。
Firebase 產品
如果你的擴充功能與... | 指派下列其中一個角色... |
---|---|
Cloud Firestore |
datastore.importExportAdmin datastore.indexAdmin datastore.owner datastore.user datastore.viewer |
Cloud Storage for Firebase |
storage.admin storage.objectAdmin storage.objectCreator storage.objectViewer |
Firebase 應用程式發布 |
firebaseappdistro.admin firebaseappdistro.viewer |
Firebase 驗證 |
firebaseauth.admin firebaseauth.viewer |
Firebase A/B 測試 |
firebaseabt.admin firebaseabt.viewer |
Firebase 雲端通訊 |
firebasenotifications.admin firebasenotifications.viewer |
Firebase Crashlytics |
firebasecrashlytics.admin firebasecrashlytics.viewer |
Firebase 託管 |
firebasehosting.admin firebasehosting.viewer |
Firebase 應用程式內通訊 |
firebaseinappmessaging.admin firebaseinappmessaging.viewer |
Firebase ML |
firebaseml.admin firebaseml.viewer |
Firebase Performance Monitoring |
firebaseperformance.viewer firebaseperformance.Reader firebaseperformance.writer |
Firebase 即時資料庫 |
firebasedatabase.admin firebasedatabase.viewer |
安全性規則 |
firebaserules.viewer firebaserules.developer firebaserules.deployer |
Google Analytics |
firebaseanalytics.admin firebaseanalytics.viewer |
Google Cloud 產品
如要瞭解這些角色,請參閱 Google Cloud 說明文件。
如果你的擴充功能與... | 指派下列其中一個角色... |
---|---|
動作 |
actions.管理 actions.Viewer |
Apigee |
apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer apigee.apiCreator apigee.deployer apigee.developerAdmin apigee.readOnlyAdmin apigee.syncrManager |
App Engine |
appengine.appAdmin appengine.appViewer appengine.codeViewer appengine.deployer appengine.serviceAdmin |
AutoML |
automl.editor automl.predictor automl.viewer |
BigQuery |
bigquery.connectionAdmin bigquery.connectionUser bigquery.dataEditor bigquery.dataOwner bigquery.dataViewer bigquery.jobUser bigquery.metadataViewer bigquery.readSession 使用者 bigquery.user |
Cloud Bigtable |
bigtable.Reader bigtable.user bigtable.viewer |
計費功能 | billing.viewer |
Hangouts 即時通訊 |
Chat.owner Chat.讀取工具 |
雲端資產 |
cloudasset.owner cloudasset.viewer |
Cloud Data Fusion |
datafusion.admin datafusion.viewer |
Cloud Debugger |
clouddebugger.agent clouddebugger.user |
Cloud Functions |
cloudfunctions.invoker cloudfunctions.viewer |
Cloud IAP |
iap.admin iap.httpsResourceAccessor iap.settingsAdmin iap.tunnelResourceAccessor |
Cloud IoT |
cloudiot.deviceController cloudiot.editor cloudiot.provisioner 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 |
Dialogflow.admin Dialogflow.client Dialogflow.Reader |
Cloud Data Loss Prevention |
dlp.Reader dlp.user |
Error Reporting |
errorreporting.user errorreporting.viewer errorreporting.writer |
Eventarc |
eventarc.publisher eventarc.eventReceiver |
Cloud Filestore |
file.editor file.viewer |
記錄 |
Logging.configWriter Logging.logWriter Logging.privateLogViewer Logging.viewer |
Machine Learning Engine |
ml.developer ml.jobOwner ml.modelOwner ml.modelUser ml.operationOwner ml.viewer |
監控 |
Monitoring.editor Monitoring.metricWriter Monitoring.viewer |
AI Notebooks |
Notebook.admin Notebook.viewer |
Pub/Sub |
pubsub.editor pubsub.publisher pubsub.subscriber pubsub.viewer |
Memorystore Redis |
redis.editor redis.viewer |
Cloud Run | run.invoker |
來源 |
source.Reader source.writer |
Cloud Spanner |
spanner.databaseAdmin spanner.databaseReader spanner.databaseUser spanner.viewer |
服務使用情形 | serviceusage.apiKeysMetadataViewer |
Cloud Storage 移轉服務 |
storagetransfer.user storagetransfer.viewer |
Cloud 轉碼器 |
Transcoder.admin Transr.viewer |
Vertex AI | aiplatform.user |
其他 |
Identitytoolkit.admin Identitytoolkit.viewer |