分析機構政策

本頁面提供相關資訊,說明如何分析機構政策設定,瞭解哪些資源適用哪些機構政策。您可以使用機構政策的政策分析器建立分析查詢,取得自訂和預先定義機構政策的相關資訊。

分析查詢由範圍和限制條件組成。

  • 限制:指定限制的資源名稱。
  • 範圍:指定機構,以限定分析範圍。凡是在這個範圍內定義指定限制的機構政策,都會納入分析。

  • 如要進一步瞭解機構政策,請參閱機構政策服務簡介

  • 如要進一步瞭解如何建立自訂限制,請參閱「建立及管理自訂限制」一文。

  • 如要進一步瞭解代管限制,請參閱「使用限制」一文。

事前準備

必要角色和權限

如要取得執行組織政策分析所需的權限,請要求管理員在您要進行分析的機構資源中,授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色具備執行機構政策分析所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要執行組織政策分析,必須具備下列權限:

  • 如要進行分析,請按照下列步驟操作:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • 如要查看自訂和受管理限制: orgpolicy.customConstraints.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

定價與配額

大規模機構政策適用的政策分析器 (每個機構每天超過 20 項查詢) 和繼承視覺化功能,僅適用於在機構層級啟用 Security Command Center 的客戶。

機構政策的政策分析工具配額,會與所有政策分析工具共用。詳情請參閱帳單問題

分析已設定的政策

機構政策是由限制和選用條件所組成,這些條件會決定限制的強制執行方式。您可以使用 Policy Analyzer 傳回有特定限制的機構政策清單,以及附加這些政策的資源。

對於查詢範圍內偵測到的每項組織政策,Policy Analyzer 都會傳回結果項目。結果項目包含下列欄位:

  • consolidatedPolicy:機構政策所附加的資源,以及根據階層評估規則對該資源強制執行的有效政策。

  • project:這個合併政策所屬的專案資源 ID。

  • folders:任何資料夾資源的 ID,這些資源是機構政策所連結資源的祖先。

  • organization:機構資源的 ID,該資源是機構政策所連結資源的祖先。

  • policyBundle:附加至上述資源的完整設定機構政策,以及在資源階層中對其祖先定義的機構政策。

如果資源受到 VPC Service Controls 服務範圍保護,您必須在機構資源的範圍中建立輸出規則,允許存取 cloudasset.googleapis.com 服務和 google.cloud.asset.v1.AssetService.SearchAllResources 方法。如果沒有輸出規則,要求會失敗並顯示 NETWORK_NOT_IN_SAME_SERVICE_PERIMETER 錯誤。詳情請參閱「偵錯 VPC Service Controls 封鎖的要求」。

控制台

  1. 前往 Google Cloud 控制台的「Policy Analyzer」頁面。

    前往 Policy Analyzer

  2. 在「分析機構政策」部分中,找到標示為「哪裡已設定特定機構政策?」的窗格,然後按一下該窗格中的「建立查詢」

  3. 在「選取查詢機構」方塊中,選取要分析機構政策的機構。

  4. 選取要分析的限制類型。如為預先定義或代管的限制,請選取「內建限制」。 如要使用自訂限制,請選取「自訂限制」

  5. 輸入要分析的限制名稱。您要分析的限制類型前置字元已包含在內。舉例來說,如果是預先定義的網域限制條件,請輸入 iam.allowedPolicyMemberDomains;如果是服務帳戶建立管理限制條件,請輸入 iam.managed.disableServiceAccountKeyCreation;如果是自訂限制條件,請輸入其名稱,例如 disableGkeAutoUpgrade

  6. 按一下「分析」,然後按一下「執行查詢」。報表頁面會顯示您輸入的查詢參數,以及直接套用這項限制的所有資源結果表格。

  7. 如要儲存這項查詢,以便日後再次查看,請按一下「複製查詢網址」。 如要查看這項查詢,請前往產生的網址。

  8. 如要查看所分析限制的繼承情形,請從清單中選取至少一項資源,然後按一下「查看繼承情形」。建立分析查詢時,您也可以按一下「分析」,然後按一下「視覺化」,立即前往視覺化檢視畫面。詳情請參閱「查看繼承關係」。

