IAM 정책 분석

이 페이지에서는 정책 분석기를 사용하여 어떤 ID 또는 어떤 주 구성원(사용자, 서비스 계정, 그룹, 도메인)이 Google Cloud 리소스에 대해 갖고 있는 액세스 권한이 무엇인지 확인하는 방법을 보여줍니다.

'이 IAM 서비스 계정에 액세스할 수 있는 사용자는 누구인가요?' 및 '개인 식별 정보(PII)가 포함된 BigQuery 데이터 세트의 데이터를 읽을 수 있는 사용자는 누구인가요?'라는 질문은 정책 분석기를 통해 답을 얻을 수 있는 일반적인 질문입니다.

AnalyzeIamPolicy 메서드를 사용하여 분석 요청을 실행한 다음 응답에 결과를 가져올 수 있습니다. 처리해야 하는 데이터 양에 따라 분석 결과가 불완전할 수 있습니다. 전체 결과를 가져오거나, 추가 분석을 위해 결과를 작성하거나, 직접 저장하려면 AnalyzeIamPolicyLongrunning을 사용하여 BigQuery 또는 Cloud Storage에 쓸 수 있습니다.

개요

정책 분석기를 사용하면 액세스 관리를 수행하고 액세스 공개 상태를 제공하며 감사 및 규정 준수 관련 작업에 사용할 수도 있습니다.

특히 다음 내용이 해당됩니다.

  • 정책 분석기는 리소스 및 정책 계층 구조와 상속을 지원하므로 쿼리하려는 위치와 관계없이 효과적인 정책을 분석할 때 항상 계층 구조가 고려됩니다.
  • 정책 분석기는 사용자 그룹 확장을 지원하므로 사용자가 그룹에 포함된 경우에도 액세스 식별에 도움이 될 수 있습니다.
  • 정책 분석기는 권한 확장 역할을 지원하며, 이를 통해 권한 또는 역할로 쿼리할 수 있으므로 쿼리의 유연성이 높아집니다.
  • 정책 분석기는 리소스 계층 구조 내에서 제한된 리소스 확장 집합을 지원합니다. 예를 들어 쿼리 결과에서 프로젝트 내의 모든 VM 인스턴스 또는 폴더의 모든 프로젝트를 확장할 수 있습니다.
  • (API 및 gcloud 도구만 해당) IAM 정책 분석 시 정책 분석기는 여러 수준에서 '연결된' 명의 도용을 비롯하여 서비스 계정 명의 도용 분석을 지원합니다. 정책 분석기는 서비스 계정을 통해 모든 간접 액세스를 분석하는 데 도움이 됩니다.

예를 들어 다음 분석 사용 사례와 같이 이용하는 것이 가능합니다.

  • 리소스에 액세스할 수 있는 주 구성원 확인: 지정된 리소스에 대한 액세스 권한이 부여된 주 구성원을 찾습니다. 이 유형의 분석을 사용하면 다음과 같은 질문에 대한 답을 얻을 수 있습니다.

    • '이 IAM 서비스 계정에 대한 액세스 권한이 있는 사람은 누구인가요?'
    • '이 IAM 서비스 계정을 가장할 수 있는 권한이 있는 사람은 누구인가요?'
    • '프로젝트 A의 결제 관리자는 누구인가요?'
    • (API 및 gcloud 도구만 해당) '서비스 계정을 가장하여 프로젝트 A를 업데이트할 수 있는 사용자는 누구인가요?'
  • 특정 역할 또는 권한이 있는 주 구성원 확인: 관련 리소스에 지정된 역할/권한이 있는 주 구성원을 찾습니다. 이 유형의 분석을 사용하면 다음과 같은 질문에 대한 답을 얻을 수 있습니다.

    • '조직의 서비스 계정을 가장할 수 있는 권한이 있는 사람은 누구인가요?'
    • '조직의 결제 관리자가 누구인가요?'
    • (API 및 gcloud 도구만 해당) '조직에서 서비스 계정을 가장하여 BigQuery 데이터 세트를 읽을 수 있는 사람은 누구인가요?'
  • 주 구성원이 리소스에 대해 갖는 액세스 권한 확인: 지정된 리소스에 대해 지정된 주 구성원에게 부여된 액세스 권한을 확인합니다. 이 유형의 분석을 사용하면 다음과 같은 질문에 대한 답을 얻을 수 있습니다.

    • '이 BigQuery 데이터 세트에 대해 사용자 Ivy가 가진 역할과 권한은 무엇인가요?'
    • 'dev-testers 그룹이 이 프로젝트의 모든 리소스에 대해 갖는 역할 및 권한은 무엇인가요?'
    • (API 및 gcloud 도구만 해당) '사용자 Ivy가 서비스 계정을 가장할 경우 이 BigQuery 데이터 세트에 대해 갖는 역할 및 권한은 무엇인가요?'
  • 주 구성원이 액세스할 수 있는 리소스 확인: 주 구성원이 액세스할 수 있도록 권한이 부여된 리소스를 찾습니다. 이 정보는 다음과 같은 질문에 대한 답이 필요할 때 사용할 수 있습니다.

    • '사용자 Ivy에게 읽기 권한이 있는 BigQuery 데이터 세트는 무엇인가요?'
    • '어떤 BigQuery 데이터 세트가 데이터 소유자의 dev-testers 그룹인가요?'
    • '프로젝트 A에서 John이 삭제할 수 있는 VM은 무엇인가요?'
    • (API 및 gcloud 도구만 해당) '사용자 John이 서비스 계정을 가장하여 삭제할 수 있는 VM은 무엇인가요?'

