จัดการสิทธิ์เข้าถึงทรัพยากรด้วย Identity and Access Management (IAM) IAM ช่วยให้คุณมอบสิทธิ์เข้าถึงทรัพยากร Google Cloud ที่เฉพาะเจาะจงได้ละเอียดยิ่งขึ้น และป้องกันการเข้าถึงทรัพยากรอื่นๆ ที่ไม่พึงประสงค์ หน้านี้อธิบายสิทธิ์และบทบาท IAM สำหรับ Cloud Firestore อ่านคำอธิบายโดยละเอียดเกี่ยวกับ IAM ได้ในเอกสารประกอบของ IAM
IAM ช่วยให้คุณใช้หลักการให้สิทธิ์ขั้นต่ำที่สุดได้ คุณจึงให้สิทธิ์เข้าถึงทรัพยากรเฉพาะที่จำเป็นเท่านั้น
IAM ช่วยให้คุณควบคุมได้ว่าใคร (ผู้ใช้) มีสิทธิ์อะไร (บทบาท) สำหรับทรัพยากรใด โดยการตั้งค่านโยบาย IAM
นโยบาย IAM จะมอบบทบาทอย่างน้อย 1 บทบาทให้กับผู้ใช้ ซึ่งจะให้สิทธิ์บางอย่างแก่ผู้ใช้ ตัวอย่างเช่น คุณสามารถให้สิทธิ์บทบาท datastore.indexAdmin แก่ผู้ใช้ ซึ่งจะช่วยให้ผู้ใช้สร้าง แก้ไข ลบ แสดงรายการ หรือดูดัชนีได้
สิทธิ์และบทบาท
ส่วนนี้จะสรุปสิทธิ์และบทบาทที่ Cloud Firestore รองรับ
สิทธิ์ที่จำเป็นสำหรับเมธอด API
ตารางต่อไปนี้แสดงสิทธิ์ที่ผู้เรียกต้องมีเพื่อดำเนินการแต่ละอย่าง
| วิธีการ | สิทธิ์ที่จำเป็น | |
|---|---|---|
projects.databases.MongoDBCompatible |
||
ListDatabases |
datastore.databases.getMetadata |
|
ListIndexes |
datastore.schemas.list |
|
Find |
datastore.entities.getdatastore.entities.list |
|
Aggregate |
datastore.entities.getdatastore.entities.list |
|
GetMore |
สิทธิ์เดียวกันกับที่จำเป็นสำหรับการเรียกที่สร้างเคอร์เซอร์ |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.getdatastore.entities.list |
|
CommitTransaction |
datastore.databases.get |
|
AbortTransaction |
datastore.databases.get |
|
EndSessions |
datastore.databases.get |
|
KillCursors |
datastore.databases.get |
|
Insert |
datastore.entities.create |
|
Update |
datastore.entities.getdatastore.entities.listdatastore.entities.updatedatastore.entities.create (สำหรับการอัปเดตหรือแทรกเท่านั้น) |
|
FindAndModify |
datastore.entities.getdatastore.entities.listdatastore.entities.update (สำหรับการแทนที่หรืออัปเดตเท่านั้น)datastore.entities.create (สำหรับการอัปเดตหรือแทรกเท่านั้น)datastore.entities.delete (สำหรับการลบเท่านั้น) |
|
CreateCollection |
datastore.entities.create |
|
DropCollection |
datastore.schemas.delete |
|
projects.databases.indexes |
||
create |
datastore.schemas.create |
|
delete |
datastore.schemas.delete |
|
get |
datastore.schemas.get |
|
list |
datastore.schemas.list |
|
projects.databases |
||
create |
datastore.databases.create |
|
delete |
datastore.databases.delete |
|
get |
datastore.databases.getMetadata |
|
list |
datastore.databases.list |
|
patch |
datastore.databases.update |
|
| คืนค่า | datastore.backups.restoreDatabase |
|
clone |
datastore.databases.clone |
โคลนฐานข้อมูล
หากคำขอ
หากต้องการยืนยันว่าการเชื่อมโยงแท็กตั้งค่าสำเร็จหรือไม่โดยแสดงรายการการเชื่อมโยง คุณจะต้องมีสิทธิ์เพิ่มเติมต่อไปนี้
|
projects.locations |
||
get |
datastore.locations.get |
|
list |
datastore.locations.list |
|
projects.databases.backupschedules |
||
get |
datastore.backupSchedules.get |
|
list |
datastore.backupSchedules.list |
|
create |
datastore.backupSchedules.create |
|
update |
datastore.backupSchedules.update |
|
delete |
datastore.backupSchedules.delete |
|
projects.locations.backups |
||
get |
datastore.backups.get |
|
list |
datastore.backups.list |
|
delete |
datastore.backups.delete |
|
projects.databases.usercreds |
||
get |
datastore.userCreds.get |
|
list |
datastore.userCreds.list |
|
create |
datastore.userCreds.create |
|
enable |
datastore.userCreds.update |
|
disable |
datastore.userCreds.update |
|
resetPassword |
datastore.userCreds.update |
|
delete |
datastore.userCreds.delete |
|
บทบาทที่กำหนดไว้ล่วงหน้า
เมื่อใช้ IAM เมธอด API ทุกเมธอดใน Cloud Firestore กำหนดให้บัญชีที่ส่งคำขอ API ต้องมีสิทธิ์ที่เหมาะสมในการใช้ทรัพยากร สิทธิ์จะได้รับจากการตั้งค่านโยบายที่ให้บทบาทแก่ผู้ใช้ กลุ่ม หรือบัญชีบริการ นอกเหนือจากบทบาทพื้นฐานอย่างเจ้าของ ผู้แก้ไข และผู้ดูแล้ว คุณยังสามารถให้สิทธิ์บทบาท Cloud Firestore แก่ผู้ใช้ในโปรเจ็กต์ได้ด้วย
ตารางต่อไปนี้แสดงบทบาท IAM ของ Cloud Firestore คุณสามารถมอบหมายบทบาทหลายบทบาทให้กับผู้ใช้ กลุ่ม หรือบัญชีบริการได้
| บทบาท | สิทธิ์ | คำอธิบาย |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
สิทธิ์เข้าถึง Cloud Firestore อย่างเต็มรูปแบบ |
roles/datastore.user |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
สิทธิ์การอ่าน/เขียนข้อมูลในฐานข้อมูล Cloud Firestore มีไว้สำหรับนักพัฒนาแอปพลิเคชันและบัญชีบริการ |
roles/datastore.viewer |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
สิทธิ์การอ่านสำหรับทรัพยากร Cloud Firestore ทั้งหมด |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list |
สิทธิ์เข้าถึงเพื่อจัดการคำนิยามของดัชนีโดยสมบูรณ์ |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
สิทธิ์อ่านกำหนดเวลาสำรองข้อมูลในฐานข้อมูล Cloud Firestore |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
สิทธิ์เข้าถึงกำหนดเวลาสำรองข้อมูลในฐานข้อมูล Cloud Firestore อย่างเต็มรูปแบบ |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
สิทธิ์อ่านข้อมูลสำรองในตำแหน่ง Cloud Firestore |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
สิทธิ์เข้าถึงข้อมูลสำรองอย่างเต็มรูปแบบในตำแหน่ง Cloud Firestore |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
ความสามารถในการกู้คืนข้อมูลสำรอง Cloud Firestore ไปยังฐานข้อมูลใหม่ บทบาทนี้ยังให้ความสามารถในการสร้างฐานข้อมูลใหม่ โดยไม่จำเป็นต้องกู้คืนจากข้อมูลสำรอง |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
ความสามารถในการโคลนฐานข้อมูล Cloud Firestore ไปยังฐานข้อมูลใหม่ นอกจากนี้ บทบาทนี้ยังให้ความสามารถในการสร้างฐานข้อมูลใหม่ โดยไม่จำเป็นต้องโคลน |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
สิทธิ์การอ่านข้อมูลเชิงลึก สถิติ และการสแกน Key Visualizer |
roles/datastore.userCredsViewer |
datastore.userCreds.getdatastore.userCreds.list |
สิทธิ์การอ่านข้อมูลเข้าสู่ระบบของผู้ใช้ในฐานข้อมูล Cloud Firestore |
roles/datastore.userCredsAdmin |
datastore.userCreds.getdatastore.userCreds.listdatastore.userCreds.createdatastore.userCreds.updatedatastore.userCreds.deletedatastore.databases.listdatastore.databases.getMetadata |
สิทธิ์เข้าถึงข้อมูลเข้าสู่ระบบของผู้ใช้ในฐานข้อมูล Cloud Firestore อย่างเต็มรูปแบบ |
บทบาทที่กำหนดเอง
หากบทบาทที่กำหนดไว้ล่วงหน้าไม่ตรงกับข้อกำหนดทางธุรกิจ คุณสามารถกำหนดบทบาทที่กำหนดเองของคุณเองด้วยสิทธิ์ที่คุณระบุได้ ดังนี้
บทบาทที่จำเป็นในการสร้างและจัดการแท็ก
หากมีการแสดงแท็กในการดำเนินการสร้างหรือกู้คืน คุณจะต้องมีบทบาทบางอย่าง ดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างคู่คีย์-ค่าของแท็กก่อนเชื่อมโยงกับทรัพยากรฐานข้อมูลได้ที่หัวข้อการสร้างและจัดการแท็ก
ต้องมีสิทธิ์ที่ระบุไว้ต่อไปนี้
ดูแท็ก
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
จัดการแท็กในทรัพยากร
คุณต้องมีสิทธิ์ต่อไปนี้สำหรับทรัพยากรฐานข้อมูลที่คุณจะแนบค่าแท็ก
datastore.databases.createTagBinding
สิทธิ์
ตารางต่อไปนี้แสดงสิทธิ์ที่ Cloud Firestore รองรับ
| ชื่อสิทธิ์ของฐานข้อมูล | คำอธิบาย | |
|---|---|---|
datastore.databases.get |
เริ่มหรือย้อนกลับธุรกรรม | |
datastore.databases.getMetadata |
อ่านข้อมูลเมตาจากฐานข้อมูล | |
datastore.databases.list |
แสดงรายการฐานข้อมูลในโปรเจ็กต์ | |
datastore.databases.create |
สร้างฐานข้อมูล | |
datastore.databases.update |
อัปเดตฐานข้อมูล | |
datastore.databases.delete |
ลบฐานข้อมูล | |
datastore.databases.clone |
โคลนฐานข้อมูล | |
datastore.databases.createTagBinding |
สร้างการเชื่อมโยงแท็กสำหรับฐานข้อมูล | |
datastore.databases.deleteTagBinding |
ลบการเชื่อมโยงแท็กสำหรับฐานข้อมูล | |
datastore.databases.listTagBindings |
แสดงรายการการเชื่อมโยงแท็กทั้งหมดสําหรับฐานข้อมูล | |
datastore.databases.listEffectiveTagBindings |
แสดงรายการการเชื่อมโยงแท็กที่มีผลสำหรับฐานข้อมูล | |
| ชื่อสิทธิ์ของเอนทิตี | คำอธิบาย | |
datastore.entities.create |
สร้างเอกสาร | |
datastore.entities.delete |
ลบเอกสาร | |
datastore.entities.get |
อ่านเอกสาร | |
datastore.entities.list |
แสดงรายชื่อเอกสารในโปรเจ็กต์ (ต้องใช้ datastore.entities.get เพื่อเข้าถึงข้อมูลเอกสาร) |
|
datastore.entities.update |
อัปเดตเอกสาร | |
| ชื่อสิทธิ์ของดัชนี | คำอธิบาย | |
datastore.schemas.create |
สร้างดัชนี | |
datastore.schemas.delete |
ลบดัชนี | |
datastore.schemas.get |
อ่านข้อมูลเมตาจากดัชนี | |
datastore.schemas.list |
แสดงรายการดัชนีในโปรเจ็กต์ | |
datastore.schemas.update |
อัปเดตดัชนี | |
| ชื่อสิทธิ์การดำเนินการ | คำอธิบาย | |
datastore.operations.cancel |
ยกเลิกการดำเนินการที่ใช้เวลานาน | |
datastore.operations.delete |
ลบการดำเนินการที่ใช้เวลานาน | |
datastore.operations.get |
รับสถานะล่าสุดของการดำเนินการที่ใช้เวลานาน | |
datastore.operations.list |
แสดงรายการการดำเนินการที่ใช้เวลานาน | |
| ชื่อสิทธิ์ของโปรเจ็กต์ | คำอธิบาย | |
resourcemanager.projects.get |
เรียกดูแหล่งข้อมูลในโปรเจ็กต์ | |
resourcemanager.projects.list |
แสดงรายการโปรเจ็กต์ที่เป็นเจ้าของ | |
| ชื่อสิทธิ์เข้าถึงตำแหน่ง | คำอธิบาย | |
datastore.locations.get |
ดูรายละเอียดเกี่ยวกับตำแหน่งของฐานข้อมูล ต้องใช้เพื่อสร้างฐานข้อมูลใหม่ | |
datastore.locations.list |
แสดงรายการตำแหน่งฐานข้อมูลที่ใช้ได้ ต้องใช้เพื่อสร้างฐานข้อมูลใหม่ | |
| ชื่อสิทธิ์ของ Key Visualizer | คำอธิบาย | |
datastore.keyVisualizerScans.get |
ดูรายละเอียดเกี่ยวกับการสแกน Key Visualizer | |
datastore.keyVisualizerScans.list |
แสดงรายการการสแกน Key Visualizer ที่พร้อมใช้งาน | |
| ชื่อสิทธิ์ของกำหนดเวลาสำรองข้อมูล | คำอธิบาย | |
datastore.backupSchedules.get |
ดูรายละเอียดเกี่ยวกับกำหนดเวลาสำรองข้อมูล | |
datastore.backupSchedules.list |
แสดงรายการกำหนดเวลาสำรองข้อมูลที่ใช้ได้ | |
datastore.backupSchedules.create |
สร้างกำหนดเวลาสำรองข้อมูล | |
datastore.backupSchedules.update |
อัปเดตกำหนดเวลาสำรองข้อมูล | |
datastore.backupSchedules.delete |
ลบกำหนดเวลาสำรองข้อมูล | |
| ชื่อสิทธิ์การสำรองข้อมูล | คำอธิบาย | |
datastore.backups.get |
ดูรายละเอียดเกี่ยวกับการสำรองข้อมูล | |
datastore.backups.list |
แสดงรายการข้อมูลสำรองที่มีอยู่ | |
datastore.backups.delete |
ลบข้อมูลสำรอง | |
datastore.backups.restoreDatabase |
กู้คืนฐานข้อมูลจากข้อมูลสำรอง | |
| ชื่อสิทธิ์เข้าถึงข้อมูลเชิงลึก | คำอธิบาย | |
datastore.insights.get |
รับข้อมูลเชิงลึกของแหล่งข้อมูล | |
| ชื่อสิทธิ์ของข้อมูลเข้าสู่ระบบของผู้ใช้ | คำอธิบาย | |
datastore.userCreds.get |
ดูรายละเอียดเกี่ยวกับข้อมูลเข้าสู่ระบบของผู้ใช้ | |
datastore.userCreds.list |
แสดงรายการข้อมูลเข้าสู่ระบบของผู้ใช้ที่พร้อมใช้งาน | |
datastore.userCreds.create |
สร้างข้อมูลเข้าสู่ระบบของผู้ใช้ | |
datastore.userCreds.update |
เปิดหรือปิดใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ หรือรีเซ็ตรหัสผ่านของผู้ใช้ | |
datastore.userCreds.delete |
ลบข้อมูลเข้าสู่ระบบของผู้ใช้ |
เวลาในการตอบสนองของการเปลี่ยนบทบาท
Cloud Firestore จะแคชสิทธิ์ IAM เป็นเวลา 5 นาที ดังนั้นการเปลี่ยนแปลงบทบาทจึงใช้เวลาถึง 5 นาทีจึงจะมีผล
การจัดการ IAM ของ Cloud Firestore
คุณสามารถรับและตั้งค่านโยบาย IAM ได้โดยใช้คอนโซล Google Cloud, IAM API หรือเครื่องมือบรรทัดคำสั่ง gcloud ดูรายละเอียดได้ที่การให้สิทธิ์ การเปลี่ยนแปลง และการเพิกถอนสิทธิ์เข้าถึงสำหรับสมาชิกโปรเจ็กต์
กำหนดค่าสิทธิ์การเข้าถึงแบบมีเงื่อนไข
คุณสามารถใช้เงื่อนไข IAM เพื่อกำหนดและบังคับใช้การควบคุมการเข้าถึงแบบมีเงื่อนไขได้
ตัวอย่างเช่น เงื่อนไขต่อไปนี้จะมอบหมายบทบาท datastore.user ให้กับผู้ใช้หลักจนถึงวันที่ที่ระบุ
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
ดูวิธีกำหนดเงื่อนไข IAM สำหรับการเข้าถึงชั่วคราวได้ที่หัวข้อกำหนดค่าการเข้าถึงชั่วคราว
ดูวิธีกำหนดค่าเงื่อนไข IAM สำหรับการเข้าถึงฐานข้อมูลอย่างน้อย 1 รายการได้ที่หัวข้อกำหนดค่าเงื่อนไขการเข้าถึงฐานข้อมูล
ขั้นตอนถัดไป
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ IAM
- มอบบทบาท IAM
- ดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์