Policy

身分與存取權管理 (IAM) 政策,可指定 Google Cloud 資源的存取權控管。

Policybindings 的集合。binding 會將一或多個 members (或主體) 繫結至單一 role。主體可以是使用者帳戶、服務帳戶、Google 群組和網域 (例如 G Suite)。role 是具名權限清單,每個 role 可以是 IAM 預先定義的角色,或使用者建立的自訂角色。

對於某些類型的 Google Cloud 資源,binding 也可以指定 condition,這是邏輯運算式,只有在運算式評估為 true 時,才能存取資源。條件可以根據要求或資源的屬性 (或兩者) 新增限制。如要瞭解哪些資源支援 IAM 政策中的條件,請參閱 IAM 說明文件

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
    }

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

如需 IAM 及其功能的說明,請參閱 IAM 說明文件

JSON 表示法
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "auditConfigs": [
    {
      object (AuditConfig)
    }
  ],
  "etag": string
}
欄位
version

integer

指定政策的格式。

有效值為 013。系統會拒絕指定無效值的要求。

任何影響條件角色繫結的作業都必須指定 3 版本。這項規定適用於下列作業:

  • 取得包含條件式角色繫結的政策
  • 將條件角色繫結新增至政策
  • 變更政策中的條件式角色繫結
  • 從包含條件的政策中移除任何角色繫結 (不論是否有條件)

重要事項:如果您使用 IAM 條件,每次呼叫 setIamPolicy 時都必須加入 etag 欄位。如果您省略這個欄位,IAM 就會允許您使用版本 1 政策覆寫版本 3 政策,而版本 3 政策中的所有條件都會遺失。

如果政策不包含任何條件,對該政策執行的作業可以指定任何有效版本,也可以不指定欄位。

如要瞭解哪些資源支援 IAM 政策中的條件,請參閱 IAM 說明文件

bindings[]

object (Binding)

members 或主體清單與 role 建立關聯。您可以視需要指定 condition,以決定套用 bindings 的方式和時機。每個 bindings 都必須包含至少一個主要元素。

Policy 中的 bindings 最多可參照 1,500 個主體,其中最多 250 個主體可為 Google 群組。每個主體都會計入這些限制。舉例來說,如果 bindings 將 50 個不同角色授予 user:alice@example.com,但沒有授予其他主體,您就可以在 Policy 中將其他 1,450 個主體新增至 bindings

auditConfigs[]

object (AuditConfig)

指定此政策的雲端稽核記錄設定。

etag

string (bytes format)

etag 用於開放式並行控制,有助防止政策在同時更新時相互覆寫。強烈建議系統在讀取-修改-寫入週期中使用 etag 執行政策更新,以避免發生競爭狀況:getIamPolicy 的回應會傳回 etag,系統應將該 etag 放入 setIamPolicy 的要求中,確保變更會套用至相同版本的政策。

重要事項:如果您使用 IAM 條件,每次呼叫 setIamPolicy 時都必須加入 etag 欄位。如果您省略這個欄位,IAM 就會允許您使用版本 1 政策覆寫版本 3 政策,而版本 3 政策中的所有條件都會遺失。

Base64 編碼字串。