使用網域限定共用功能限制身分

網域限定共用功能可讓您根據網域或組織資源,限制資源共用。啟用網域限制共用功能後,只有屬於允許網域或組織的主體,才能在 Google Cloud 組織中獲得 IAM 角色。

您可以使用三種組織政策,依網域限制身分:

  • iam.managed.allowedPolicyMembers 代管限制
  • 參照 iam.googleapis.com/AllowPolicy 資源的自訂組織政策
  • iam.allowedPolicyMemberDomains 舊版代管限制

事前準備

選擇要用來實作網域限定共用機制的方法。如要進一步瞭解各種方法的優缺點,請參閱「依網域限制共用的方法」。

必要的角色

如要取得強制執行網域限制共用功能所需的權限,請要求管理員授予您組織的組織政策管理員 (roles/orgpolicy.policyAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

使用 iam.managed.allowedPolicyMembers 限制,實施網域限定共用

控制台

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

    前往「Organization policies」(組織政策)

  2. 在專案挑選器中,選取要編輯組織政策的專案、資料夾或組織。在隨即顯示的「Organization policies」(組織政策) 頁面中,會列出這項資源可用的組織政策限制,您可以篩選這份清單。

  3. 從清單中選取「Restrict allowed policy members in IAM allow policies」(限制 IAM 允許政策中允許的政策成員) 代管限制。

  4. 在「Policy details」(政策詳細資料) 頁面中,按一下「Manage policy」(管理政策)。

  5. 在「Edit policy」(編輯政策) 頁面,選取「Override parent's policy」(覆寫上層政策)。

  6. 選取「新增規則」,然後更新組織政策規則。

  7. 在「Enforcement」(強制執行) 下方,選取「On」 (開啟)。

  8. (選用) 如要根據標記設定組織政策的條件,請按一下「Add condition」(新增條件)。如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「使用標記設定組織政策範圍」。

  9. 在「Parameters」(參數) 區段中,設定要授予組織角色的成員和主體集,然後按一下「Save」(儲存)。

  10. (選用) 如要在強制執行組織政策變更前預覽其影響,請按一下「Test changes」(測試變更)。如要進一步瞭解如何測試組織政策變更,請參閱「使用 Policy Simulator 測試組織政策變更」。

  11. 如要在模擬測試模式下強制執行組織政策,請按一下「Set dry run policy」(設定模擬測試政策)。詳情請參閱「測試組織政策」。

  12. 確認組織政策在模擬測試模式下運作正常後,請按一下「Set policy」(設定政策),設定正式政策。

gcloud

  1. 建立 YAML 檔案,定義組織政策:

    name: organizations/ORG_ID/policies/iam.managed.allowedPolicyMembers
    spec:
    rules:
     - enforce: true
       parameters:
         allowedMemberSubjects:
           - ALLOWED_MEMBER_1
           - ALLOWED_MEMBER_2
         allowedPrincipalSets:
           - ALLOWED_PRINCIPAL_SET_1
           - ALLOWED_PRINCIPAL_SET_2
    

    更改下列內容:

    • ORG_ID: Google Cloud組織的數字 ID。

    • ALLOWED_MEMBER_1、ALLOWED_MEMBER_2:您要在組織中授予角色的成員,例如 user:example-user@example.com。

    • ALLOWED_PRINCIPAL_SET_1、ALLOWED_PRINCIPAL_SET_2:您要在組織中授予角色的主體集。例如://cloudresourcemanager.googleapis.com/organizations/0123456789012。

    (選用) 如要根據標記設定組織政策的條件,請在 rules 中新增 condition 區塊。如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「使用標記設定組織政策範圍」。

  2. 使用 org-policies set-policy 指令和 spec 旗標設定政策:

    gcloud org-policies set-policy POLICY_PATH \
      --update-mask=spec
    

    請將 POLICY_PATH 替換為組織政策 YAML 檔案的完整路徑。

如要瞭解如何在套用政策前,以模擬測試模式測試政策,請參閱「測試組織政策」。

如要瞭解如何在強制執行政策前模擬政策,請參閱「使用 Policy Simulator 測試組織政策變更」。

REST

如要設定組織政策,請使用 organizations.policies.create 方法。

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

要求 JSON 主體包含組織政策的定義。如果這項限制不支援參數,請省略 rules 下方的 parameters 區塊。

{
  "name": "organizations/ORG_ID/policies/CONSTRAINT_NAME",
  "spec": {
    "rules": [
      {
        "enforce": true,
        "parameters": {
          "allowedMemberSubjects": [
            "ALLOWED_MEMBER_1",
            "ALLOWED_MEMBER_2"
          ],
          "allowedPrincipalSets": [
            "ALLOWED_PRINCIPAL_SET_1",
            "ALLOWED_PRINCIPAL_SET_2"
          ]
        }
      }
    ]
  }
}

更改下列內容:

  • ORG_ID: Google Cloud組織的數字 ID。

  • CONSTRAINT_NAME:要設定的限制名稱。

  • ALLOWED_MEMBER_1、ALLOWED_MEMBER_2:您要在組織中授予角色的成員,例如 user:example-user@example.com。

  • ALLOWED_PRINCIPAL_SET_1、ALLOWED_PRINCIPAL_SET_2:您要在組織中授予角色的主體集。例如://cloudresourcemanager.googleapis.com/organizations/0123456789012。

(選用) 如要根據標記設定組織政策的條件,請在 rules 中新增 condition 區塊。如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「使用標記設定組織政策範圍」。

如要瞭解如何在套用政策前,以模擬測試模式測試政策,請參閱「測試組織政策」。

如要瞭解如何在強制執行政策前模擬政策,請參閱「使用 Policy Simulator 測試組織政策變更」。

使用自訂組織政策,實施網域限定共用

  1. 建立自訂限制,限制可授予組織角色的主體:

    1. 使用 memberInPrincipalSet CEL 函式,並將組織主體設為限制授予組織成員角色。如要瞭解如何找出組織 ID,請參閱「擷取組織主體集」。

      舉例來說,下列限制會將角色授予對象限制為組織成員:

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members to be granted roles
      
    2. 您可以視需要新增其他 CEL 函式,並使用邏輯運算子 (&&、|| 或 !) 連結,進一步調整限制。您可以新增下列任一函式:

      舉例來說,下列限制會將角色授予對象限制為貴組織成員和 admin@example.com:

      name: organizations/ORG_ID/customConstraints/custom.allowInternalIdentitiesOnly
      resourceTypes: iam.googleapis.com/AllowPolicy
      methodTypes:
        - CREATE
        - UPDATE
      condition:
        "resource.bindings.all(
          binding,
          binding.members.all(member,
            (
              MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
              ||
              MemberSubjectMatches(member, ['user:admin@example.com'])
            )
          )
        )"
      actionType: ALLOW
      displayName: Only allow organization members and service agents to be granted roles
      
  2. 設定自訂限制:

    控制台

    如要建立自訂限制,請按照下列步驟操作:

    1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

      前往「Organization policies」(組織政策)

    2. 在專案挑選器中,選取要設定組織政策的專案。
    3. 按一下「 Custom constraint」(自訂限制)。
    4. 在「Display name」(顯示名稱) 方塊中,輸入人類可讀的限制名稱。這個名稱會用於錯誤訊息,可用於識別和偵錯。請勿在顯示名稱中使用個人識別資訊 (PII) 或機密資料,因為這類名稱可能會在錯誤訊息中曝光。這個欄位最多可包含 200 個字元。
    5. 在「Constraint ID」(限制 ID) 方塊中,輸入新自訂限制的 ID。自訂限制只能包含英文字母 (包括大小寫) 或數字,例如 custom.allowInternalIdentitiesOnly。這個欄位最多可包含 70 個字元,不含前置字元 (custom.),例如 organizations/123456789/customConstraints/custom。請勿在限制 ID 中輸入 PII 或機密資料,因為錯誤訊息可能會顯示上述資訊。
    6. 在「Description」(說明) 方塊中,輸入人類可讀的限制說明。違反政策時,系統會將這段說明做為錯誤訊息顯示。請詳細說明違反政策的原因,以及如何解決違規問題。請勿在說明中輸入 PII 或機密資料,因為錯誤訊息可能會顯示上述資訊。這個欄位最多可輸入 2000 個字元。
    7. 在「Resource type」(資源類型) 方塊中,選取包含要限制的物件和欄位的 Google Cloud REST 資源名稱,例如 container.googleapis.com/Cluster。大多數資源類型最多支援 20 項自訂限制。如果嘗試建立更多自訂限制,作業會失敗。
    8. 這項限制只能在 REST CREATE 方法上強制執行。
    9. 如要查看各項服務支援的方法,請在「 支援自訂限制的服務」中找到該服務。

    10. 如要定義條件,請按一下 「Edit condition」(編輯條件)。
      1. 在「Add condition」(新增條件) 面板中,建立參照支援服務資源的 CEL 條件,例如 resource.management.autoUpgrade == false。這個欄位最多可輸入 1000 個字元。如要進一步瞭解 CEL 的用法,請參閱 一般運算語言。如要進一步瞭解可在自訂限制中使用的服務資源,請參閱「 支援自訂限制的服務」。
      2. 按一下 [儲存]。
    11. 在「Action」下方,選取是否要在符合條件時允許或拒絕評估的方法。
    12. 「拒絕」動作表示如果條件評估為 true,系統會禁止建立或更新資源。

      「允許」動作表示只有在條件評估為 true 時,才允許建立或更新資源。除了條件中明確列出的情況外,其他所有情況都會遭到封鎖。

    13. 按一下「Create constraint」(建立限制)。
    14. 在每個欄位中輸入值後,右側會顯示這項自訂限制的對等 YAML 設定。

    gcloud

    1. 如要建立自訂限制,請使用下列格式建立 YAML 檔案:
    2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: RESOURCE_NAME
      methodTypes:
        - CREATE
      condition: "CONDITION"
      actionType: ACTION
      displayName: DISPLAY_NAME
      description: DESCRIPTION

      更改下列內容:

      • ORGANIZATION_ID:組織 ID,例如 123456789。
      • CONSTRAINT_NAME:新自訂限制的名稱。自訂限制只能包含英文字母 (包括大小寫) 或數字,例如 custom.allowInternalIdentitiesOnly。這個欄位最多可包含 70 個字元,不含前置字元 (custom.),例如 organizations/123456789/customConstraints/custom。請勿在限制 ID 中輸入 PII 或機密資料,因為錯誤訊息可能會顯示上述資訊。
      • RESOURCE_NAME:內含要限制的物件和欄位的 Google Cloud資源完整名稱,例如:iam.googleapis.com/AllowPolicy。大多數資源類型最多支援 20 項自訂限制。如果嘗試建立更多自訂限制,作業會失敗。
      • methodTypes:強制執行限制的 REST 方法。只能是 CREATE。
      • 如要查看各項服務支援的方法,請在「 支援自訂限制的服務」中找到該服務。

      • CONDITION:針對支援服務資源表示法所撰寫的 CEL 條件。這個欄位最多可輸入 1000 個字元。例如:"resource.bindings.all( binding, binding.members.all(member, MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) ) )"。
      • 如要進一步瞭解可編寫條件的資源,請參閱「支援的資源」。

      • ACTION:符合 condition 時採取動作。只能是 ALLOW。
      • 「允許」動作代表如果條件評估為 true,則允許建立或更新資源。這也表示除了條件中明確列出的情況外,其他所有情況都會遭到封鎖。

      • DISPLAY_NAME:人類可讀的限制名稱。這個名稱會用於錯誤訊息,可用於識別和偵錯。請勿在顯示名稱中使用 PII 或機密資料,因為這類名稱可能會在錯誤訊息中顯示。這個欄位最多可輸入 200 個字元。
      • DESCRIPTION:違反政策時,會以錯誤訊息形式顯示且易於理解的限制說明。這個欄位最多可包含 2000 個字元。
    3. 為新的自訂限制建立 YAML 檔案後,您必須加以設定,才能用於組織的組織政策。如要設定自訂限制,請使用 gcloud org-policies set-custom-constraint 指令:
    4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

      請將 CONSTRAINT_PATH 替換成自訂限制檔案的完整路徑,例如:/home/user/customconstraint.yaml。

      這項作業完成後,自訂限制會顯示在 Google Cloud 組織政策清單中,供組織政策使用。

    5. 如要確認是否存在自訂限制,請使用 gcloud org-policies list-custom-constraints 指令:
    6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

      將 ORGANIZATION_ID 替換為組織資源的 ID。

      詳情請參閱「 查看組織政策」。

  3. 強制執行自訂組織政策:

    如要強制執行限制,請建立參照該限制的組織政策,然後將該政策套用至 Google Cloud 資源。

    控制台

    1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

      前往「Organization policies」(組織政策)

    2. 在專案挑選器中,選取要設定組織政策的專案。
    3. 在「Organization policies」(組織政策) 頁面的清單中選取限制,即可查看該限制的「Policy details」(政策詳細資料) 頁面。
    4. 如要為這項資源設定組織政策,請按一下「Manage policy」(管理政策)。
    5. 在「Edit policy」(編輯政策) 頁面,選取「Override parent's policy」(覆寫上層政策)。
    6. 按一下「Add a rule」(新增規則)。
    7. 在「Enforcement」(強制執行) 部分,選取是否要強制執行這項組織政策。
    8. 選用:如要根據標記設定組織政策的條件,請按一下「Add condition」(新增條件)。請注意,如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「 使用標記設定組織政策範圍」。
    9. 按一下「Test changes」(測試變更),模擬組織政策的影響。詳情請參閱「 使用 Policy Simulator 測試組織政策變更」。
    10. 如要在模擬測試模式下強制執行組織政策,請按一下「Set dry run policy」(設定模擬測試政策)。詳情請參閱「 測試組織政策」。
    11. 確認組織政策在模擬測試模式下運作正常後,請按一下「Set policy」(設定政策),設定正式政策。

    gcloud

    1. 如要建立含有布林值規則的組織政策,請建立參照限制的政策 YAML 檔案:
    2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      
      dryRunSpec:
        rules:
        - enforce: true

      更改下列內容:

      • PROJECT_ID:要強制執行限制的專案。
      • CONSTRAINT_NAME:要為自訂限制定義的名稱,例如:custom.allowInternalIdentitiesOnly。
    3. 如要在模擬測試模式中強制執行組織政策,請執行下列指令並加上 dryRunSpec 旗標:
    4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

      請將 POLICY_PATH 替換為組織政策 YAML 檔案的完整路徑。政策最多需要 15 分鐘才會生效。

    5. 確認模擬測試模式中的組織政策運作正常後,請使用 org-policies set-policy 指令和 spec 旗標設定正式政策:
    6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

      請將 POLICY_PATH 替換為組織政策 YAML 檔案的完整路徑。政策最多需要 15 分鐘才會生效。

