Firebase จะให้สิทธิ์แต่ละอินสแตนซ์เพื่อให้ส่วนขยายดำเนินการตามที่ระบุไว้ได้ ของส่วนขยายที่ติดตั้งเข้าถึงโปรเจ็กต์และข้อมูลของโปรเจ็กต์ผ่าน บัญชีบริการ
บัญชีบริการคืออะไร
บัญชีบริการ เป็นบัญชีผู้ใช้ Google ประเภทพิเศษ ผลการค้นหานี้แสดงถึงผู้ใช้ที่ไม่ใช่มนุษย์ ซึ่ง สามารถเรียก API ที่ได้รับอนุญาตไปยังบริการของ Google ได้
ระหว่างการติดตั้งส่วนขยาย Firebase จะสร้างบัญชีบริการสําหรับ ในโปรเจ็กต์ได้ ส่วนขยายที่ติดตั้งแต่ละรายการจะมีส่วนขยายของตัวเอง บัญชีบริการ หากถอนการติดตั้งอินสแตนซ์ของส่วนขยายแล้ว Firebase จะลบ บัญชีบริการของส่วนขยาย
บัญชีบริการที่สร้างขึ้นสำหรับส่วนขยายจะอยู่ในรูปแบบต่อไปนี้
ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase จะจำกัดการเข้าถึงโปรเจ็กต์และข้อมูลของส่วนขยายด้วยการกำหนด
บทบาทเฉพาะ (กลุ่มสิทธิ์)
กับบัญชีบริการของส่วนขยาย เมื่อคุณสร้างส่วนขยาย คุณจะ
กำหนดบทบาทที่ส่วนขยายของคุณกำหนดให้ต้องทำงาน จากนั้นแสดงรายการ
บทบาทและเหตุผลที่ส่วนขยายของคุณต้องใช้บทบาทเหล่านี้ในextension.yaml
ของคุณ
(ดูตัวอย่างที่ด้านล่างของหน้านี้)
กำหนดบทบาทที่ส่วนขยายของคุณต้องการ
เมื่อคุณสร้างส่วนขยาย คุณจะต้องกำหนดระดับการเข้าถึงที่ ส่วนขยายต้องใช้จึงจะทำงาน
ในระหว่างการติดตั้ง CLI ของ Firebase จะแสดงข้อความให้ผู้ใช้ยอมรับ ระดับการเข้าถึงที่แต่ละบทบาทมอบให้ หากส่วนขยายส่งคำขอบทบาทมากกว่า ผู้ใช้อาจมีแนวโน้มที่จะติดตั้งแอปดังกล่าวน้อยลง
พิจารณาว่าส่วนขยายโต้ตอบกับผลิตภัณฑ์หรือไม่ โดยทำดังนี้
หากส่วนขยายโต้ตอบกับผลิตภัณฑ์ คุณจะต้องให้ สิทธิ์เข้าถึงผลิตภัณฑ์นั้นของส่วนขยาย
ตัวอย่างเช่น หากส่วนขยายเขียนข้อมูลไปยังอินสแตนซ์ Realtime Database ส่วนขยายต้องมีบทบาท Realtime Database (โดยเฉพาะอย่างยิ่ง
firebasedatabase.admin
)หากส่วนขยายเพียงฟังเหตุการณ์ทริกเกอร์จาก ผลิตภัณฑ์ ส่วนขยายก็ไม่ต้องมีบทบาทที่เชื่อมโยง กับผลิตภัณฑ์นั้นๆ
ตัวอย่างเช่น หากส่วนขยายทริกเกอร์เมื่อเขียนไปยัง Realtime Database (แต่ไม่ได้เขียนสิ่งใดลงในฐานข้อมูล) ไฟล์ ส่วนขยายไม่ต้องมีบทบาทRealtime Database
หลังจากที่คุณกำหนดแล้วว่าส่วนขยายของคุณโต้ตอบด้วยผลิตภัณฑ์ใด คุณจะ ต้องตัดสินใจว่าต้องมีบทบาทใด ในการโต้ตอบที่เฉพาะเจาะจงนั้น ใช้บ้าง ผลิตภัณฑ์มีบทบาทต่างกันขึ้นอยู่กับการดำเนินการหรือชุดการดำเนินการ ที่ได้รับ
ตัวอย่างเช่น สมมติว่าส่วนขยายโต้ตอบกับ Cloud Storage บทบาท
storage.objectCreator
จะอนุญาตให้ส่วนขยาย สร้างออบเจ็กต์ในที่เก็บข้อมูล Cloud Storage แต่บทบาทดังกล่าวจะไม่อนุญาต เพื่อดู ลบ หรือเขียนทับออบเจ็กต์ วิธีเปิดใช้ส่วนขยายเพื่อ ดำเนินการเพิ่มเติมดังกล่าว คุณจะต้องกำหนดstorage.objectAdmin
บทบาทแทน
อ่านส่วนที่ด้านล่างของหน้านี้เพื่อดู บทบาทที่สนับสนุน ซึ่งคุณสามารถมอบหมายบริการของส่วนขยาย ของคุณได้ หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับคำอธิบายของแต่ละบทบาทและสิทธิ์ที่ได้รับ โปรดไปที่ เอกสารเกี่ยวกับ Firebase หรือ เอกสารประกอบของ Google Cloud คุณยังค้นหาบทบาทในคอนโซล Google Cloud ได้ด้วย IAM และ แผงการดูแลระบบ
วิธีกำหนดบทบาทให้กับส่วนขยาย
แสดงรายการบทบาท IAM ที่จำเป็นต่อการทำงานของส่วนขยายในส่วน roles
ของไฟล์ extension.yaml
นี่คือตัวอย่างของส่วนขยายที่ฟังคำสั่ง เส้นทาง Firebase Realtime Database เมื่อเรียกใช้ ส่วนขยายจะอัปเดตบัญชีผู้ใช้ อีเมล (การโต้ตอบกับ Firebase Authentication) และส่งการแจ้งเตือน (การโต้ตอบ) กับ Firebase Cloud Messaging) โปรดสังเกตสิ่งต่อไปนี้
- แม้ว่าส่วนขยายทริกเกอร์จากเหตุการณ์ Realtime Database แต่
บทบาท
firebasedatabase.admin
ไม่อยู่ในรายการ (การฟังไม่ถือว่าเป็น การโต้ตอบ) - เนื่องจากส่วนขยายโต้ตอบกับ Authentication และ Cloud Messaging
ส่วนขยายต้องมีบทบาทเพื่อเข้าถึงผลิตภัณฑ์เหล่านั้น (
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}
) และ
ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล (projects/{project_id}/buckets/{bucket_id}
)
บทบาทที่รองรับสำหรับส่วนขยาย
ตารางต่อไปนี้แสดงบทบาท IAM ที่รองรับสำหรับการโต้ตอบกับ Firebase Google อีกด้วย บทบาทส่วนใหญ่ในตารางนี้คือ บทบาทระดับผลิตภัณฑ์ 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 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 firebasenotifications.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 firebaseperformance.writer |
Firebase Realtime Database |
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.synsuchzerManager |
App Engine |
appengine.appAdmin appengine.appViewer appengine.codeViewer appengine.deployer appengine.serviceAdmin |
AutoML |
ตัวแก้ไขอัตโนมัติ automl.predictor automl.viewer |
BigQuery |
Bigquery.connectionAdmin Bigquery.connectionUser Bigquery.dataEditor Bigquery.dataOwner Bigquery.dataViewer Bigquery.jobUser Bigquery.metadataViewer Bigquery.readSessionUser Bigquery.user |
Cloud Bigtable |
Bigtable.reader Bigtable.user Bigtable.viewer |
การเรียกเก็บเงิน | billing.viewer |
Hangouts Chat |
chat.owner chat.reader |
Cloud Asset |
cloudasset.owner cloudasset.viewer |
Cloud Data Fusion |
datafusion.admin datafusion.viewer |
โปรแกรมแก้ไขข้อบกพร่องบนคลาวด์ |
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 ml.jobOwner ml.modelOwner ผู้ใช้ ml.model ml.operationOwner ML.viewer |
การตรวจสอบ |
การตรวจสอบเครื่องมือแก้ไข Monitoring.metricWriter Monitoring.viewer |
สมุดบันทึก AI |
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 |
transcoder.admin transcoder.viewer |
Vertex AI | aiplatform.user |
อื่นๆ |
Identity Toolkit.admin Identity Toolkit.viewer |