gcloud

如要分析機構政策限制在機構內的強制執行方式,請使用 gcloud asset analyze-org-policies 指令

gcloud asset analyze-org-policies \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_POLICIES \
    --filter=FILTER_QUERY

更改下列內容:

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • LIMIT_POLICIES:要查看的結果項目數量。如要查看無限數量的項目,請輸入 unlimited

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的政策。篩選條件僅適用於 consolidated_policy.attached_resource 欄位。舉例來說,consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" 只會傳回附加至專案的政策,且專案 ID 為 1234567890

YAML 回應類似於下列內容:

YAML 回應範例

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

如要分析機構政策限制在機構內強制執行的情形,請使用 Cloud Asset API 的 analyzeOrgPolicies 方法

HTTP 方法和網址:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicies

JSON 要求內文:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

更改下列內容:

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的政策。篩選條件僅適用於 consolidated_policy.attached_resource 欄位。舉例來說,consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" 只會傳回附加至專案的政策,且專案 ID 為 1234567890

  • PAGE_SIZE:您想查看的每頁結果項目數。如要查看無限數量的項目,請輸入 unlimited。如果結果項目的總數大於 PAGE_SIZE,使用這個旗標提出的要求會傳回 nextPageToken 值。

  • PAGE_TOKEN:只能在包含 page_size 旗標的第一個要求之後,針對要求設定。您可以使用先前回應中收到的 nextPageToken 值,傳回特定頁面的結果。

JSON 回應類似於下列內容:

JSON 回應範例

{
  "orgPolicyResults": [
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          },
          {
            "values": {
              "allowedValues": [
                "C03kd36xr"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C03kd36xr"
                ]
              }
            }
          ],
          "inheritFromParent": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    },
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/iam.allowedPolicyMemberDomains",
      "displayName": "Domain restricted sharing",
      "description": "This list constraint defines one or more Cloud Identity or Google Workspace customer IDs whose principals can be added to IAM policies. \u003cbr\u003eBy default, all user identities are allowed to be added to IAM policies. Only allowed values can be defined in this constraint, denied values are not supported. \u003cbr\u003eIf this constraint is active, only principals that belong to the allowed customer IDs can be added to IAM policies.",
      "constraintDefault": "ALLOW",
      "listConstraint": {}
    }
  }
}

分析容器

在此情境中,容器是指專案、資料夾或機構資源。您可以使用政策分析工具,傳回已強制執行特定限制的機構政策的所有容器清單。政策分析工具也會傳回每個容器的完整名稱、階層結構中的容器父項,以及容器繼承或附加的標記。

對於查詢範圍內偵測到的每個容器,政策分析工具都會傳回結果項目。結果項目包含下列欄位:

  • consolidatedPolicy:機構政策所附加的容器,以及根據階層評估規則對該容器強制執行的有效政策。

  • conditionEvaluation:如果納入的條件導致強制執行機構政策,則 evaluationValueTRUE。如果條件導致機構政策無法強制執行,evaluationValue 會是 FALSE。如果機構政策強制執行的資源不支援條件,系統會傳回條件本身。

  • effectiveTags:直接附加至容器或由容器繼承的所有代碼,以及階層中容器的父項。

  • folders:包含機構政策所連結容器的任何資料夾資源 ID。

  • fullResourceName:容器的完整名稱。

  • organization:機構資源的 ID,是機構政策所連結容器的祖先。

  • parent:這個容器父項的完整資源名稱。

  • policyBundle:直接在容器上設定的機構政策 (如有),以及在資源階層中容器的祖先上定義的機構政策。

  • project:機構政策所附加容器的 ID (如果是專案資源)。