使用 iam.allowedPolicyMemberDomains 限制,實施網域限定共用

網域限制是舊版代管限制,具有清單 constraint_type。您可以在網域限制條件的 allowed_values 清單中,指定組織主體組合或 Google Workspace 客戶 ID。詳情請參閱「組織主體集與 Google Workspace 客戶 ID」。

系統不會自動允許組織主體集和 Google Workspace ID。如要允許組織中的主體存取組織中的資源,您必須將組織主體集或 Google Workspace ID 納入允許的主體集。

網域限制不支援拒絕值,且組織政策無法儲存 denied_values 清單中的 ID。

您可以設定組織政策,強制執行網域限制,條件是支援資源清單中的任何資源。例如 Cloud Storage bucket、BigQuery 資料集或 Compute Engine VM。

控制台

如要設定包含網域限制條件的組織政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

    前往「Organization policies」(組織政策)

  2. 在專案挑選器中,選取要設定組織政策的組織資源。

  3. 在「Organization policies」(組織政策) 頁面的限制清單中,選取「Domain Restricted Sharing」(網域限制共用)。

  4. 在「Policy details」(政策詳細資料) 頁面中,按一下「Manage policy」(管理政策)。

  5. 在「套用對象」下方,選取「覆寫上層政策」。

  6. 點選「新增規則」。

  7. 在「Policy values」(政策值) 底下,選取「Custom」(自訂)。

  8. 在「Perimeter type」(Perimeter 類型),選取「Allow」(允許)。

  9. 在「Custom values」(自訂值) 下方,在欄位中輸入組織主體集或 Google Workspace 客戶 ID。

  10. 如要新增多個 ID,請按一下「New policy value」(新增政策值),建立其他欄位。

  11. 按一下「完成」。

  12. (選用) 如要根據標記設定網域限制限制的條件,請按一下「Add condition」(新增條件)。

    1. 在「Title」(標題) 欄位中,輸入條件名稱。

    2. 在「Description」(說明) 欄位中輸入條件說明。說明會提供必要標記的背景資訊,以及這些標記對資源的影響。

    3. 您可以使用條件建構工具建立條件,要求必須有特定標記,限制才會生效。

      1. 在「條件建構工具」分頁的「條件類型」選單中,選取「標記」。

      2. 選取條件的「運算子」。如要比對整個標記,請使用 matches 運算子。如要比對標記鍵和標記值,請使用 matches ID 運算子。

      3. 如果選取「符合」運算子,請輸入標記的值命名空間名稱。如果選取「相符的 ID」運算子,請輸入鍵和值的 ID。

      4. 按一下「新增」即可建立多個條件。如果新增其他條件,可以切換「And」,將條件邏輯設為必須符合所有條件。您可以切換「Or」,將條件邏輯設為只需符合其中一項條件。

      5. 如要刪除運算式,請按一下條件欄位右側的大「X」X。

      6. 條件編輯完成後,按一下「儲存」。

  13. 如要強制執行政策,請按一下「Set policy」(設定政策)。

