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) có 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
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:
|
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
- Tìm hiểu thêm về IAM.
- Cấp vai trò IAM.
- Tìm hiểu về quy trình xác thực.