Quản lý danh tính và quyền truy cập (IAM)

Quản lý quyền truy cập vào tài nguyên bằng dịch vụ Quản lý danh tính và quyền truy cập (IAM). IAM cho phép bạn cấp quyền truy cập chi tiết hơn vào các tài nguyên Google Cloud cụ thể và ngăn chặn hành vi truy cập không mong muốn vào các tài nguyên khác. Trang này mô tả các quyền và vai trò IAM cho Cloud Firestore. Để biết nội dung mô tả chi tiết về IAM, hãy đọc tài liệu về IAM.

IAM cho phép bạn áp dụng nguyên tắc bảo mật về đặc quyền tối thiểu, nhờ đó, bạn chỉ cấp quyền truy cập cần thiết cho các tài nguyên của mình.

IAM cho phép bạn kiểm soát ai (người dùng)quyền gì (vai trò) đối với tài nguyên nào bằng cách đặt các chính sách IAM. Các chính sách IAM cấp một hoặc nhiều vai trò cho người dùng, cấp cho người dùng một số quyền nhất định. Ví dụ: bạn có thể cấp vai trò datastore.indexAdmin cho một người dùng. Vai trò này cho phép người dùng tạo, sửa đổi, xoá, liệt kê hoặc xem các chỉ mục.

Quyền và vai trò

Phần này tóm tắt các quyền và vai trò mà Cloud Firestore hỗ trợ.

Các quyền bắt buộc đối với phương thức API

Bảng sau đây liệt kê các quyền mà phương thức gọi phải có để thực hiện từng thao tác:

Phương thức Các quyền bắt buộc
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

Các quyền tương tự do lệnh gọi tạo con trỏ yêu cầu.

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 (chỉ dành cho thao tác chèn và cập nhật)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (chỉ dành cho thao tác thay thế hoặc cập nhật)
datastore.entities.create (chỉ dành cho thao tác chèn và cập nhật)
datastore.entities.delete (chỉ dành cho thao tác xoá)
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
khôi phục datastore.backups.restoreDatabase
clone datastore.databases.clone Sao chép cơ sở dữ liệu.

Nếu yêu cầu clone của bạn chứa giá trị tags, thì bạn phải có các quyền bổ sung sau:

  • datastore.databases.createTagBinding

Nếu bạn muốn xác minh xem các liên kết thẻ đã được đặt thành công hay chưa bằng cách liệt kê các liên kết, thì bạn cần có các quyền bổ sung sau:

  • 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

Vai trò được xác định trước

Với IAM, mọi phương thức API trong Cloud Firestore đều yêu cầu tài khoản thực hiện yêu cầu API phải có các quyền thích hợp để sử dụng tài nguyên. Bạn cấp quyền bằng cách thiết lập các chính sách cấp vai trò cho người dùng, nhóm hoặc tài khoản dịch vụ. Ngoài các vai trò cơ bản là chủ sở hữu, người chỉnh sửa và người xem, bạn có thể cấp vai trò Cloud Firestore cho người dùng dự án của mình.

Bảng sau đây liệt kê các vai trò IAM Cloud Firestore. Bạn có thể cấp nhiều vai trò cho một người dùng, nhóm hoặc tài khoản dịch vụ.