gcloud

您可以透過 Google Cloud CLI 設定政策。要建立包含網域限制的政策,請執行下列指令:

如要設定包含網域限制限制的組織政策,請執行下列指令:

gcloud org-policies set-policy POLICY_PATH

其中 POLICY_PATH 是組織政策 YAML 檔案的完整路徑,應如下所示:

name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
  rules:
  - condition: # This condition applies to the values block.
      expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
    values:
      allowedValues:
      - PRINCIPAL_SET
  - values:
      allowedValues:
      - PRINCIPAL_SET

更改下列內容:

這項組織政策強制執行後,只有 allowed_values 清單中指定的身分,才能列入允許政策。主體必須位於指定的組織主體集,或屬於指定的 Google Workspace 網域,才能獲得允許。

舉例來說,如果您建立的組織政策只允許貴公司 Google Workspace 網域的客戶 ID,則從那時起,只有與該網域相關聯的主體才能新增至允許政策。

錯誤訊息示例

如果嘗試新增的主體不在 allowed_values 清單中,就會違反 iam.allowedPolicyMemberDomains 舊版代管限制,作業會失敗並顯示錯誤訊息。

控制台

Screenshot of Console

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION:
One or more users named in the policy do not belong to a permitted customer.

擷取機構主體組合

您可以使用 Google Cloud 控制台、gcloud CLI 或 Cloud Resource Manager API 取得組織資源 ID。

