จัดการสิทธิ์เข้าถึงทรัพยากรด้วย 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.indexes.list |
|
Find |
datastore.entities.get datastore.entities.list |
|
Aggregate |
datastore.entities.get datastore.entities.list |
|
GetMore |
สิทธิ์เดียวกันกับที่การเรียกที่สร้างเคอร์เซอร์ต้องใช้ |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.get datastore.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.get datastore.entities.list datastore.entities.update datastore.entities.create (สำหรับการอัปเดต/แทรกเท่านั้น) |
|
FindAndModify |
datastore.entities.get datastore.entities.list datastore.entities.update (สำหรับการแทนที่หรืออัปเดตเท่านั้น)datastore.entities.create (สำหรับการแทรก/อัปเดตเท่านั้น)datastore.entities.delete (สำหรับการลบเท่านั้น) |
|
CreateCollection |
datastore.entities.create |
|
projects.databases.indexes |
||
create |
datastore.indexes.create |
|
delete |
datastore.indexes.delete |
|
get |
datastore.indexes.get |
|
list |
datastore.indexes.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.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
สิทธิ์เข้าถึง Cloud Firestore แบบเต็ม |
roles/datastore.user |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.* datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
สิทธิ์การอ่าน/เขียนข้อมูลในฐานข้อมูล Cloud Firestore ใช้สำหรับนักพัฒนาแอปพลิเคชันและบัญชีบริการ |
roles/datastore.viewer |
appengine.applications.get datastore.databases.get datastore.databases.getMetadata datastore.databases.list datastore.entities.get datastore.entities.list datastore.indexes.get datastore.indexes.list datastore.namespaces.get datastore.namespaces.list datastore.statistics.get datastore.statistics.list resourcemanager.projects.get resourcemanager.projects.list |
สิทธิ์การอ่านทรัพยากร Cloud Firestore ทั้งหมด |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.list datastore.operations.get resourcemanager.projects.get resourcemanager.projects.list |
สิทธิ์เข้าถึงเพื่อจัดการคำนิยามของดัชนีโดยสมบูรณ์ |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
สิทธิ์การอ่านกำหนดการสำรองข้อมูลในCloud Firestoreฐานข้อมูล |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.get datastore.backupSchedules.list datastore.backupSchedules.create datastore.backupSchedules.update datastore.backupSchedules.delete datastore.databases.list datastore.databases.getMetadata |
สิทธิ์เข้าถึงกำหนดการสำรองข้อมูลในฐานข้อมูล Cloud Firestore โดยสมบูรณ์ |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
สิทธิ์การอ่านข้อมูลสำรองในCloud Firestore |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
สิทธิ์เข้าถึงข้อมูลสำรองในสถานที่ตั้ง Cloud Firestore โดยสมบูรณ์ |
roles/datastore.restoreAdmin |
datastore.backups.get datastore.backups.list datastore.backups.restoreDatabase datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
ความสามารถในการกู้คืนข้อมูลสำรอง Cloud Firestore ไปยังฐานข้อมูลใหม่ บทบาทนี้ยังช่วยให้สร้างฐานข้อมูลใหม่ได้ด้วย ไม่จำเป็นต้องกู้คืนจากข้อมูลสำรอง |
roles/datastore.cloneAdmin |
datastore.databases.clone datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
ความสามารถในการโคลนฐานข้อมูล Cloud Firestore ไปยังฐานข้อมูลใหม่ บทบาทนี้ยังช่วยให้สร้างฐานข้อมูลใหม่ได้ด้วย ไม่จำเป็นต้องโคลน |
roles/datastore.statisticsViewer |
resourcemanager.projects.get resourcemanager.projects.list datastore.databases.getMetadata datastore.insights.get datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list datastore.statistics.list datastore.statistics.get |
สิทธิ์การอ่านข้อมูลเชิงลึก สถิติ และการสแกน Key Visualizer |
roles/datastore.userCredsViewer |
datastore.userCreds.get datastore.userCreds.list |
สิทธิ์เข้าถึงเพื่ออ่านข้อมูลเข้าสู่ระบบของผู้ใช้ในCloud Firestoreฐานข้อมูล |
roles/datastore.userCredsAdmin |
datastore.userCreds.get datastore.userCreds.list datastore.userCreds.create datastore.userCreds.update datastore.userCreds.delete datastore.databases.list datastore.databases.getMetadata |
สิทธิ์เข้าถึงข้อมูลเข้าสู่ระบบของผู้ใช้ในCloud Firestoreฐานข้อมูลโดยสมบูรณ์ |
บทบาทที่กำหนดเอง
หากบทบาทที่กำหนดไว้ล่วงหน้าไม่ตรงตามข้อกำหนดทางธุรกิจ คุณสามารถกำหนดบทบาทที่กำหนดเองที่มีสิทธิ์ที่คุณระบุได้โดยทำดังนี้
บทบาทที่จำเป็นในการสร้างและจัดการแท็ก
หากมีการแสดงแท็กในการดำเนินการสร้างหรือกู้คืน คุณจะต้องมีบทบาทบางอย่าง ดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างคู่คีย์-ค่าของแท็กก่อนที่จะเชื่อมโยงกับทรัพยากรฐานข้อมูลได้ที่การสร้างและการจัดการแท็ก
ต้องมีสิทธิ์ที่ระบุไว้ต่อไปนี้
ดูแท็ก
datastore.databases.listTagBindings
datastore.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.indexes.create |
สร้างดัชนี | |
datastore.indexes.delete |
ลบดัชนี | |
datastore.indexes.get |
อ่านข้อมูลเมตาจากดัชนี | |
datastore.indexes.list |
แสดงรายการดัชนีในโปรเจ็กต์ | |
datastore.indexes.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 Console, 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
- ดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์