Vai trò Quyền Mô tả
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Toàn quyền sử dụng 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
Quyền đọc/ghi dữ liệu trong cơ sở dữ liệu Cloud Firestore. Dành cho nhà phát triển ứng dụng và tài khoản dịch vụ.
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
Có quyền đọc tất cả tài nguyên 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
Có toàn quyền quản lý các định nghĩa chỉ mục.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Quyền đọc đối với lịch sao lưu trong cơ sở dữ liệu 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
Có toàn quyền truy cập vào lịch sao lưu trong cơ sở dữ liệu Cloud Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Quyền đọc thông tin sao lưu ở một vị trí Cloud Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Toàn quyền truy cập vào dữ liệu sao lưu ở vị trí 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
Khả năng khôi phục bản sao lưu Cloud Firestore vào một cơ sở dữ liệu mới. Vai trò này cũng cho phép tạo cơ sở dữ liệu mới, không nhất thiết phải khôi phục từ bản sao lưu.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Có thể sao chép cơ sở dữ liệu Cloud Firestore vào một cơ sở dữ liệu mới. Vai trò này cũng cho phép tạo cơ sở dữ liệu mới, không nhất thiết phải sao chép.
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
Quyền đọc thông tin chi tiết, số liệu thống kê và các bản quét của Key Visualizer.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Quyền đọc thông tin đăng nhập của người dùng trong cơ sở dữ liệu 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
Có toàn quyền truy cập vào thông tin xác thực của người dùng trong cơ sở dữ liệu Cloud Firestore.

Vai trò tuỳ chỉnh

Nếu các vai trò được xác định trước không đáp ứng yêu cầu của doanh nghiệp, bạn có thể xác định vai trò tuỳ chỉnh của riêng mình với các quyền mà bạn chỉ định:

Các vai trò bắt buộc để tạo và quản lý thẻ

Nếu có thẻ nào xuất hiện trong các thao tác tạo hoặc khôi phục, thì bạn phải có một số vai trò. Hãy xem bài viết Tạo và quản lý thẻ để biết thêm thông tin về cách tạo cặp khoá-giá trị của thẻ trước khi liên kết chúng với tài nguyên cơ sở dữ liệu.

Bạn phải có các quyền được liệt kê sau đây.

Xem thẻ
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
Quản lý thẻ trên tài nguyên

Bạn phải có quyền sau đây đối với tài nguyên cơ sở dữ liệu mà bạn đang đính kèm giá trị thẻ.

  • datastore.databases.createTagBinding

Quyền

Bảng sau đây liệt kê các quyền mà Cloud Firestore hỗ trợ.