主控台

如要使用 Google Cloud 控制台取得組織資源 ID,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台

    前往 Google Cloud 控制台

  2. 在頁面頂端的專案挑選器中,選取組織資源。
  3. 依序按一下右側的「更多」和「設定」。

「Settings」(設定) 頁面會顯示組織資源 ID。

gcloud

如要找出組織資源 ID,請執行下列指令:

gcloud organizations list

這個指令會列出您所屬的所有組織資源,以及對應的組織資源 ID。

API

如要使用 Cloud Resource Manager API 找出組織資源 ID,請使用 organizations.search() 方法,並加入網域查詢。例如:

GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}

回應中包含屬於 altostrat.com 的組織資源中繼資料,其中包含組織資源 ID。

取得組織資源 ID 後,您必須為屬於該組織的一組主體使用正確的 ID。例如:

principalSet://iam.googleapis.com/organizations/01234567890123

輸入組織主體集後,即可將貴組織的角色授予下列主體:

  • 貴組織中的所有員工身分集區
  • 組織中任何專案的所有服務帳戶和 workload identity pool
  • 與組織中資源相關聯的所有服務代理。

如要進一步瞭解 IAM 主體 ID,請參閱「主體 ID」。

擷取 Google Workspace 客戶 ID

輸入 Google Workspace 客戶 ID 後,下列主體即可在貴組織中取得角色:

  • 與 Google Workspace 客戶 ID 相關聯的所有網域中的所有身分
  • 貴組織中的所有員工身分集區
  • 組織中任何專案的所有服務帳戶和 workload identity pool
  • 與組織中資源相關聯的所有服務代理。

