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.schemas.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
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 โคลนฐานข้อมูล

หากคำขอ 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 ให้กับผู้ใช้ของโปรเจ็กต์ได้ด้วย

ตารางต่อไปนี้แสดงบทบาท IAM ของ Cloud Firestore คุณสามารถมอบหมายบทบาทหลายบทบาทให้กับผู้ใช้ กลุ่ม หรือบัญชีบริการได้

บทบาท สิทธิ์ คำอธิบาย
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.schemas.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.schemas.get
datastore.schemas.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.schemas.*

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

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