如果資源受到 VPC Service Controls 服務範圍保護,您必須在機構資源的範圍中建立輸出規則,允許存取 cloudasset.googleapis.com 服務和 google.cloud.asset.v1.AssetService.SearchAllResources 方法。如果沒有輸出規則,要求會失敗並顯示 NETWORK_NOT_IN_SAME_SERVICE_PERIMETER 錯誤。詳情請參閱「偵錯 VPC Service Controls 封鎖的要求」。

控制台

  1. 前往 Google Cloud 控制台的「Policy Analyzer」頁面。

    前往 Policy Analyzer

  2. 在「分析機構政策」部分,找出標示為「哪些專案或資料夾受機構政策限制的影響?」的窗格,然後點選該窗格中的「建立查詢」

  3. 在「選取查詢機構」方塊中,選取要分析機構政策的機構。

  4. 選取要分析的限制類型。如為預先定義或受管理的限制,請選取「內建限制」。如要使用自訂限制,請選取「自訂限制」

  5. 輸入要分析的限制名稱。您要分析的限制類型前置字元已包含在內。舉例來說,如果是預先定義的網域限制條件,請輸入 iam.allowedPolicyMemberDomains;如果是服務帳戶建立管理限制條件,請輸入 iam.managed.disableServiceAccountKeyCreation;如果是自訂限制條件,請輸入其名稱,例如 disableGkeAutoUpgrade

  6. 按一下 [Run query] (執行查詢)。報表頁面會顯示您輸入的查詢參數,以及所有受限或繼承此限制的容器結果表。

  7. 如要儲存這項查詢,以便日後再次查看,請按一下「複製查詢網址」。 如要查看這項查詢,請前往產生的網址。

  8. 如要查看所分析限制的繼承情形,請從清單中選取至少一個容器,然後按一下「查看繼承情形」。建立分析查詢時,您也可以按一下「分析」,然後按一下「視覺化」,立即前往視覺化檢視畫面。詳情請參閱「查看繼承關係」。

gcloud

如要分析機構政策限制在機構內容器的強制執行情形,請使用 gcloud asset analyze-org-policy-governed-containers 指令

gcloud asset analyze-org-policy-governed-containers \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_CONTAINERS \
    --filter=FILTER_QUERY

更改下列內容:

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • LIMIT_CONTAINERS:要查看的結果項目數量。如要查看無限數量的項目,請輸入 unlimited

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的容器。篩選條件僅適用於 parent 欄位。舉例來說,parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" 只會傳回機構的子項容器,且機構 ID 為 012345678901

YAML 回應類似於下列內容:

YAML 回應範例

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/donghe-project1
parent: //cloudresourcemanager.googleapis.com/folders/86513245445
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  inheritFromParent: true
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  rules:
  - denyAll: true
fullResourceName: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
parent: //cloudresourcemanager.googleapis.com/organizations/474566717491
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  inheritFromParent: true
  rules:
  - denyAll: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
parent: //cloudresourcemanager.googleapis.com/folders/666681422980
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1

REST

如要分析機構政策限制在機構內容器的強制執行情形,請使用 Cloud Asset API 的 analyzeOrgPolicyGovernedContainers 方法

HTTP 方法和網址:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedContainers

JSON 要求內文:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': '"FILTER_QUERY"',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

更改下列內容:

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的容器。篩選條件僅適用於 parent 欄位。舉例來說,parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" 只會傳回機構的子項容器,且機構 ID 為 012345678901

  • PAGE_SIZE:要查看的結果項目頁數。如要查看無限數量的項目,請輸入 unlimited。如果結果項目的總數大於 PAGE_SIZE,使用這個旗標提出的要求會傳回 nextPageToken 值。

  • PAGE_TOKEN:只能在包含 page_size 旗標的第一個要求之後,針對要求設定。您可以使用先前回應中收到的 nextPageToken 值,傳回特定頁面的結果。

JSON 回應類似於下列內容:

JSON 回應範例

