이 페이지에서는 조직 정책 설정을 분석하여 어떤 리소스가 어떤 조직 정책에 해당하는지 확인하는 방법을 보여줍니다. 조직 정책용 정책 분석자를 사용하면 분석 쿼리를 만들어 커스텀 및 사전 정의된 조직 정책에 대한 정보를 가져올 수 있습니다.
분석 쿼리는 범위와 제약조건으로 구성됩니다.
- 제약조건: 제약조건의 리소스 이름을 지정합니다.
- 범위: 분석 범위를 지정할 조직을 지정합니다. 이 범위에 정의된 제약조건이 있는 모든 조직 정책이 분석에 포함됩니다.
조직 정책에 대한 자세한 내용은 조직 정책 서비스 소개를 참조하세요. 커스텀 제약조건을 만드는 방법에 대한 자세한 내용은 커스텀 제약조건 만들기 및 관리를 참조하세요.
시작하기 전에
Cloud Asset API 사용 설정
쿼리를 전송하는 데 사용되는 프로젝트 또는 조직에서 API를 사용 설정해야 합니다. 이것은 쿼리 범위를 지정하는 리소스와 동일할 필요가 없습니다.
필수 역할 및 권한
조직 정책 분석을 실행하는 데 필요한 권한을 얻으려면 관리자에게 분석을 수행할 조직 리소스에 다음 IAM 역할을 부여해 달라고 요청하세요.
- 분석 수행:
Cloud 애셋 뷰어(
roles/cloudasset.viewer
) - 커스텀 제약조건 보기:
조직 정책 뷰어(
roles/orgpolicy.policyViewer
)
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 조직 정책 분석을 실행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
조직 정책 분석을 실행하려면 다음 권한이 필요합니다.
-
분석을 수행하려면 다음 안내를 따르세요.
-
cloudasset.assets.analyzeOrgPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
-
커스텀 제약조건을 보려면 다음 안내를 따르세요.
orgpolicy.customConstraints.get
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
구성된 정책 분석
제약조건 및 해당 제약조건이 적용되는 선택적 조건으로부터 조직 정책이 형성됩니다. 정책 분석자를 사용하여 특정 제약조건이 있는 조직 정책 및 해당 정책이 연결된 리소스의 목록을 반환할 수 있습니다.
정책 분석자는 쿼리 범위에서 감지된 각 조직 정책에 대해 결과 항목을 반환합니다. 결과 항목에는 다음 필드가 포함됩니다.
consolidatedPolicy
: 조직 정책이 연결된 리소스 및 계층 구조 평가 규칙을 기준으로 해당 리소스에 적용되는 유효한 정책입니다.folders
: 조직 정책이 연결된 리소스의 상위 항목인 폴더 리소스의 ID입니다.organization
: 조직 정책이 연결된 리소스의 상위 항목인 조직 리소스의 ID입니다.policyBundle
: 위의 리소스에 연결된 완전히 구성된 조직 정책 및 리소스 계층 구조에서 상위에 정의된 조직 정책입니다.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
조직 정책 분석 섹션에서 내 조직의 리소스에 대한 조직 정책 구성 방법이라는 창을 찾고 이 창에서 쿼리 만들기를 클릭합니다.
쿼리 조직 선택 상자에서 조직 정책을 분석하려는 조직을 선택합니다.
분석할 제약조건 유형을 선택합니다. 사전 정의된 제약조건의 경우 기본 제공 제약조건을 선택합니다. 커스텀 제약조건의 경우 커스텀 제약조건을 선택합니다.
분석할 제약조건의 이름을 입력합니다. 분석 중인 제약조건 유형의 프리픽스는 이미 포함됩니다. 예를 들어 사전 정의된 도메인 제한 제약조건의 경우
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"
은 프로젝트 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 메서드 및 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"
은 프로젝트 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
: 조직 정책이 연결된 컨테이너 및 계층 구조 평가 규칙을 기준으로 해당 컨테이너에 적용되는 유효한 정책입니다.fullResourceName
: 컨테이너의 전체 이름입니다.parent
: 이 컨테이너의 상위 항목의 전체 리소스 이름입니다.policyBundle
: 컨테이너에 직접 구성된 조직 정책(있는 경우) 및 리소스 계층 구조에서 컨테이너 상위에 정의된 조직 정책입니다.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
조직 정책 분석 섹션에서 조직 정책 제약조건이 적용된 컨테이너라는 창을 찾고 이 창에서 쿼리 만들기를 클릭합니다.
쿼리 조직 선택 상자에서 조직 정책을 분석하려는 조직을 선택합니다.
분석할 제약조건 유형을 선택합니다. 사전 정의된 제약조건의 경우 기본 제공 제약조건을 선택합니다. 커스텀 제약조건의 경우 커스텀 제약조건을 선택합니다.
분석할 제약조건의 이름을 입력합니다. 분석 중인 제약조건 유형의 프리픽스는 이미 포함됩니다. 예를 들어 사전 정의된 도메인 제한 제약조건의 경우
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"
은 조직 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 메서드 및 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"
은 조직 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 리소스 또는 Identity and Access Management(IAM) 허용 정책입니다. 정책 분석자를 사용하면 특정 제약조건이 적용된 조직 정책이 있는 모든 애셋 목록을 반환할 수 있습니다. 커스텀 제약조건과 다음과 같은 사전 정의된 제약조건이 지원됩니다.
storage.uniformBucketLevelAccess
iam.disableServiceAccountKeyCreation
iam.allowedPolicyMemberDomains
compute.vmExternalIpAccess
appengine.enforceServiceAccountActAsCheck
gcp.resourceLocations
compute.trustedImageProjects
compute.skipDefaultNetworkCreation
compute.requireOsLogin
compute.disableNestedVirtualization
정책 분석자는 각 애셋의 전체 이름, 계층 구조에서 애셋의 상위 요소, 계층 구조에서 해당 애셋 위에 있는 모든 상위 프로젝트, 폴더, 조직 리소스를 반환합니다.
정책 분석자는 쿼리 범위에서 감지된 각 애셋에 대해 결과 항목을 반환합니다.
리소스의 결과 항목에는 다음 필드가 포함됩니다.
consolidatedPolicy
: 조직 정책이 연결된 리소스 및 계층 구조 평가 규칙을 기준으로 해당 리소스에 적용되는 유효한 정책입니다.folders
: 조직 정책이 연결된 리소스를 포함하는 폴더 리소스의 ID입니다.fullResourceName
: 리소스의 전체 리소스 이름입니다.organization
: 리소스가 포함된 조직의 상대적 리소스 이름입니다.parent
: 리소스의 상위 항목에 대한 전체 리소스 이름입니다.project
: 리소스가 포함된 프로젝트의 ID입니다.policyBundle
: 위의 리소스에 연결된 완전히 구성된 조직 정책 및 리소스 계층 구조에서 상위에 정의된 조직 정책입니다.
허용 정책의 결과 항목에는 다음 필드가 포함됩니다.
consolidatedPolicy
: 조직 정책이 연결된 리소스 및 계층 구조 평가 규칙을 기준으로 해당 리소스에 적용되는 유효한 정책입니다.attachedResource
: 허용 정책이 연결된 리소스의 전체 이름입니다.folders
: 허용 정책을 포함하는 폴더의 상대적 리소스 이름입니다.organization
: 허용 정책이 포함된 조직의 상대적 리소스 이름입니다.policy
: 허용 정책입니다.project
: 허용 정책이 포함된 프로젝트의 상대적 리소스 이름입니다.policyBundle
: 위의 리소스에 연결된 완전히 구성된 조직 정책 및 리소스 계층 구조에서 상위에 정의된 조직 정책입니다.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
조직 정책 분석 섹션에서 조직 정책 제약조건이 적용된 애셋이라는 창을 찾고 이 창에서 쿼리 만들기를 클릭합니다.
쿼리 조직 선택 상자에서 조직 정책을 분석하려는 조직을 선택합니다.
분석할 제약조건 유형을 선택합니다. 사전 정의된 제약조건의 경우 기본 제공 제약조건을 선택합니다. 커스텀 제약조건의 경우 커스텀 제약조건을 선택합니다.
분석할 제약조건의 이름을 입력합니다. 분석 중인 제약조건 유형의 프리픽스는 이미 포함됩니다. 예를 들어 사전 정의된 버킷 수준의 액세스 제약조건의 경우
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" } } }
다음 단계
- 제약조건 사용 자세히 알아보기
- 커스텀 제약조건을 만들고 관리하는 방법 알아보기