Identity and Access Management (IAM)

จัดการสิทธิ์เข้าถึงทรัพยากรด้วย 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 โคลนฐานข้อมูล

หากคำขอ clone มีค่า tags คุณจะต้องมีสิทธิ์เพิ่มเติมต่อไปนี้

  • datastore.databases.createTagBinding

หากต้องการยืนยันว่าได้ตั้งค่าการเชื่อมโยงแท็กสําเร็จหรือไม่โดยการแสดงรายการการเชื่อมโยง คุณจะต้องมีสิทธิ์เพิ่มเติมต่อไปนี้

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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 รายการได้ที่กำหนดค่าเงื่อนไขการเข้าถึงฐานข้อมูล

ขั้นตอนถัดไป