{
  "governedContainers": [
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    },
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-1",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/compute.requireOsLogin",
      "displayName": "Require OS Login",
      "description": "This boolean constraint, when set to \u003ccode\u003etrue\u003c/code\u003e, enables OS Login on all newly created Projects. All VM instances created in new projects will have OS Login enabled. On new and existing projects, this constraint prevents metadata updates that disable OS Login at the project or instance level. \u003cbr\u003eBy default, the OS Login feature is disabled on Compute Engine projects.\u003cbr\u003eGKE instances in private clusters running node pool versions 1.20.5-gke.2000 and later support OS Login. GKE instances in public clusters do not currently support OS Login. If this constraint is applied to a Project running public clusters, GKE instances running in that Project may not function properly.",
      "constraintDefault": "ALLOW",
      "booleanConstraint": {}
    }
  }
}

分析資產

在此情境中,資產是指 Google Cloud 資源或身分與存取權管理 (IAM) 允許政策。您可以使用政策分析工具,傳回已強制執行特定限制的機構政策所套用的所有資產清單。系統支援自訂限制、代管限制和下列預先定義的限制:

  • constraints/ainotebooks.accessMode
  • constraints/ainotebooks.disableFileDownloads
  • constraints/ainotebooks.disableRootAccess
  • constraints/ainotebooks.disableTerminal
  • constraints/ainotebooks.environmentOptions
  • constraints/ainotebooks.requireAutoUpgradeSchedule
  • constraints/ainotebooks.restrictVpcNetworks
  • constraints/compute.disableGuestAttributesAccess
  • constraints/compute.disableInstanceDataAccessApis
  • constraints/compute.disableNestedVirtualization
  • constraints/compute.disableSerialPortAccess
  • constraints/compute.disableSerialPortLogging
  • constraints/compute.disableVpcExternalIpv6
  • constraints/compute.requireOsLogin
  • constraints/compute.requireShieldedVm
  • constraints/compute.restrictLoadBalancerCreationForTypes
  • constraints/compute.restrictProtocolForwardingCreationForTypes
  • constraints/compute.restrictXpnProjectLienRemoval
  • constraints/compute.setNewProjectDefaultToZonalDNSOnly
  • constraints/compute.skipDefaultNetworkCreation
  • constraints/compute.trustedImageProjects
  • constraints/compute.vmCanIpForward
  • constraints/compute.vmExternalIpAccess
  • constraints/gcp.detailedAuditLoggingMode
  • constraints/gcp.resourceLocations
  • constraints/iam.allowedPolicyMemberDomains
  • constraints/iam.automaticIamGrantsForDefaultServiceAccounts
  • constraints/iam.disableServiceAccountCreation
  • constraints/iam.disableServiceAccountKeyCreation
  • constraints/iam.disableServiceAccountKeyUpload
  • constraints/iam.restrictCrossProjectServiceAccountLienRemoval
  • constraints/iam.serviceAccountKeyExpiryHours
  • constraints/resourcemanager.accessBoundaries
  • constraints/resourcemanager.allowedExportDestinations
  • constraints/sql.restrictAuthorizedNetworks
  • constraints/sql.restrictNoncompliantDiagnosticDataAccess
  • constraints/sql.restrictNoncompliantResourceCreation
  • constraints/sql.restrictPublicIp
  • constraints/storage.publicAccessPrevention
  • constraints/storage.restrictAuthTypes
  • constraints/storage.uniformBucketLevelAccess

Policy Analyzer 會傳回每個資產的完整名稱、階層中的父項資產,以及階層中位於資產上方的任何上層專案、資料夾和機構資源。

對於查詢範圍中偵測到的每個資產,政策分析工具都會傳回結果項目。

資源的結果項目包含下列欄位:

  • consolidatedPolicy:機構政策所附加的資源,以及根據階層評估規則對該資源強制執行的有效政策。

  • conditionEvaluation:如果納入的條件導致強制執行機構政策,則 evaluationValueTRUE。如果條件導致機構政策無法強制執行,evaluationValue 會是 FALSE。如果機構政策強制執行的資源不支援條件,系統會傳回條件本身。

  • assetType:素材資源的資源類型。

  • effectiveTags:直接附加至或由資源沿用的所有標記,機構政策會附加至這些資源,以及階層中的資源父項。

  • folders:包含要附加機構政策之資源的任何資料夾資源 ID。

  • fullResourceName:資源的完整資源名稱。

  • organization:包含資源的機構相對資源名稱。

  • parent:資源父項的完整資源名稱。

  • project:包含資源的專案 ID。

  • policyBundle:附加至上述資源的完整設定機構政策,以及在資源階層中對其祖先定義的機構政策。

