Policy

Một chính sách Quản lý danh tính và quyền truy cập (IAM) chỉ định các chế độ kiểm soát quyền truy cập cho các tài nguyên trên Google Cloud.

Policy là một tập hợp bindings. binding liên kết một hoặc nhiều members hoặc các đối tượng chính với một role duy nhất. Các thực thể có thể là tài khoản người dùng, tài khoản dịch vụ, nhóm Google và miền (chẳng hạn như G Suite). role là danh sách được đặt tên gồm các quyền; mỗi role có thể là một vai trò được xác định trước trong IAM hoặc một vai trò tuỳ chỉnh do người dùng tạo.

Đối với một số loại tài nguyên trên Google Cloud, binding cũng có thể chỉ định condition. Đây là một biểu thức logic chỉ cho phép truy cập vào tài nguyên nếu biểu thức đánh giá thành true. Một điều kiện có thể thêm các điều kiện ràng buộc dựa trên thuộc tính của yêu cầu, tài nguyên hoặc cả hai. Để tìm hiểu những tài nguyên hỗ trợ các điều kiện trong chính sách IAM, hãy xem tài liệu về IAM.

Ví dụ về JSON:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-project-id@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }

Ví dụ về YAML:

    bindings:
    - members:
      - user:mike@example.com
      - group:admins@example.com
      - domain:google.com
      - serviceAccount:my-project-id@appspot.gserviceaccount.com
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:eve@example.com
      role: roles/resourcemanager.organizationViewer
      condition:
        title: expirable access
        description: Does not grant access after Sep 2020
        expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
    etag: BwWWja0YfJA=
    version: 3

Để biết nội dung mô tả về IAM và các tính năng của IAM, hãy xem tài liệu về IAM.

Biểu diễn dưới dạng JSON
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "etag": string
}
Trường
version

integer

Chỉ định định dạng của chính sách.

Các giá trị hợp lệ là 0, 13. Những yêu cầu chỉ định một giá trị không hợp lệ sẽ bị từ chối.

Mọi thao tác ảnh hưởng đến các liên kết vai trò có điều kiện đều phải chỉ định phiên bản 3. Yêu cầu này áp dụng cho các thao tác sau:

  • Nhận một chính sách có chứa một liên kết vai trò có điều kiện
  • Thêm một liên kết vai trò có điều kiện vào chính sách
  • Thay đổi một liên kết vai trò có điều kiện trong chính sách
  • Xoá mọi liên kết vai trò (có hoặc không có điều kiện) khỏi một chính sách có điều kiện

Quan trọng: Nếu sử dụng Điều kiện IAM, bạn phải thêm trường etag bất cứ khi nào gọi setIamPolicy. Nếu bạn bỏ qua trường này, thì IAM sẽ cho phép bạn ghi đè chính sách phiên bản 3 bằng chính sách phiên bản 1 và tất cả các điều kiện trong chính sách phiên bản 3 sẽ bị mất.

Nếu một chính sách không có điều kiện nào, thì các thao tác trên chính sách đó có thể chỉ định bất kỳ phiên bản hợp lệ nào hoặc để trống trường.

Để tìm hiểu những tài nguyên hỗ trợ các điều kiện trong chính sách IAM, hãy xem tài liệu về IAM.

bindings[]

object (Binding)

Liên kết một danh sách members hoặc các thực thể chính với một role. Bạn có thể chỉ định một condition để xác định cách thức và thời điểm áp dụng bindings. Mỗi bindings phải chứa ít nhất một người đại diện.

bindings trong Policy có thể tham chiếu đến tối đa 1.500 người dùng chính; tối đa 250 người dùng chính trong số này có thể là nhóm trên Google. Mỗi lần xuất hiện của một thực thể chính đều được tính vào các giới hạn này. Ví dụ: nếu bindings cấp 50 vai trò khác nhau cho user:alice@example.com và không cấp cho bất kỳ đối tượng nào khác, thì bạn có thể thêm 1.450 đối tượng khác vào bindings trong Policy.

etag

string (bytes format)

etag được dùng để kiểm soát tính đồng thời lạc quan nhằm ngăn chặn các bản cập nhật đồng thời của một chính sách ghi đè lẫn nhau. Các hệ thống nên sử dụng etag trong chu kỳ đọc-sửa đổi-ghi để thực hiện các bản cập nhật chính sách nhằm tránh tình trạng xung đột: etag được trả về trong phản hồi cho getIamPolicy và các hệ thống dự kiến sẽ đặt etag đó vào yêu cầu đối với setIamPolicy để đảm bảo rằng thay đổi của chúng sẽ được áp dụng cho cùng một phiên bản của chính sách.

Quan trọng: Nếu sử dụng Điều kiện IAM, bạn phải thêm trường etag bất cứ khi nào gọi setIamPolicy. Nếu bạn bỏ qua trường này, thì IAM sẽ cho phép bạn ghi đè chính sách phiên bản 3 bằng chính sách phiên bản 1 và tất cả các điều kiện trong chính sách phiên bản 3 sẽ bị mất.

Một chuỗi được mã hoá base64.