Để tiện ích thực hiện các hành động đã chỉ định, Firebase sẽ cấp cho từng thực thể quyền truy cập vào dự án và dữ liệu của dự án thông qua một tiện ích đã cài đặt bị giới hạn quyền truy cập vào dự án tài khoản dịch vụ.
Tài khoản dịch vụ là gì?
Tài khoản dịch vụ là một loại đặc biệt của tài khoản người dùng Google. Mã này đại diện cho một người dùng không phải là con người có thể thực hiện lệnh gọi API được uỷ quyền đến các dịch vụ của Google.
Trong quá trình cài đặt tiện ích, Firebase sẽ tạo một tài khoản dịch vụ cho trong dự án. Mỗi bản sao đã cài đặt của một tiện ích đều có một tiện ích riêng tài khoản dịch vụ của bạn. Nếu bạn gỡ cài đặt bản sao tiện ích, Firebase sẽ xóa tài khoản dịch vụ của tiện ích.
Tài khoản dịch vụ được tạo cho phần mở rộng có định dạng như sau:
ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase giới hạn quyền truy cập của tiện ích vào một dự án và dữ liệu của dự án bằng cách chỉ định
các vai trò (gói quyền) cụ thể
với tài khoản dịch vụ của tiện ích. Khi tạo một tiện ích, bạn
xác định vai trò mà tiện ích của bạn yêu cầu để hoạt động, sau đó bạn liệt kê các vai trò này
các vai trò và lý do tiện ích cần những vai trò này trong extension.yaml
(xem ví dụ ở cuối trang này).
Xác định vai trò mà tiện ích của bạn yêu cầu
Khi tạo tiện ích, bạn xác định cấp truy cập của người dùng tiện ích yêu cầu để hoạt động.
Trong quá trình cài đặt, Firebase CLI sẽ nhắc người dùng chấp nhận cấp truy cập được cấp theo từng vai trò. Nếu tiện ích của bạn yêu cầu nhiều vai trò hơn nhu cầu thực sự thì người dùng có thể sẽ ít cài đặt ứng dụng hơn.
Xác định xem tiện ích của bạn có tương tác với một sản phẩm hay không:
Nếu tiện ích của bạn tương tác với một sản phẩm, thì bạn cần cung cấp quyền truy cập tiện ích của bạn vào sản phẩm đó.
Ví dụ: nếu tiện ích của bạn ghi dữ liệu vào một phiên bản Cơ sở dữ liệu theo thời gian thực, thì tiện ích của bạn cần có vai trò Cơ sở dữ liệu theo thời gian thực (cụ thể là
firebasedatabase.admin
).Nếu tiện ích của bạn chỉ nghe một sự kiện kích hoạt từ một sản phẩm, thì tiện ích của bạn không cần liên kết vai trò liên quan đến sản phẩm đó.
Ví dụ: nếu tiện ích của bạn kích hoạt khi ghi vào Cơ sở dữ liệu theo thời gian thực thực thể (nhưng không ghi bất kỳ gì vào cơ sở dữ liệu), thì thuộc tính tiện ích không cần vai trò Cơ sở dữ liệu theo thời gian thực.
Sau khi xác định được những sản phẩm mà tiện ích của bạn tương tác, bạn cần quyết định vai trò cần thiết cho tương tác cụ thể đó. Hơi nhiều các sản phẩm có vai trò khác nhau tuỳ thuộc vào hành động hoặc nhóm hành động thực hiện.
Ví dụ: giả sử tiện ích của bạn tương tác với Cloud Storage bộ chứa. Vai trò
storage.objectCreator
sẽ cho phép tiện ích tạo một đối tượng trong bộ chứa Cloud Storage, nhưng vai trò đó sẽ không cho phép tiện ích mở rộng để xem, xoá hoặc ghi đè đối tượng. Để bật tiện ích thực hiện các hành động bổ sung đó, bạn cần chỉ định Thay vào đó, vai tròstorage.objectAdmin
.
Tham khảo phần ở cuối trang này để xem tất cả vai trò được hỗ trợ mà bạn có thể chỉ định dịch vụ cho tiện ích của mình tài khoản. Để tìm hiểu về nội dung mô tả và quyền được cấp của từng vai trò, hãy truy cập vào tài liệu Firebase hoặc Tài liệu của Google Cloud. Bạn cũng có thể tra cứu vai trò trong bảng điều khiển Google Cloud IAM và Bảng điều khiển quản trị.
Cách chỉ định vai trò cho một tiện ích
Liệt kê các vai trò IAM cần thiết để tiện ích của bạn hoạt động trong phần roles
trong số tệp extension.yaml
của bạn.
Dưới đây là ví dụ về một tiện ích lắng nghe lệnh gọi Đường dẫn đến Cơ sở dữ liệu theo thời gian thực của Firebase. Khi được kích hoạt, tiện ích sẽ cập nhật tài khoản người dùng email (tương tác với Xác thực Firebase) và gửi thông báo (tương tác với Giải pháp gửi thông báo qua đám mây của Firebase). Hãy lưu ý những điều sau:
- Mặc dù tiện ích kích hoạt từ sự kiện Cơ sở dữ liệu theo thời gian thực,
Vai trò
firebasedatabase.admin
không có trong danh sách (việc nghe không được coi là một tương tác). - Do tiện ích này tương tác với tính năng Xác thực và Gửi thông báo qua đám mây, nên
tiện ích yêu cầu vai trò để truy cập vào các sản phẩm đó (
firebaseauth.admin
và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
...
Trong tệp extension.yaml
, hãy sử dụng các trường sau để chỉ định vai trò cho một
tài khoản dịch vụ của tiện ích:
Trường | Loại | Nội dung mô tả |
---|---|---|
role (bắt buộc) |
chuỗi | Tên của vai trò quản lý danh tính và quyền truy cập (IAM) mà tiện ích để hoạt động |
reason (bắt buộc) |
chuỗi |
Nội dung mô tả ngắn gọn về lý do tiện ích cần quyền truy cập được cấp theo vai trò Hãy nhớ cung cấp đủ chi tiết để người dùng có thể hiểu được cách tiện ích sẽ sử dụng vai trò này. |
resource (không bắt buộc) |
chuỗi |
Vai trò này nên được thêm vào chính sách IAM của tài nguyên nào. Nếu bị bỏ qua,
mặc định là
Giá trị được hỗ trợ là |
Giảm phạm vi của vai trò
Tiện ích phải tuân theo nguyên tắc về đặc quyền tối thiểu và chỉ yêu cầu
quyền truy cập vào các tài nguyên mà họ cần.
Bạn có thể giới hạn phạm vi truy cập của một tiện ích bằng cách sử dụng trường role.resource
.
Ví dụ: nếu tiện ích của bạn cần ghi đối tượng vào một bộ chứa Cloud Storage,
bạn có thể dùng vai trò sau:
roles:
- role: storage.objectCreator
reason: Needed in order to write
resource: projects/${PROJECT_ID}/buckets/${STORAGE_BUCKET}
Thao tác này cho phép tiện ích chỉ truy cập vào bộ chứa mà tiện ích cần. và không phải ai khác trong cùng một dự án.
Trường này hỗ trợ các dự án (projects/{project_id}
) và
Bộ chứa lưu trữ (projects/{project_id}/buckets/{bucket_id}
).
Các vai trò được hỗ trợ cho tiện ích
Bảng sau đây liệt kê các vai trò IAM được hỗ trợ khi tương tác với Firebase của Google dành cho doanh nghiệp. Hầu hết các vai trò trong bảng này là Các vai trò ở cấp sản phẩm trong Firebase, nhưng một số vị trí do Google Cloud quản lý trực tiếp (cụ thể là Cloud Firestore và Bộ nhớ trên đám mây).
Các sản phẩm của Firebase
Nếu tiện ích của bạn tương tác với... | Chỉ định một trong các vai trò sau... |
---|---|
Cloud Firestore |
datastore.importExportAdmin datastore.indexAdmin datastore.owner datastore.user datastore.viewer |
Cloud Storage cho Firebase |
bộ nhớ.quản trị viên Storage.objectAdmin Storage.objectCreator Storage.objectViewer |
Phân phối ứng dụng Firebase |
firebaseappdistro.admin Firebaseappdistro.viewer |
Xác thực Firebase |
firebaseauth.admin Firebaseauth.viewer |
Thử nghiệm A/B trong Firebase |
firebaseabt.admin Firebase.viewer |
Giải pháp gửi thông báo qua đám mây của Firebase |
firebase thông báo.admin firebase thông báo.viewer |
Firebase Crashlytics |
firebasecrashlytics.admin firebasecrashlytics.viewer |
Lưu trữ Firebase |
firebasehosting.admin firebasehosting.viewer |
Tính năng gửi thông báo trong ứng dụng của Firebase |
firebaseinappMessaging.admin firebaseinappmessaging.viewer |
Firebase ML |
firebaseml.admin firebaseml.viewer |
Giám sát hiệu suất Firebase |
firebaseperformance.viewer firebaseperformance.reader firebaseperformance.writer |
Cơ sở dữ liệu theo thời gian thực của Firebase |
firebasedatabase.admin firebasedatabase.viewer |
Quy tắc bảo mật |
firebaserules.viewer firebaserules.developer firebaserules.Deployer |
Google Analytics |
firebaseanalytics.admin firebaseanalytics.viewer |
Các sản phẩm của Google Cloud
Tìm hiểu về các vai trò này trong Tài liệu của Google Cloud.
Nếu tiện ích của bạn tương tác với... | Chỉ định một trong các vai trò sau... |
---|---|
Hành động |
actions.Quản trị actions.Người xem |
Apigee |
apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer Người tạo apigee.api apigee.deployer apigee.developerAdmin apigee.readOnlyAdmin apigee.synchronizerManager |
App Engine |
appengine.appAdmin appengine.appViewer appengine.codeViewer appengine.implementationer (trình triển khai) của ứng dụng appengine.serviceAdmin |
AutoML |
automl.editor automl.sản phẩm dự đoán automl.viewer |
BigQuery |
bigquery.connectionQuản trị bigquery.connectionUser bigquery.dataEditor bigquery.dataOwner bigquery.dataViewer bigquery.jobUser bigquery.metadataViewer bigquery.readSessionUser bigquery.user |
Cloud Bigtable |
Bigtable.reader Bigtable.user Bigtable.viewer |
Thanh toán | billing.viewer |
Trò chuyện trên Hangout |
chat.owner chat.reader |
Tài sản trên đám mây |
Cloudasset.owner Cloudasset.viewer |
Cloud Data Fusion |
datafusion.admin datafusion.viewer |
Trình gỡ lỗi đám mây |
Clouddebugger.agent Clouddebugger.user |
Cloud Functions |
Cloudfunctions.gọir Cloudfunctions.viewer |
IAP trên đám mây |
iap.admin iap.httpsResourceAccessor iap.settingsQuản trị viên iap.tunnelResourceAccessor |
Cloud IoT |
Cloudiot.deviceController Cloudiot.editor Cloudiot.Cấp phép Cloudiot.viewer |
Trình phân tích tài nguyên Stackdriver |
Cloudprofiler.agent Cloudprofiler.user |
Cloud Scheduler |
Cloudscheduler.admin Cloudscheduler.jobRunner Cloudscheduler.viewer |
Trình quét bảo mật trên Cloud |
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 hộp thoại.client hộp thoại.trình đọc |
Cloud Data Loss Prevention |
dlp.reader dlp.người dùng |
Error Reporting |
errorreporting.user errorreporting.viewer errorreporting.writer |
Eventarc |
eventarc.publisher eventarc.eventReceiver |
Cloud Filestore |
file.editor file.viewer |
Ghi nhật ký |
log.configWriter log.logWriter log.privateLogViewer log.viewer |
Công cụ học máy |
ml.developer ml.jobOwner ml.modelOwner người dùng ml.modelUser ml.operationOwner ml.viewer |
Giám sát |
Monitor.editor Monitor.metricWriter Giám sát.viewer |
Sổ tay AI |
Notebook.admin Notebook.viewer |
Pub/Sub |
pubsub.editor pubsub.publisher pubsub.subscriber pubsub.viewer |
Memorystore Redis |
redis.editor redis.viewer |
Cloud Run | run.Callback |
Nguồn |
source.reader source.writer |
Cloud Spanner |
spanner.databaseAdmin spanner.databaseReader spanner.databaseUser spanner.viewer |
Service Usage | serviceusage.apiKeysMetadataViewer |
Dịch vụ chuyển bộ nhớ trên đám mây |
Storagetransfer.user Storagetransfer.viewer |
Bộ chuyển mã đám mây |
chuyển mã.admin chuyển mã.viewer |
Vertex AI | aiplatform.user |
Khác |
Identity Toolkit.admin Identity Toolkit.viewer |