Tên quyền đối với cơ sở dữ liệu Mô tả
datastore.databases.get Bắt đầu hoặc khôi phục một giao dịch.
datastore.databases.getMetadata Đọc siêu dữ liệu từ cơ sở dữ liệu.
datastore.databases.list Liệt kê các cơ sở dữ liệu trong một dự án.
datastore.databases.create Tạo cơ sở dữ liệu.
datastore.databases.update Cập nhật cơ sở dữ liệu.
datastore.databases.delete Xoá cơ sở dữ liệu.
datastore.databases.clone Sao chép cơ sở dữ liệu.
datastore.databases.createTagBinding Tạo một liên kết thẻ cho cơ sở dữ liệu.
datastore.databases.deleteTagBinding Xoá một liên kết thẻ cho cơ sở dữ liệu.
datastore.databases.listTagBindings Liệt kê tất cả các liên kết thẻ cho một cơ sở dữ liệu.
datastore.databases.listEffectiveTagBindings Liệt kê các liên kết thẻ hiệu quả cho một cơ sở dữ liệu.
Tên quyền đối với thực thể Mô tả
datastore.entities.create Tạo tài liệu.
datastore.entities.delete Xoá tài liệu.
datastore.entities.get Đọc tài liệu.
datastore.entities.list Liệt kê tên của các tài liệu trong một dự án.
(Bạn cần có datastore.entities.get để truy cập vào dữ liệu trong tài liệu.)
datastore.entities.update Cập nhật tài liệu.
Tên quyền lập chỉ mục Mô tả
datastore.indexes.create Tạo chỉ mục.
datastore.indexes.delete Xoá chỉ mục.
datastore.indexes.get Đọc siêu dữ liệu từ một chỉ mục.
datastore.indexes.list Liệt kê các chỉ mục trong một dự án.
datastore.indexes.update Cập nhật chỉ mục.
Tên quyền thao tác Mô tả
datastore.operations.cancel Huỷ một thao tác diễn ra trong thời gian dài.
datastore.operations.delete Xoá một thao tác diễn ra trong thời gian dài.
datastore.operations.get Lấy trạng thái mới nhất của một thao tác diễn ra trong thời gian dài.
datastore.operations.list Liệt kê các thao tác thực hiện lâu.
Tên quyền dự án Mô tả
resourcemanager.projects.get Duyệt xem các tài nguyên trong dự án.
resourcemanager.projects.list Liệt kê các dự án thuộc sở hữu của bạn.
Tên quyền truy cập thông tin vị trí Mô tả
datastore.locations.get Nhận thông tin chi tiết về vị trí của cơ sở dữ liệu. Bạn phải tạo một cơ sở dữ liệu mới.
datastore.locations.list Liệt kê các vị trí cơ sở dữ liệu hiện có. Bạn phải tạo một cơ sở dữ liệu mới.
Tên quyền Key Visualizer Mô tả
datastore.keyVisualizerScans.get Xem thông tin chi tiết về các bản quét của Key Visualizer.
datastore.keyVisualizerScans.list Liệt kê các bản quét Key Visualizer hiện có.
Tên quyền Lịch biểu sao lưu Mô tả
datastore.backupSchedules.get Xem thông tin chi tiết về lịch sao lưu.
datastore.backupSchedules.list Liệt kê các lịch biểu sao lưu hiện có.
datastore.backupSchedules.create Tạo lịch sao lưu.
datastore.backupSchedules.update Cập nhật lịch sao lưu.
datastore.backupSchedules.delete Xoá lịch sao lưu.
Tên quyền sao lưu Mô tả
datastore.backups.get Xem thông tin chi tiết về một bản sao lưu.
datastore.backups.list Liệt kê các bản sao lưu hiện có.
datastore.backups.delete Xoá bản sao lưu.
datastore.backups.restoreDatabase Khôi phục cơ sở dữ liệu từ bản sao lưu.
Tên quyền xem thông tin chi tiết Mô tả
datastore.insights.get Nhận thông tin chi tiết về một tài nguyên
Tên quyền thông tin đăng nhập của người dùng Mô tả
datastore.userCreds.get Xem thông tin chi tiết về thông tin đăng nhập của người dùng.
datastore.userCreds.list Liệt kê thông tin đăng nhập hiện có của người dùng.
datastore.userCreds.create Tạo thông tin đăng nhập của người dùng.
datastore.userCreds.update Bật hoặc tắt thông tin đăng nhập của người dùng hoặc đặt lại mật khẩu của người dùng.
datastore.userCreds.delete Xoá thông tin đăng nhập của người dùng.

Độ trễ khi thay đổi vai trò

Cloud Firestore lưu trữ tạm thời các quyền IAM trong 5 phút, vì vậy, có thể mất đến 5 phút thì thay đổi về vai trò mới có hiệu lực.

Quản lý IAM Cloud Firestore

Bạn có thể nhận và đặt các chính sách IAM bằng Google Cloud Console, API IAM hoặc công cụ dòng lệnh gcloud. Hãy xem phần Cấp, thay đổi và thu hồi quyền truy cập của thành viên dự án để biết thông tin chi tiết.

Định cấu hình quyền truy cập có điều kiện

Bạn có thể sử dụng Điều kiện IAM để xác định và thực thi chế độ kiểm soát truy cập có điều kiện.

Ví dụ: điều kiện sau đây chỉ định cho một người dùng vai trò datastore.user cho đến một ngày cụ thể:

{
  "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')"
  }
}

Để tìm hiểu cách xác định Điều kiện IAM cho quyền truy cập tạm thời, hãy xem phần Định cấu hình quyền truy cập tạm thời.

Để tìm hiểu cách định cấu hình Điều kiện IAM để truy cập vào một hoặc nhiều cơ sở dữ liệu, hãy xem phần Định cấu hình điều kiện truy cập cơ sở dữ liệu.

Bước tiếp theo