시작하기 전에

  • 프로젝트에 Cloud Asset API를 사용 설정해야 합니다.

  • API를 사용하여 이러한 쿼리를 실행하는 경우 환경 및 gcurl을 설정해야 합니다.

    1. 환경을 설정합니다.

    2. gcurl 별칭을 설정하려면 다음 단계를 완료합니다.

      Compute Engine 인스턴스를 사용하는 경우 다음 명령어를 실행합니다.

      alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
      

      Compute Engine 인스턴스를 사용하지 않는 경우 다음 명령어를 실행합니다.

      alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \
      -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
      

      여기서 CREDENTIALS는 사용자 인증 정보 파일 경로입니다(예: ~/credentials.json).

필수 권한

정책 분석을 실행하려면 다음 권한이 필요합니다.

Google Cloud 조직, 폴더 또는 프로젝트에 대한 권한

정책을 분석하려면 분석하려는 Google Cloud 조직, 폴더 또는 프로젝트에 대한 다음 IAM 권한이 필요합니다.

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies

이러한 권한은 사전 정의된 다음 역할에 포함되어 있습니다.

  • Cloud 애셋 소유자(roles/cloudasset.owner)
  • Cloud 애셋 뷰어(roles/cloudasset.viewer)

Cloud Asset API 권한 및 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.

IAM 역할의 권한

요청에서 폴더 또는 프로젝트를 범위로 지정할 때 분석에서 조직 수준에 정의된 IAM 커스텀 역할이 있는 주 구성원을 발견한 경우 분석이 사용자 대신 정의를 사용할 수 있도록 IAM 커스텀 역할에 대한 iam.roles.get 권한이 필요합니다.

Google Workspace 그룹 구성원 권한

리소스에 액세스할 수 있는 주 구성원을 선택할 때 그룹의 구성원을 확장하려고 하면 최종 사용자 인증 정보가 있는 구성원으로 그룹을 확장합니다. 따라서 구성원을 볼 수 있는 권한이 있는 그룹의 구성원만 볼 수 있습니다.

주 구성원이 리소스에 대해 갖고 있는 액세스 권한이나 주 구성원이 액세스할 수 있는 리소스를 확인하기 위한 쿼리를 만들 때는 주 구성원을 지정합니다. 지정된 주 구성원이 속한 그룹(직접 또는 간접)을 찾아보겠습니다. 최종 사용자 인증 정보가 사용되고 구성원을 볼 권한이 있는 그룹만 볼 수 있다는 점에 유의하세요.

리소스에 액세스할 수 있는 주 구성원 확인

정책 분석기를 사용하면 조직의 특정 리소스에 대한 특정 역할이나 권한이 있는 주 구성원을 확인할 수 있습니다. 이 정보를 가져오려면 액세스를 분석할 리소스와 확인할 하나 이상의 역할 또는 권한이 포함된 주 구성원에 대한 쿼리를 만듭니다.

