Package google.iam.v1

索引

IAMPolicy

API 總覽

管理身分與存取權管理 (IAM) 政策。

凡是實作提供存取控管功能的 API,都會實作 google.iam.v1.IAMPolicy 介面。

資料模型

當主體 (使用者或服務帳戶) 對服務公開的資源採取某些動作時,系統會套用存取控管措施。資源 (以類似 URI 的名稱識別) 是存取控管規格的單位。服務實作項目可以選擇存取控管的精細程度,以及資源支援的權限。舉例來說,某個資料庫服務可能只允許在資料表層級指定存取控管,另一個服務則可能允許在資料欄層級指定存取控管。

政策結構

請參閱 google.iam.v1.Policy

這並非 CRUD 樣式的 API,因為存取控管政策是連同附加的資源一併建立及刪除。

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

取得資源的存取控管政策。如果該資源存在且未設定政策,則會傳回空的政策。

授權範圍

需要下列 OAuth 範圍:

  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱Authentication Overview

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

設定指定資源的存取控管政策,取代任何現有的政策。

可能會傳回 NOT_FOUNDINVALID_ARGUMENTPERMISSION_DENIED 錯誤。

授權範圍

需要下列 OAuth 範圍:

  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱Authentication Overview

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

傳回呼叫者對指定資源所擁有的權限。如果資源不存在,則會傳回空白的權限組合,而非 NOT_FOUND 錯誤訊息。

附註:這項作業是設計用於建構權限感知 UI 和指令列工具,而不是用於授權檢查。這項作業可能會「失敗時維持開放狀態」,且不會事先警告。

授權範圍

需要下列 OAuth 範圍:

  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱Authentication Overview

繫結

members 或主體與 role 建立關聯。

欄位
role

string

指派給 members 清單或主體的角色。例如:roles/viewerroles/editorroles/owner

如要瞭解 IAM 角色和權限,請參閱「IAM 說明文件」。如需可用預先定義角色的清單,請參閱這篇文章

members[]

string

指定向 Google Cloud 資源要求存取權的主體。members 的值可能如下:

  • allUsers:這種特殊 ID 代表網際網路上的所有使用者,無論該使用者是否有 Google 帳戶。

  • allAuthenticatedUsers:這種特殊 ID 代表任何透過 Google 帳戶或服務帳戶進行驗證的使用者。不包括透過身分聯盟從外部識別資訊提供者 (IdP) 取得的身分。

  • user:{emailid}:代表特定 Google 帳戶的電子郵件地址,例如:alice@example.com

  • serviceAccount:{emailid}:代表 Google 服務帳戶的電子郵件地址,例如:my-other-app@appspot.gserviceaccount.com

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]Kubernetes 服務帳戶的 ID。例如:my-project.svc.id.goog[my-namespace/my-kubernetes-sa]

  • group:{emailid}:代表 Google 群組的電子郵件地址,例如:admins@example.com

  • domain:{domain}:代表該網域所有使用者的 G Suite 網域 (主要),例如:google.comexample.com
  • principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}:員工身分集區中的單一身分。

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}:群組中的所有員工身分。

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}:具有特定屬性值的所有員工身分。

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*:員工身分集區中的所有身分。

  • principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}:特定 Workload Identity Pool 中的單一身分。

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}:Workload Identity Pool 群組。

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}:Workload Identity Pool 中具有特定屬性的所有身分。

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*:Workload Identity Pool 中的所有身分。

  • deleted:user:{emailid}?uid={uniqueid}:代表最近刪除的使用者電子郵件地址 (加上專屬 ID)。例如:alice@example.com?uid=123456789012345678901。如果使用者已復原,這個值會還原為 user:{emailid},且復原的使用者會保留繫結中的角色。

  • deleted:serviceAccount:{emailid}?uid={uniqueid}:代表最近刪除的服務帳戶的電子郵件地址 (加上專屬 ID)。例如:my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901。如果服務帳戶取消刪除,這個值會還原為 serviceAccount:{emailid},且取消刪除的服務帳戶會保留繫結中的角色。

  • deleted:group:{emailid}?uid={uniqueid}:代表最近刪除的 Google 群組的電子郵件地址 (加上專屬 ID)。例如:admins@example.com?uid=123456789012345678901。如果群組已復原,這個值會還原為 group:{emailid},且復原的群組會保留繫結中的角色。

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}:刪除員工身分集區中的單一身分。例如:deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value

condition

Expr

與此繫結相關聯的條件。

如果條件評估結果為 true,則這項繫結就會套用至目前要求。

如果條件評估結果為 false,則這項繫結不適用於目前要求。不過,不同的角色繫結可能會將相同角色授予這個繫結中的一或多個主體。

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

GetIamPolicyRequest

GetIamPolicy 方法的要求訊息。

欄位
resource

string

必要:要求政策的資源。如要瞭解這個欄位的適當值,請參閱資源名稱

options

GetPolicyOptions

選用:用來指定 GetIamPolicy 相關選項的 GetPolicyOptions 物件。

GetPolicyOptions

封裝提供給 GetIamPolicy 的設定。

欄位
requested_policy_version

int32

選用。用於設定政策格式的最高政策版本。

有效值為 0、1 和 3。如果要求指定的值無效,系統會拒絕要求。

如果政策含有任何條件式角色繫結,要求就必須指定版本 3。如果政策沒有條件式角色繫結,可以指定任何有效值,或將欄位留空。

回應中的政策可能會使用您指定的政策版本,也可能使用較低的政策版本。例如,如果您指定版本 3,但政策沒有條件式角色繫結,回應就會使用版本 1。

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

政策

Identity and Access Management (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 說明文件」。

欄位
version

int32

指定政策格式。

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

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

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

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

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

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

bindings[]

Binding

members 清單或主體與 role 建立關聯。(選用) 您可以指定 condition,決定 bindings 的套用方式和時間。每個 bindings 至少必須包含一個主體。

Policy 中的 bindings 最多可參照 1,500 個主體,其中最多 250 個主體可以是 Google 群組。每個主體出現次數都會計入這些限制。例如,如果 bindings 將 50 個不同角色授予 user:alice@example.com,而非任何其他主體,則您可以在 Policy 中將另外 1,450 個主體新增至 bindings

etag

bytes

etag 用於樂觀的並行控制,有助於防止政策在同時更新時相互覆寫。強烈建議您讓系統在讀取 - 修改 - 寫入週期中利用 etag 來執行政策更新,以避免出現競爭狀況:在對 getIamPolicy 的回應中傳回 etag,且系統應將該 etag 放入對 setIamPolicy 的要求中,以確保其變更將套用至相同版本的政策。

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

SetIamPolicyRequest

SetIamPolicy 方法的要求訊息。

欄位
resource

string

必要:指定政策的資源。如要瞭解這個欄位的適當值,請參閱資源名稱

policy

Policy

必要:要套用至 resource 的完整政策。政策大小限制為幾十 KB。空白政策是有效政策,但可能會遭到特定 Google Cloud 服務 (例如 Projects) 拒絕。

TestIamPermissionsRequest

TestIamPermissions 方法的要求訊息。

欄位
resource

string

必要:要求政策詳細資訊的資源。如要瞭解這個欄位的適當值,請參閱資源名稱

permissions[]

string

針對 resource 要檢查的權限組合。不允許使用萬用字元 (例如 *storage.*)。詳情請參閱 IAM 總覽

TestIamPermissionsResponse

TestIamPermissions 方法的回應訊息。

欄位
permissions[]

string

呼叫端允許的 TestPermissionsRequest.permissions 的子集。