您可以透過兩種方式,取得網域限制限制條件使用的 Google Workspace 客戶 ID:

gcloud

您可以使用 gcloud organizations list 指令,查看您具備 resourcemanager.organizations.get 權限的所有組織:

gcloud organizations list

這個指令會傳回 DISPLAY_NAME、ID (組織 ID) 和 DIRECTORY_CUSTOMER_ID。Google Workspace 客戶 ID 為 DIRECTORY_CUSTOMER_ID。

API

您可以使用 Google Workspace Directory API 擷取 Google Workspace 客戶 ID。

以 Google Workspace 管理員身分登入後,您可以造訪 Customers: get API 方法說明文件,然後按一下「Execute」。授權後,回應會顯示您的客戶 ID。

或者,您也可以使用 API 用戶端:

  1. 取得 https://www.googleapis.com/auth/admin.directory.customer.readonly 範圍的 OAuth 存取權杖。
  2. 執行下列指令,查詢 Google Workspace Directory API:

    curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \
    -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
    

此指令將回傳包括客戶資訊的 JSON 回應。Google Workspace 客戶 ID 為 id。

設定網域限定共用機制的例外狀況

部分 Google Cloud 服務會使用服務帳戶、服務代理和其他帳戶,代表您執行動作。網域限制共用功能可能會導致這些帳戶無法自動取得所需的 IAM 角色,進而造成某些動作失敗。

