프로젝트, 폴더, 조직의 조직 정책 통계 검토

이 페이지에서는 리소스 구성 및 사용에 대한 발견 항목인 조직 정책 통계를 관리하는 방법을 보여줍니다. 조직 정책 통계를 사용하면 조직 정책에 의해 보호되지 않는 리소스를 식별하는 데 도움이 됩니다.

조직 정책 통계는 경우에 따라 조직 정책 권장사항과 연결됩니다. 조직 정책 권장사항은 조직 정책 통계에서 식별된 문제를 해결하기 위해 취할 수 있는 작업을 추천합니다.

시작하기 전에

필요한 역할

조직 정책 통계를 보고 수정하는 데 필요한 권한을 얻으려면 관리자에게 통계를 관리하려는 리소스 (프로젝트, 폴더 또는 조직)에 대해 조직 정책 추천 관리자 (roles/recommender.orgPolicyAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 조직 정책 통계를 보고 수정하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

조직 정책 통계를 보고 수정하려면 다음 권한이 필요합니다.

  • recommender.orgPolicyInsights.get
  • recommender.orgPolicyInsights.list
  • recommender.orgPolicyInsights.update

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

조직 정책 통계 나열

프로젝트, 폴더 또는 조직의 모든 조직 정책 통계를 나열하려면 다음 방법 중 하나를 사용합니다.

gcloud

프로젝트, 폴더, 조직의 모든 조직 정책 통계를 확인하려면 gcloud recommender insights list 명령어를 사용하세요.

명령어를 실행하기 전에 다음 값을 바꿉니다.

  • RESOURCE_TYPE: 통계를 나열할 리소스 유형입니다. project, folder, 또는 organization 값을 사용합니다.
  • RESOURCE_ID: 통계를 나열할 프로젝트, 폴더, 또는 조직의 ID입니다.
gcloud recommender insights list --insight-type=google.orgpolicy.policy.Insight \
    --RESOURCE_TYPE=RESOURCE_ID \
    --location=global

출력에는 프로젝트, 폴더 또는 조직의 모든 조직 정책 통계가 나열됩니다. 예를 들면 다음과 같습니다.

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE                                          DESCRIPTION
66d543f3-845d-49d6-a26b-80d84804d8a8  SECURITY  ACTIVE         2024-12-10T08:00:00Z  HIGH      RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_CREATION  Scanned 3 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyCreation.

REST

Recommender API의 insights.list 메서드는 프로젝트, 폴더 또는 조직의 모든 조직 정책 통계를 나열합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 통계를 나열할 리소스 유형입니다. projects, folders, 또는 organizations 값을 사용합니다.
  • RESOURCE_ID: 통계를 나열할 프로젝트, 폴더, 또는 조직의 ID입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다.

HTTP 메서드 및 URL:

GET https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 프로젝트, 폴더, 조직에 대한 모든 조직 정책 통계가 나열됩니다. 예를 들면 다음과 같습니다.

[
  {
    "associatedRecommendations": [
      {
        "recommendation": "projects/123456789012/locations/global/recommenders/google.orgpolicy.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f"
      }
    ],
    "category": "SECURITY",
    "content": {
      "consolidatedPolicy": {
        "inheritFromParent": false,
        "name": "projects/123456789012/policies/iam.managed.disableServiceAccountKeyCreation",
        "policyRules": {
          "rules": [
            {
              "enforce": false
            }
          ]
        },
        "reset": false
      },
      "constraint": {
        "id": "constraints/iam.managed.disableServiceAccountKeyCreation",
        "name": "Disable service account key creation"
      },
      "evaluatedResources": [
        {
          "numOfResources": "2",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        },
        {
          "numOfResources": "1",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        }
      ],
      "violations": [
        {
          "numOfResources": "0",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        },
        {
          "numOfResources": "0",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        }
      ]
    },
    "description": "Scanned 3 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyCreation.",
    "etag": "\"9a1ad019022f9f56\"",
    "insightSubtype": "RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_CREATION",
    "lastRefreshTime": "2024-12-07T08:00:00Z",
    "name": "projects/123456789012/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/66d543f3-845d-49d6-a26b-80d84804d8a8",
    "observationPeriod": "86400s",
    "severity": "HIGH",
    "stateInfo": {
      "state": "ACTIVE",
      "stateMetadata": {
        "reviewedBy": "alice",
        "priority": "high"
      }
    },
    "targetResources": [
      "//cloudresourcemanager.googleapis.com/projects/123456789012"
    ]
  }
]

통계 구성요소에 대한 자세한 내용은 이 페이지의 조직 정책 통계 검토를 참고하세요.

단일 조직 정책 통계 가져오기

통계 설명, 상태, 관련 권장사항을 포함하여 단일 통계에 대한 자세한 내용을 보려면 다음 메서드 중 하나를 사용하세요.

gcloud

통계 ID와 함께 gcloud recommender insights describe 명령어를 사용하여 단일 통계에 대한 정보를 확인합니다.

  • INSIGHT_ID: 보려는 통계의 ID입니다. ID를 찾으려면 프로젝트, 폴더, 또는 조직의 통계를 나열하세요.
  • RESOURCE_TYPE: 통계를 관리할 리소스 유형입니다. project, folder, 또는 organization 값을 사용합니다.
  • RESOURCE_ID: 통계를 관리하려는 프로젝트, 폴더, 또는 조직의 ID입니다.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.orgpolicy.policy.Insight \
    --RESOURCE_TYPE=RESOURCE_ID \
    --location=global

출력에 통계가 자세히 표시됩니다. 예를 들어 두 리소스의 외부 서비스 계정 키를 분석한 결과 위반사항이 감지되지 않았습니다.

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.orgpolicy.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
category: SECURITY
content:
  consolidatedPolicy:
    inheritFromParent: false
    name: 'projects/123456789012/policies/iam.managed.disableServiceAccountKeyCreation'
    policyRules:
      rules: [
        "enforce": false
      ]
    reset: false
  constraint: {
    id: constraints/iam.managed.disableServiceAccountKeyCreation
    name: Disable service account key creation
  }
  evaluatedResources:
  - numOfResources: '1'
    resourceType: cloudresourcemanager.googleapis.com/Project
  - numOfResources: '2'
    resourceType: iam.googleapis.com/ServiceAccountKey
  violations:
  - numOfResources: '0'
    resourceType: iam.googleapis.com/ServiceAccountKey
  - numOfResources: '0'
    resourceType: cloudresourcemanager.googleapis.com/Project
description: Scanned 3 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyCreation.
etag: '"34ddfdcefd214fd7"'
insightSubtype: RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_CREATION
lastRefreshTime: '2024-12-10T08:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/66d543f3-845d-49d6-a26b-80d84804d8a8
observationPeriod: 86400s
severity: HIGH
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

통계 구성요소에 대한 자세한 내용은 이 페이지의 조직 정책 통계 검토를 참고하세요.

REST

Recommender API의 insights.get 메서드는 단일 통계를 가져옵니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 통계를 관리할 리소스 유형입니다. projects, folders, 또는 organizations 값을 사용합니다.
  • RESOURCE_ID: 통계를 관리하려는 프로젝트, 폴더, 또는 조직의 ID입니다.
  • INSIGHT_ID: 보려는 통계의 ID입니다. 통계 ID를 모르는 경우 프로젝트, 폴더, 또는 조직에서 통계를 나열하여 찾을 수 있습니다. 통계 ID는 통계의 name 필드에서 insights/ 다음에 오는 모든 문자입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다.

HTTP 메서드 및 URL:

GET https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/INSIGHT_ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에 통계가 포함됩니다. 예를 들어 두 리소스의 외부 서비스 계정 키를 분석한 결과 위반사항이 감지되지 않았습니다.

[
  {
    "associatedRecommendations": [
      {
        "recommendation": "projects/123456789012/locations/global/recommenders/google.orgpolicy.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f"
      }
    ],
    "category": "SECURITY",
    "content": {
      "consolidatedPolicy": {
        "inheritFromParent": false,
        "name": "projects/123456789012/policies/iam.managed.disableServiceAccountKeyCreation",
        "policyRules": {
          "rules": [
            {
              "enforce": false
            }
          ]
        },
        "reset": false
      },
      "constraint": {
        "id": "constraints/iam.managed.disableServiceAccountKeyCreation",
        "name": "Disable service account key creation"
      },
      "evaluatedResources": [
        {
          "numOfResources": "1",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        },
        {
          "numOfResources": "2",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        }
      ],
      "violations": [
        {
          "numOfResources": "0",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        },
        {
          "numOfResources": "0",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        }
      ]
    },
    "description": "Scanned 2 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyCreation.",
    "etag": "\"9a1ad019022f9f56\"",
    "insightSubtype": "RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_CREATION",
    "lastRefreshTime": "2024-12-03T08:00:00Z",
    "name": "projects/123456789012/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/66d543f3-845d-49d6-a26b-80d84804d8a8",
    "observationPeriod": "86400s",
    "severity": "HIGH",
    "stateInfo": {
      "state": "ACTIVE",
      "stateMetadata": {
        "reviewedBy": "alice",
        "priority": "high"
      }
    },
    "targetResources": [
      "//cloudresourcemanager.googleapis.com/projects/123456789012"
    ]
  }
]

통계 구성요소에 대한 자세한 내용은 이 페이지의 조직 정책 통계 검토를 참고하세요.

조직 정책 통계 검토

단일 통계를 가져온 후 콘텐츠를 검토하여 위반사항을 비롯하여 리소스에 적용된 조직 정책의 구성을 파악할 수 있습니다.

조직 정책 통계(google.orgpolicy.policy.Insight) 통계에는 다음과 같은 구성요소가 있습니다(순서는 다름).

  • associatedRecommendations: 통계와 연결된 모든 추천의 식별자입니다. 통계와 연결된 권장사항이 없으면 이 필드는 비어 있습니다.
  • category: 조직 정책 통계의 카테고리는 항상 SECURITY입니다.
  • content: 분석된 리소스 및 조직 정책에 관한 세부정보를 제공합니다. 이 필드에는 다음 구성요소가 포함됩니다.
    • constraint: 분석된 제약조건입니다.
    • consolidatedPolicy: 분석된 리소스의 조직 정책입니다.
    • evaluatedResources: 통계를 생성하기 위해 평가된 리소스입니다.
    • violations: 조직 정책을 위반하는 리소스의 수 및 유형입니다.
  • description: 인간이 읽을 수 있는 통계 요약입니다.
  • etag: 통계의 현재 상태에 대한 고유 식별자입니다. 통계가 변경될 때마다 새 etag 값이 할당됩니다.

    통계 상태를 변경하려면 기존 통계의 etag를 제공해야 합니다. etag를 사용하면 마지막으로 검색한 후 통계가 변경되지 않은 경우에만 작업이 실행됩니다.

  • insightSubtype: 통계 하위유형입니다.
  • lastRefreshTime: 통계가 마지막으로 갱신된 날짜로, 통계를 생성하는 데 사용된 데이터의 최신 상태를 나타냅니다.
  • name: 다음 형식의 통계 이름입니다.

    RESOURCE_TYPE/RESOURCE_ID/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/INSIGHT_ID

    자리표시자의 값은 다음과 같습니다.

    • RESOURCE_TYPE: 통계가 생성된 리소스 유형입니다.
    • RESOURCE_ID: 통계가 생성된 프로젝트, 폴더 또는 조직의 ID입니다.
    • INSIGHT_ID: 통계의 고유 ID입니다.
  • observationPeriod: 통계까지 이어지는 기간입니다. 통계를 생성하는 데 사용되는 소스 데이터는 lastRefreshTime에 종료되며 lastRefreshTime에서 observationPeriod를 뺀 시간에 시작합니다.
  • severity: 통계의 심각도입니다. 조직 정책 통계의 심각도는 HIGH입니다.
  • stateInfo: 통계는 제안된 후 여러 상태로 전환됩니다.

    • ACTIVE: 통계가 생성되었지만 작업이 수행되지 않았거나 통계의 상태를 업데이트하지 않고 작업이 수행되었습니다. 활성 통계는 기본 데이터가 변경되면 업데이트됩니다.
    • ACCEPTED: 통계를 기반으로 몇몇 작업이 실행되었습니다. 관련 권장사항이 CLAIMED, SUCCEEDED 또는 FAILED로 표시되었거나 통계가 직접 수락되면 통계가 수락됩니다. 통계 상태가 ACCEPTED일 때는 통계 내용을 변경할 수 없습니다. 수락된 통계는 수락된 날로부터 90일 동안 보관됩니다.
  • targetResources: 통계의 대상인 프로젝트, 폴더 또는 조직의 전체 리소스 이름 입니다. 예를 들면 //cloudresourcemanager.googleapis.com/projects/1234567890입니다.

조직 정책 통계를 ACCEPTED로 표시

활성 통계를 기반으로 작업을 수행하는 경우 통계를 ACCEPTED로 표시할 수 있습니다. ACCEPTED 상태는 이 통계를 기반으로 작업을 수행했음을 Recommender API에 알려주므로 권장사항을 개선하는 데 도움이 됩니다.

허용된 통계는 ACCEPTED로 표시된 후 90일 동안 보관됩니다.

gcloud

통계 ID와 함께 gcloud recommender insights mark-accepted 명령어를 사용하여 통계를 ACCEPTED로 표시합니다.

  • INSIGHT_ID: 보려는 통계의 ID입니다. ID를 찾으려면 프로젝트, 폴더, 또는 조직의 통계를 나열하세요.
  • RESOURCE_TYPE: 통계를 관리할 리소스 유형입니다. project, folder, 또는 organization 값을 사용합니다.
  • RESOURCE_ID: 통계를 관리하려는 프로젝트, 폴더, 또는 조직의 ID입니다.
  • ETAG: 통계 버전의 식별자입니다. etag를 가져오려면 다음 안내를 따르세요.

    1. gcloud recommender insights describe 명령어를 사용하여 통계를 가져옵니다.
    2. 출력에서 etag 값(큰따옴표 포함)을 찾아 복사합니다. 예를 들면 "d3cdec23cc712bd0"입니다.
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.orgpolicy.policy.Insight \
    --RESOURCE_TYPE=RESOURCE_ID \
    --location=global \
    --etag=ETAG

출력에 ACCEPTED 상태와 함께 통계가 표시됩니다.

associatedRecommendations:
- recommendation: folders/234567890123/locations/global/recommenders/google.orgpolicy.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
category: SECURITY
content:
  consolidatedPolicy:
    inheritFromParent: false
    name: 'projects/123456789012/policies/iam.managed.disableServiceAccountKeyCreation'
    policyRules:
      rules: [
        "enforce": false
      ]
    reset: false
  constraint: {
    id: constraints/iam.managed.disableServiceAccountKeyCreation
    name: Disable service account key creation
  }
  evaluatedResources:
  - numOfResources: '0'
    resourceType: iam.googleapis.com/ServiceAccountKey
  - numOfResources: '1'
    resourceType: cloudresourcemanager.googleapis.com/Folder
  - numOfResources: '1'
    resourceType: cloudresourcemanager.googleapis.com/Project
  violations:
  - numOfResources: '0'
    resourceType: iam.googleapis.com/ServiceAccountKey
  - numOfResources: '0'
    resourceType: cloudresourcemanager.googleapis.com/Folder
  - numOfResources: '0'
    resourceType: cloudresourcemanager.googleapis.com/Project
description: Scanned 2 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyUpload.
etag: '"2cbb89b22fe2dab7"'
insightSubtype: RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_UPLOAD
lastRefreshTime: '2024-12-10T08:00:00Z'
name: folders/234567890123/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/66d543f3-845d-49d6-a26b-80d84804d8a8
observationPeriod: 86400s
severity: HIGH
stateInfo:
  state: ACCEPTED
targetResources:
- //cloudresourcemanager.googleapis.com/folders/234567890123

통계 상태 정보에 대한 자세한 내용은 이 페이지의 조직 정책 통계 검토를 참고하세요.

REST

Recommender API의 insights.markAccepted 메서드는 통계를 ACCEPTED로 표시합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 통계를 관리할 리소스 유형입니다. projects, folders, 또는 organizations 값을 사용합니다.
  • RESOURCE_ID: 통계를 관리하려는 프로젝트, 폴더, 또는 조직의 ID입니다.
  • INSIGHT_ID: 보려는 통계의 ID입니다. 통계 ID를 모르는 경우 프로젝트, 폴더, 또는 조직에서 통계를 나열하여 찾을 수 있습니다. 통계 ID는 통계의 name 필드에서 insights/ 다음에 오는 모든 문자입니다.
  • ETAG: 통계 버전의 식별자입니다. etag를 가져오려면 다음을 실행합니다.
    1. insights.get 메서드를 사용하여 통계를 가져옵니다.
    2. 응답에서 etag 값을 찾아서 복사합니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다.

HTTP 메서드 및 URL:

POST https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/INSIGHT_ID:markAccepted

JSON 요청 본문:

{
  "etag": "ETAG"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에 통계가 포함됩니다. 이제 상태가 ACCEPTED입니다.

[
  {
    "associatedRecommendations": [
      {
        "recommendation": "projects/123456789012/locations/global/recommenders/google.orgpolicy.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f"
      }
    ],
    "category": "SECURITY",
    "content": {
      "consolidatedPolicy": {
        "inheritFromParent": false,
        "name": "projects/123456789012/policies/iam.managed.disableServiceAccountKeyCreation",
        "policyRules": {
          "rules": [
            {
              "enforce": false
            }
          ]
        },
        "reset": false
      },
      "constraint": {
        "id": "constraints/iam.managed.disableServiceAccountKeyCreation",
        "name": "Disable service account key creation"
      },
      "evaluatedResources": [
        {
          "numOfResources": "1",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        },
        {
          "numOfResources": "2",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        }
      ],
      "violations": [
        {
          "numOfResources": "0",
          "resourceType": "iam.googleapis.com/ServiceAccountKey"
        },
        {
          "numOfResources": "0",
          "resourceType": "cloudresourcemanager.googleapis.com/Project"
        }
      ]
    },
    "description": "Scanned 2 resources and found 0 violations for constraints/iam.managed.disableServiceAccountKeyCreation.",
    "etag": "\"9a1ad019022f9f56\"",
    "insightSubtype": "RESOURCE_VIOLATION_DISABLE_SERVICE_ACCOUNT_KEY_CREATION",
    "lastRefreshTime": "2024-12-03T08:00:00Z",
    "name": "projects/123456789012/locations/global/insightTypes/google.orgpolicy.policy.Insight/insights/66d543f3-845d-49d6-a26b-80d84804d8a8",
    "observationPeriod": "86400s",
    "severity": "HIGH",
    "stateInfo": {
      "state": "ACCEPTED",
      "stateMetadata": {
        "reviewedBy": "alice",
        "priority": "high"
      }
    },
    "targetResources": [
      "//cloudresourcemanager.googleapis.com/projects/123456789012"
    ]
  }
]

통계 상태 정보에 대한 자세한 내용은 이 페이지의 조직 정책 통계 검토를 참고하세요.

다음 단계