允許政策的結果項目包含下列欄位:

  • consolidatedPolicy:機構政策所附加的資源,以及根據階層評估規則對該資源強制執行的有效政策。

  • assetType:允許政策所附加的資源類型。

  • attachedResource:附加允許政策的資源完整名稱。

  • folders:包含允許政策的任何資料夾的相對資源名稱。

  • organization:包含允許政策的機構相對資源名稱。

  • policy:允許政策。

  • project:包含允許政策的專案相對資源名稱。

  • policyBundle:附加至上述資源的完整設定機構政策,以及在資源階層中對其祖先定義的機構政策。

如果資源受到 VPC Service Controls 服務範圍保護,您必須在機構資源的範圍中建立輸出規則,允許存取 cloudasset.googleapis.com 服務和 google.cloud.asset.v1.AssetService.SearchAllResources 方法。如果沒有輸出規則,要求會失敗並顯示 NETWORK_NOT_IN_SAME_SERVICE_PERIMETER 錯誤。詳情請參閱「偵錯 VPC Service Controls 封鎖的要求」。

控制台

  1. 前往 Google Cloud 控制台的「Policy Analyzer」頁面。

    前往 Policy Analyzer

  2. 在「分析機構政策」部分,找出標示為「哪些資源受機構政策限制的影響?」的窗格,然後按一下該窗格中的「建立查詢」

  3. 在「選取查詢機構」方塊中,選取要分析機構政策的機構。

  4. 選取要分析的限制類型。如為預先定義或代管的限制,請選取「內建限制」。如要使用自訂限制,請選取「自訂限制」

  5. 輸入要分析的限制名稱。您要分析的限制類型前置字元已包含在內。舉例來說,如果是預先定義的 bucket 層級存取限制,請輸入 storage.uniformBucketLevelAccess;如果是服務帳戶建立管理限制,請輸入 iam.managed.disableServiceAccountKeyCreation;如果是自訂限制,請輸入其名稱,例如 disableGkeAccess

  6. 按一下 [Run query] (執行查詢)。報表頁面會顯示您輸入的查詢參數,以及所有受限或繼承這項限制的資產結果表格。

  7. 如要儲存這項查詢,以便日後再次查看,請按一下「複製查詢網址」。 如要查看這項查詢,請前往產生的網址。

  8. 如要查看所分析限制的繼承情形,請從清單中選取至少一項資產,然後按一下「查看繼承情形」。建立分析查詢時,您也可以按一下「分析」,然後按一下「視覺化」,立即前往視覺化檢視畫面。詳情請參閱「查看繼承關係」。

gcloud

如要分析機構政策限制在機構資產上的強制執行方式,請使用 gcloud asset analyze-org-policy-governed-assets 指令

gcloud asset analyze-org-policy-governed-assets \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_ASSETS \
    --filter=FILTER_QUERY

更改下列內容:

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • LIMIT_ASSETS:要查看的結果項目數量。如要查看無限數量的項目,請輸入 unlimited

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的資產。可供篩選的欄位包括 governed_resource.foldersgoverned_resource.projectgoverned_iam_policy.foldersgoverned_iam_policy.project。舉例來說,governed_resource.project="projects/1234567890" 只會傳回附加至專案的資產,專案 ID 為 1234567890

YAML 回應類似於下列內容:

YAML 回應範例

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/513502730678
  - folders/666681422980
  fullResourceName: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1
  project: projects/892625391619
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/800636178739
  - folders/408342778736
  fullResourceName: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1
  project: projects/761097189269
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
- appliedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  attachedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  rules:
  - condition:
      description: cond-desc1
      expression: resource.matchTag("474566717491/env", "prod")
      title: cond-title1
    enforce: false
  - enforce: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