Console

  1. Cloud Console에서 정책 분석기 페이지로 이동합니다.

    정책 분석기 페이지로 이동

  2. 맞춤설정된 쿼리 빌드 드롭다운 메뉴를 클릭하고 주 구성원을 클릭합니다.

  3. 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.

  4. 역할, 권한 또는 둘 다 선택 섹션에서 분석할 역할 또는 권한을 하나 이상 선택합니다.

    • 역할을 추가하려면 역할 추가를 클릭합니다. 그런 다음 역할 목록에서 역할을 선택합니다. 다른 역할을 추가하려면 다른 역할 추가를 클릭하고 추가하려는 역할을 선택합니다.
    • 권한을 추가하려면 권한 추가를 클릭합니다. 그런 다음 추가하려는 권한을 선택합니다. 권한을 추가하려면 권한 추가를 클릭하고 추가할 권한을 선택합니다.
  5. 선택사항: 결과 페이지에 그룹 내의 개별 사용자를 나열하려면 그룹 옵션 섹션에서 스위치를 클릭합니다.

  6. 쿼리 실행을 클릭하여 쿼리를 실행합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 리소스에 대한 지정된 역할 및 권한이 있는 모든 주 구성원의 결과 표가 표시됩니다.

gcloud

API가 사용 설정된 프로젝트에서 asset analyze-iam-policy gcloud 명령어를 사용하여 AnalyzeIamPolicy를 호출할 수 있습니다. Cloud SDK 버전 314.0.0 이상을 실행해야 합니다. gcloud version 명령어를 사용하여 버전을 확인할 수 있습니다.

ORG_ID에서 FULL_RESOURCE_NAME에 대한 COMMA_SEPARATED_PERMISSIONS가 있는 주 구성원을 확인하려면 다음 안내를 따르세요.

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --full-resource-name="FULL_RESOURCE_NAME" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

예를 들어 조직 1234567890의 Compute Engine 인스턴스 ipa-gce-instance-2에서 compute.instances.get 또는 compute.instances.start 권한이 있는 주 구성원을 확인하려면 다음 안내를 따르세요.

