このページでは、組織のポリシー設定を分析して、どのリソースがどの組織のポリシーの対象となるかを調べる方法について説明します。組織のポリシーに Policy Analyzer を使用すると、分析クエリを作成して、カスタムおよび事前定義の組織のポリシーの両方に関する情報を取得できます。
分析クエリはスコープと制約で構成されます。
- 制約: 制約のリソース名を指定します。
- スコープ: 分析の対象となる組織を指定します。このスコープで定義された所定の制約を持つすべての組織ポリシーが分析に含まれます。
組織のポリシーの詳細については、組織ポリシー サービスの概要をご覧ください。カスタム制約の作成方法については、カスタム制約の作成と管理をご覧ください。
始める前に
Cloud Asset API を有効にします。
クエリの送信に使用するプロジェクトまたは組織で API を有効にする必要があります。これは、クエリのスコープを設定するのと同じリソースにする必要はありません。
必要なロールと権限
組織ポリシーの分析を実行するために必要な権限を取得するには、分析を行う組織リソースに対して次の IAM ロールを付与するよう管理者に依頼してください。
-
分析を行うには: クラウド アセット閲覧者(
roles/cloudasset.viewer
) -
カスタム制約を表示するには: 組織のポリシー閲覧者(
roles/orgpolicy.policyViewer
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
これらの事前定義ロールには、組織ポリシーの分析を実行するために必要な権限が含まれています。必要な権限を正確に確認するには、[必要な権限] セクションを開いてください。
必要な権限
組織のポリシー分析を実行するには、次の権限が必要です。
-
分析を行うには:
-
cloudasset.assets.analyzeOrgPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
-
カスタム制約を表示するには:
orgpolicy.customConstraints.get
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
構成されているポリシーの分析
組織のポリシーは、制約と、その制約が適用されるオプションの条件から構築されます。Policy Analyzer を使用して、特定の制約を持つ組織ポリシーのリストと、それらのポリシーが適用されるリソースを返すことができます。
クエリのスコープで検出された組織ポリシーごとに、Policy Analyzer は結果エントリを返します。結果のエントリには次のフィールドが含まれます。
consolidatedPolicy
: 組織ポリシーが接続されているリソース、および階層評価ルールに関してそのリソースに実際に適用されるポリシー。folders
: 組織ポリシーが適用されるリソースの祖先であるフォルダ リソースの ID。organization
: 組織ポリシーが適用されるリソースの祖先である組織リソースの ID。policyBundle
: 上記のリソースに接続された、完全に構成された組織ポリシーと、リソース階層の祖先で定義された組織ポリシー。
コンソール
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[組織のポリシーを分析する] セクションで、[組織内のリソースに対して組織のポリシーはどのように構成されますか?] というペインを見つけ、そのペインで [クエリを作成] をクリックします。
[クエリ組織を選択] ボックスで、組織のポリシーを分析する組織を選択します。
分析する制約のタイプを選択します。事前定義の制約の場合は、[組み込み制約] を選択します。カスタム制約の場合は、[カスタム制約] を選択します。
分析する制約の名前を入力します。分析する制約のタイプには、すでに接頭辞が含まれています。たとえば、事前定義されたドメイン制限の制約の場合は「
iam.allowedPolicyMemberDomains
」と入力し、カスタム制約の場合は名前を入力します(例:disableGkeAutoUpgrade
)。[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、この制約が直接適用されているすべてのリソースの結果テーブルが表示されます。
gcloud
組織ポリシーの制約が組織内でどのように適用されるかを分析するには、gcloud beta asset analyze-org-policies
コマンドを使用します。
gcloud beta 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"
はプロジェクト ID1234567890
のプロジェクトに接続されているポリシーのみを返します。
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 メソッドと URL:
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"
はプロジェクト ID1234567890
のプロジェクトに接続されているポリシーのみを返します。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": {} } } }
コンテナを分析する
このコンテキストのコンテナは、プロジェクト、フォルダ、または組織リソースです。
Policy Analyzer を使用して、特定の制約が適用された組織のポリシーを持つすべてのコンテナのリストを返すことができます。
Policy Analyzer は、各コンテナの完全な名前と、階層内のコンテナの親も返します。
クエリのスコープで検出されたコンテナごとに、Policy Analyzer は結果エントリを返します。結果のエントリには次のフィールドが含まれます。
consolidatedPolicy
: 組織ポリシーが接続されているコンテナ、および階層評価ルールに関してそのコンテナに実際に適用されるポリシー。fullResourceName
: コンテナの完全な名前。parent
: このコンテナの親の完全なリソース名。policyBundle
: コンテナに直接構成されている組織のポリシー(存在する場合)と、リソース階層でコンテナの祖先で定義された組織のポリシー。
コンソール
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[組織のポリシーを分析する] セクションで、[組織のポリシーの成約が適用されているコンテナはどれですか?] というペインを見つけ、そのペインで [クエリを作成] をクリックします。
[クエリ組織を選択] ボックスで、組織のポリシーを分析する組織を選択します。
分析する制約のタイプを選択します。事前定義の制約の場合は、[組み込み制約] を選択します。カスタム制約の場合は、[カスタム制約] を選択します。
分析する制約の名前を入力します。分析する制約のタイプには、すでに接頭辞が含まれています。たとえば、事前定義されたドメイン制限の制約の場合は「
iam.allowedPolicyMemberDomains
」と入力し、カスタム制約の場合は名前を入力します(例:disableGkeAutoUpgrade
)。[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、この制約が適用または継承されたすべてのコンテナの結果テーブルが表示されます。
gcloud
組織ポリシーの制約が組織内のコンテナにどのように適用されるかを分析するには、gcloud beta asset analyze-org-policy-governed-containers
コマンドを使用します。
gcloud beta 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"
は、組織 ID012345678901
を持つ組織の子であるコンテナのみを返します。
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 メソッドと URL:
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"
は、組織 ID012345678901
を持つ組織の子であるコンテナのみを返します。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 リソースまたは Identity and Access Management(IAM)許可ポリシーです。Policy Analyzer を使用して、特定の制約が適用された組織のポリシーを持つすべてのアセットのリストを返すことができます。カスタム制約と次の事前定義された制約がサポートされています。
storage.uniformBucketLevelAccess
iam.disableServiceAccountKeyCreation
iam.allowedPolicyMemberDomains
compute.vmExternalIpAccess
appengine.enforceServiceAccountActAsCheck
gcp.resourceLocations
compute.trustedImageProjects
compute.skipDefaultNetworkCreation
compute.requireOsLogin
compute.disableNestedVirtualization
Policy Analyzer は、各アセットの完全な名前、階層内でのアセットの親、階層内でのアセットより上位にある祖先プロジェクト、フォルダ、組織リソースを返します。
クエリのスコープで検出されたアセットごとに、Policy Analyzer は結果エントリを返します。
リソースの結果エントリには、次のフィールドがあります。
consolidatedPolicy
: 組織ポリシーが接続されているリソース、および階層評価ルールに関してそのリソースに実際に適用されるポリシー。folders
: 組織ポリシーが接続されているリソースを含むフォルダ リソースの ID。fullResourceName
: リソースの完全な名前。organization
: リソースを含む組織の相対的なリソース名。parent
: リソースの親の完全な名前。project
: リソースを含むプロジェクトの ID。policyBundle
: 上記のリソースに接続された、完全に構成された組織ポリシーと、リソース階層の祖先で定義された組織ポリシー。
許可ポリシーの結果エントリには次のフィールドが含まれます。
consolidatedPolicy
: 組織ポリシーが接続されているリソース、および階層評価ルールに関してそのリソースに実際に適用されるポリシー。attachedResource
: 許可ポリシーが接続されているリソースの完全な名前。folders
: 許可ポリシーを含むフォルダの相対的なリソース名。organization
: 許可ポリシーを含む組織の相対的なリソース名。policy
: 許可ポリシー。project
: 許可ポリシーを含むプロジェクトの相対的なリソース名。policyBundle
: 上記のリソースに接続された、完全に構成された組織ポリシーと、リソース階層の祖先で定義された組織ポリシー。
コンソール
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[組織のポリシーを分析する] セクションで、[組織のポリシーの成約が適用されているアセットはどれですか?] というペインを見つけ、そのペインで [クエリを作成] をクリックします。
[クエリ組織を選択] ボックスで、組織のポリシーを分析する組織を選択します。
分析する制約のタイプを選択します。事前定義の制約の場合は、[組み込み制約] を選択します。カスタム制約の場合は、[カスタム制約] を選択します。
分析する制約の名前を入力します。分析する制約のタイプには、すでに接頭辞が含まれています。たとえば、事前定義されたバケットレベルのアクセス制約の場合は、「
storage.uniformBucketLevelAccess
」と入力します。カスタム制約の場合は、名前を入力します(例:disableGkeAccess
)。[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、この制約が適用または継承されたすべてのアセットの結果テーブルが表示されます。
gcloud
組織ポリシーの制約が組織内のアセットにどのように適用されるかを分析するには、gcloud beta asset analyze-org-policy-governed-assets
コマンドを使用します。
gcloud beta 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.folders
、governed_resource.project
、governed_iam_policy.folders
、governed_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 メソッドと URL:
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.folders
、governed_resource.project
、governed_iam_policy.folders
、governed_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" } } }
次のステップ
- 制約の使用について詳細を学習する。
- カスタム制約の作成と管理の方法を学習する。