下表列出 Google Cloud 中可能受網域限制共用影響的操作。此外,也會列出需要自動授予角色的帳戶,以便成功執行這些動作。

如果您使用自訂組織政策或 iam.managed.allowedPolicyMembers 代管限制,實施網域限制共用功能,建議將這些帳戶新增為網域限制共用限制的例外狀況。如要將帳戶新增為例外狀況,請將帳戶的主體 ID 新增至允許的成員清單。

如果您使用 iam.allowedPolicyMemberDomains 舊版代管限制來實施網域限制共用,則可能需要強制授予帳戶存取權,這些帳戶才能執行列出的動作。

動作 主體 ID
為帳單帳戶啟用 BigQuery 記錄檔接收器 serviceAccount:bUNIQUE_ID@gcp-sa-logging.iam.gserviceaccount.com
啟用儲存空間存取記錄功能 serviceAccount:cloud-storage-analytics@google.com
使用 Pub/Sub 做為 Google Chat 應用程式的端點 serviceAccount:chat-api-push@system.gserviceaccount.com
使用 Pub/Sub 接收 Google Play 的即時開發人員通知 serviceAccount:google-play-developer-notifications@system.gserviceaccount.com
使用 Pub/Sub 接收 Cloud Billing 預算快訊 serviceAccount:billing-budget-alert@system.gserviceaccount.com
使用 Pub/Sub 接收 Cloud Billing 費用異常快訊 serviceAccount:cloud-billing-finops-alert@system.gserviceaccount.com
搭配使用經簽署的網址和 Cloud CDN serviceAccount:service-PROJECT_NUMBER@cloud-cdn-fill.iam.gserviceaccount.com
搭配 Cloud CDN 使用私人來源驗證 serviceAccount:service-PROJECT_NUMBER@https-lb.iam.gserviceaccount.com

