จัดการสิทธิ์เข้าถึงทรัพยากรด้วย 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 ให้กับผู้ใช้โปรเจ็กต์ได้ด้วย
ตารางต่อไปนี้แสดงบทบาท Cloud Firestore IAM คุณสามารถมอบหมายบทบาทหลายบทบาทให้กับผู้ใช้ กลุ่ม หรือบัญชีบริการได้
| บทบาท | สิทธิ์ | คำอธิบาย |
|---|---|---|
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 นาทีจึงจะมีผล
การจัดการ Cloud Firestore IAM
คุณรับและตั้งค่านโยบาย IAM ได้โดยใช้คอนโซล Google Cloud, API ของ IAM หรือเครื่องมือบรรทัดคำสั่ง 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
- ดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์