gcloud asset analyze-iam-policy --organization="1234567890" \
    --full-resource-name="//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM 정책을 분석하고 gcurl 별칭을 사용하여 결과를 작성합니다.

  2. 요청 본문용으로 request.json 파일을 만들고 콘텐츠를 JSON 형식의 분석 요청으로 설정합니다.

    예를 들어 다음 요청 본문에서는 Compute Engine 인스턴스 ipa-gce-instance-2에 대해 compute.instances.get 또는 compute.instances.start 권한이 있는 사용자를 확인합니다.

    {
      "analysisQuery": {
        "resourceSelector": {
          "fullResourceName":
            "//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2"
         },
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 다음 gcurl 명령어를 사용하여 IAM 정책을 분석합니다.

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    여기서 ORG_ID는 조직 ID입니다(예: 1234567890).

특정 역할 또는 권한이 있는 주 구성원 확인

정책 분석기를 사용하면 조직의 Google Cloud 리소스에 대한 특정 역할이나 권한이 있는 주 구성원을 확인할 수 있습니다. 이 정보를 가져오려면 확인할 역할 또는 권한을 한 개 이상 포함하지만 리소스를 지정하지 않는 주 구성원에 대한 쿼리를 만드세요.

Console

  1. Cloud Console에서 정책 분석기 페이지로 이동합니다.

    정책 분석기 페이지로 이동

  2. 맞춤설정된 쿼리 빌드 드롭다운 메뉴를 클릭하고 주 구성원을 클릭합니다.

  3. 리소스 필드는 비워 둡니다.

  4. 역할, 권한 또는 둘 다 선택 섹션에서 분석할 역할 또는 권한을 하나 이상 선택합니다.

    • 역할을 추가하려면 역할 추가를 클릭합니다. 그런 다음 역할 목록에서 역할을 선택합니다. 다른 역할을 추가하려면 다른 역할 추가를 클릭하고 추가하려는 역할을 선택합니다.
    • 권한을 추가하려면 권한 추가를 클릭합니다. 그런 다음 추가하려는 권한을 선택합니다. 권한을 추가하려면 권한 추가를 클릭하고 추가할 권한을 선택합니다.
  5. 선택사항: 결과 페이지에 그룹 내의 개별 사용자를 나열하려면 그룹 옵션 섹션에서 스위치를 클릭합니다.

  6. 쿼리 실행을 클릭하여 쿼리를 실행합니다. 보고서 페이지에는 사용자가 입력한 쿼리 매개변수와 프로젝트의 모든 리소스에 지정된 역할 및 권한이 있는 모든 주 구성원의 결과 표가 표시됩니다.

gcloud

API가 사용 설정된 프로젝트에서 asset analyze-iam-policy gcloud 명령어를 사용하여 AnalyzeIamPolicy를 호출할 수 있습니다. Cloud SDK 버전 314.0.0 이상을 실행해야 합니다. gcloud version 명령어를 사용하여 버전을 확인할 수 있습니다.

ORG_ID에서 COMMA_SEPARATED_PERMISSIONS가 있는 주 구성원을 확인하려면 다음을 실행합니다.

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

예를 들어 조직 1234567890에서 compute.instances.get 또는 compute.instances.start 권한이 있는 주 구성원을 확인하려면 다음을 실행하세요.

gcloud asset analyze-iam-policy --organization="1234567890" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM 정책을 분석하고 gcurl 별칭을 사용하여 결과를 작성합니다.

  2. 요청 본문용으로 request.json 파일을 만들고 콘텐츠를 JSON 형식의 분석 요청으로 설정합니다.

    예를 들어 다음 요청 본문에서는 관련 리소스에 대한 compute.instances.get 또는 compute.instances.start 권한이 있는 주 구성원을 확인합니다.

    {
      "analysisQuery": {
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 다음 gcurl 명령어를 사용하여 IAM 정책을 분석합니다.

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    여기서 ORG_ID는 조직 ID입니다(예: 1234567890).

주 구성원이 리소스에서 가진 액세스 권한 확인

정책 분석기를 사용하면 주 구성원이 조직의 리소스에 대해 갖는 역할 또는 권한을 확인할 수 있습니다. 이 정보를 가져오려면 액세스 권한을 분석하려는 주 구성원과 리소스를 포함하는 액세스에 대한 쿼리를 만듭니다.

Console

  1. Cloud Console에서 정책 분석기 페이지로 이동합니다.

    정책 분석기 페이지로 이동

  2. 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.

  3. 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.

  4. 선택사항: 결과 페이지에 역할 내의 권한을 나열하려면 역할 옵션 섹션의 스위치를 클릭합니다.

  5. 쿼리 실행을 클릭하여 쿼리를 실행합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 입력한 리소스에 대해 지정된 주 구성원이 가지는 모든 역할의 결과 표가 표시됩니다.

gcloud

API가 사용 설정된 프로젝트에서 asset analyze-iam-policy gcloud 명령어를 사용하여 AnalyzeIamPolicy를 호출할 수 있습니다. Cloud SDK 버전 314.0.0 이상을 실행해야 합니다. gcloud version 명령어를 사용하여 버전을 확인할 수 있습니다.

ORG_IDFULL_RESOURCE_NAME에 대해 USER에게 부여된 역할 또는 권한을 확인하려면 다음을 실행하세요.

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --full-resource-name="FULL_RESOURCE_NAME" \
    --identity="USER"

예를 들어 조직 1234567890에서 사용자 user1@example.com에게 Compute Engine 인스턴스 ipa-gce-instance-2에 대해 부여된 역할이나 권한을 확인하는 방법은 다음과 같습니다.

gcloud asset analyze-iam-policy --organization="1234567890" \
    --full-resource-name="//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2" \
    --identity="user:user1@example.com"

REST

  1. IAM 정책을 분석하고 gcurl 별칭을 사용하여 결과를 작성합니다.

  2. 요청 본문용으로 request.json 파일을 만들고 콘텐츠를 JSON 형식의 분석 요청으로 설정합니다.

    예를 들어 다음 요청 본문에서는 사용자 user1@example.com이 Compute Engine 인스턴스 ipa-gce-instance-2에서 부여받은 역할 또는 권한을 확인합니다.

    {
      "analysisQuery": {
        "resourceSelector": {
          "fullResourceName":
            "//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2"
         },
        "identitySelector": {
          "identity": "user:user1@example.com"
        }
      }
    }
    
  3. 다음 gcurl 명령어를 사용하여 IAM 정책을 분석합니다.

    gcurl -d @request.json \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    여기서 ORG_ID는 조직 ID입니다(예: 1234567890).

주 구성원이 액세스할 수 있는 리소스 확인

정책 분석기를 사용하면 조직 내에서 주 구성원이 특정 역할 또는 권한이 있는 리소스를 확인할 수 있습니다. 이 정보를 가져오려면 분석할 액세스 권한이 있는 주 구성원 및 확인할 권한 또는 역할을 1개 이상 포함하는 리소스에 대한 쿼리를 만드세요.

Console

  1. Cloud Console에서 정책 분석기 페이지로 이동합니다.

    정책 분석기 페이지로 이동

  2. 맞춤설정된 쿼리 빌드 드롭다운 메뉴를 클릭하고 리소스를 클릭합니다.

  3. 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.

  4. 역할, 권한 또는 둘 다 선택 섹션에서 분석할 역할 또는 권한을 하나 이상 선택합니다.

    • 역할을 추가하려면 역할 추가를 클릭합니다. 그런 다음 역할 목록에서 역할을 선택합니다. 다른 역할을 추가하려면 다른 역할 추가를 클릭하고 추가하려는 역할을 선택합니다.
    • 권한을 추가하려면 권한 추가를 클릭합니다. 그런 다음 추가하려는 권한을 선택합니다. 권한을 추가하려면 권한 추가를 클릭하고 추가할 권한을 선택합니다.
  5. 선택사항: 결과 페이지에 프로젝트 내의 리소스를 나열하려면 리소스 옵션 섹션의 스위치를 클릭합니다.

  6. 쿼리 실행을 클릭하여 쿼리를 실행합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 주 구성원이 입력한 역할 또는 권한을 가지는 모든 리소스의 결과 테이블이 표시됩니다.

gcloud

API가 사용 설정된 프로젝트에서 asset analyze-iam-policy gcloud 명령어를 사용하여 AnalyzeIamPolicy를 호출할 수 있습니다. Cloud SDK 버전 314.0.0 이상을 실행해야 합니다. gcloud version 명령어를 사용하여 버전을 확인할 수 있습니다.

ORG_ID에서 USER가 어떤 리소스에 COMMA_SEPARATED_PERMISSIONS를 갖는지 확인하려면 다음을 수행합니다.

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --identity="USER" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

예를 들어 user1@example.com이 조직 1234567890에서 compute.instances.get 또는 compute.instances.start 권한을 가진 리소스는 다음과 같습니다.

gcloud asset analyze-iam-policy --organization="1234567890" \
    --identity="user:user1@example.com" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM 정책을 분석하고 gcurl 별칭을 사용하여 결과를 작성합니다.

  2. 요청 본문용으로 request.json 파일을 만들고 콘텐츠를 JSON 형식의 분석 요청으로 설정합니다.

    예를 들어 다음 요청 본문은 user1@example.comcompute.instances.get 또는 compute.instances.start 권한을 갖는 리소스를 확인합니다.

    {
      "analysisQuery": {
        "identitySelector": {
          "identity": "user:user1@example.com"
         },
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 다음 gcurl 명령어를 사용하여 IAM 정책을 분석합니다.

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    여기서 ORG_ID는 조직 ID입니다(예: 1234567890).

클라이언트 라이브러리 및 API 참조

쿼리 작성

쿼리의 다른 사용 사례와 옵션을 알아보려면 IAM 정책 쿼리 샘플 분석을 참조하세요.

제한사항

  • Cloud Console의 정책 분석기는 서비스 계정 명의 도용 분석을 지원하지 않습니다. 서비스 계정 명의 도용을 분석하려면 REST API 또는 gcloud 도구를 사용합니다.

  • IAM 조건은 반환된 정책 바인딩에서처럼 표시됩니다. 조건에 대해서는 더 이상 설명하지 않습니다. 바인딩에 한 개 이상의 조건이 있으면 해당 바인딩에서 출력된 모든 ID에 조건부 액세스 권한이 있다는 의미입니다.

  • 일부 리소스 유형은 지원되지 않습니다. 지원되는 리소스 유형 목록을 참조하세요.