Cloud Run 公開服務

Cloud Run 可讓您公開服務。不過,如果您實施網域限制共用,組織外部的使用者就無法存取公開的 Cloud Run 服務。

如要允許使用者存取公開 Cloud Run 服務,您必須停用 Cloud Run 服務的 Cloud Run 叫用者 IAM 檢查。詳情請參閱「停用服務的 Cloud Run 叫用者」。

公開分享其他資料

如果您使用自訂組織政策實施網域限制共用,可以在組織政策中新增例外狀況,允許公開共用資料。

公開共用資料涉及特殊主體 allUsers 和 allAuthenticatedUsers。如果在使用網域限制共用功能時,需要公開共用資料,則必須為這些主體新增例外狀況。只有在使用自訂組織政策實施網域限制共用時,才能新增例外狀況。

如要為 allUsers 和 allAuthenticatedUsers 新增例外狀況,請根據資源標記建立條件式自訂組織政策。

  1. 在組織資源上建立標記鍵。

    gcloud resource-manager tags keys create allUsersIngress \
      --parent=organizations/ORGANIZATION_ID
    

    將 ORGANIZATION_ID 替換為組織 ID。

  2. 為建立的標記鍵建立標記值。

    gcloud resource-manager tags values create True \
    --parent=ORGANIZATION_ID/allUsersIngress \
    --description="Allow allUsers to access internal Cloud Run services"
    
  3. 將標記附加至要公開共用的資源。

  4. 在限制的條件運算式中使用 memberSubjectMatches CEL 函式,建立自訂限制。

    舉例來說,下列條件運算式會限制角色授予對象,僅限貴組織 allUsers 和 allAuthenticatedUsers 的成員:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowInternalAndSpecialIdentitiesOnly
    resourceTypes: iam.googleapis.com/AllowPolicy
    methodTypes:
      - CREATE
      - UPDATE
    condition:
      "resource.bindings.all(
        binding,
        binding.members.all(member,
          (
            MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID'])
            ||
            MemberSubjectMatches(member, ['allUsers', 'allAuthenticatedUsers'])
          )
        )
      )"
    actionType: ALLOW
    displayName: Only allow organization members, allusers, and allAuthenticatedUsers to be granted roles
    
  5. 建立強制執行自訂限制的組織政策。

    name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
    spec:
      rules:
      - allowAll: true
        condition:
          expression: resource.matchTag("ORGANIZATION_ID/allUsersIngress", "True")
          title: allowAllUsersIngress
    
  6. 強制執行組織政策。

    gcloud org-policies set-policy POLICY_PATH
    

    將 POLICY_PATH 替換為組織政策的路徑和檔案名稱。

條件式組織政策可讓您將標記為 allUsersIngress: true 的資源權限授予 allUsers 身分。

帳戶強制存取

如果您需要強制執行違反網域限制的專案帳戶存取:

  1. 移除包含網域限制的組織政策。

  2. 授予帳戶存取專案的權限。

  3. 再次實施具有網域限制條件的組織政策。

或者,您也可以將存取權授予包含相關服務帳戶的 Google 群組:

  1. 在允許的網域中建立 Google 群組。

  2. 使用 Google Workspace 管理員面板關閉該群組的網域限制。

  3. 將服務帳戶新增至群組。

  4. 在允許政策中,授予 Google 群組存取權。