governedResource:
  fullResourceName: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup
  project: projects/896190383908
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

如要分析機構政策限制在機構內資產的強制執行情形,請使用 Cloud Asset API 的 analyzeOrgPolicyGovernedAssets 方法

HTTP 方法和網址:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedAssets

JSON 要求內文:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

更改下列內容:

  • ORGANIZATION_ID:機構資源的 ID。如要進一步瞭解如何找出機構 ID,請參閱「建立及管理機構」。

  • CONSTRAINT_NAME:要分析的機構政策限制名稱。如需限制清單,請參閱「組織政策限制」。

  • FILTER_QUERY:篩選查詢,只顯示符合篩選運算式的資產。可供篩選的欄位包括 governed_resource.foldersgoverned_resource.projectgoverned_iam_policy.foldersgoverned_iam_policy.project。舉例來說,governed_resource.project="projects/1234567890" 只會傳回附加至專案的資產,專案 ID 為 1234567890

  • PAGE_SIZE:要查看的結果項目頁數。如要查看無限數量的項目,請輸入 unlimited。如果結果項目的總數大於 PAGE_SIZE,使用這個旗標提出的要求會傳回 nextPageToken 值。

  • PAGE_TOKEN:只能在包含 page_size 旗標的第一個要求之後,針對要求設定。您可以使用先前回應中收到的 nextPageToken 值,傳回特定頁面的結果。

JSON 回應類似於下列內容:

JSON 回應範例

{
  "governedAssets": [
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1",
        "project": "projects/892625391619",
        "folders": [
          "folders/513502730678",
          "folders/666681422980"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
          "reset": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    },
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1",
        "project": "projects/761097189269",
        "folders": [
          "folders/800636178739",
          "folders/408342778736"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736",
          "rules": [
            {
              "enforce": false,
              "condition": {
                "expression": "resource.matchTag(\"474566717491/env\", \"prod\")",
                "title": "cond-title1",
                "description": "cond-desc1"
              }
            },
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    }
  ]
  "constraint": {
    "customConstraint": {
      "name": "organizations/474566717491/customConstraints/custom.disableGkeAutoUpgrade",
      "resourceTypes": [
        "container.googleapis.com/NodePool"
      ],
      "methodTypes": [
        "CREATE",
        "UPDATE"
      ],
      "condition": "resource.management.autoUpgrade == false",
      "actionType": "ALLOW",
      "displayName": "Disable GKE auto upgrade",
      "description": "Only allow GKE NodePool resource create or updates if AutoUpgrade is not enabled"
    }
  }
}

顯示繼承關係

如果您在機構層級啟用 Security Command Center 的 Premium 或 Enterprise 方案,可以使用 Google Cloud 控制台,以視覺化方式呈現您分析的機構政策繼承情形。

如要查看沿用情形的視覺化圖表,請為已設定的政策容器資產建立機構政策分析查詢。在「執行查詢分析」頁面中,按一下「分析」,然後選取「視覺化」

您也可以前往已儲存查詢的網址,選取要醒目顯示的資源,然後按一下 「查看繼承」

「資源繼承」頁面會顯示分析查詢中所選資源的資源階層架構:

資源階層結構中的機構政策沿用情形。 未強制執行的布林值政策視覺化。

  1. 指出資源是機構、資料夾或專案。

  2. 藍點表示資源已在查詢中選取。

  3. 指出資源會覆寫父項資源的政策。

  4. 表示資源會將該政策的機構政策重設為 Google 代管的預設政策。如果資源將政策重設為預設值,系統會以虛線將該資源連向上層資源。

  5. 指出資源會與父項合併政策。

  6. 表示這項資源的機構政策會強制執行布林限制,或是強制執行含有允許值的清單限制。

  7. 表示這項資源的機構政策是具有拒絕值的清單限制。

  8. 表示這項資源的機構政策是未強制執行的布林值限制。

後續步驟