유효한 IAM 정책 보기

이 주제에서는 지정된 리소스에 유효한 Identity and Access Management(IAM) 정책을 보는 방법을 설명합니다.

IAM의 유효한 정책에서는 리소스 계층 구조의 모든 상위 정책과 하위 정책이 리소스에 상속되는 방식을 설명합니다.

범위 및 권한

유효한 IAM 정책을 요청하는 경우 범위를 지정해야 합니다. 조직, 폴더 또는 프로젝트일 수 있습니다. 이 범위나 그 아래에 설정된 모든 IAM 정책이 반환됩니다. 요청 범위가 Cloud Asset API에 사용 설정된 프로젝트와 동일할 필요는 없습니다. 또한 사용 설정된 프로젝트와 요청 범위에 다른 권한이 필요합니다.

지원되는 정책 유형

유효한 IAM 정책에서만 IAM 허용 정책을 지원합니다. 다음과 같은 형태의 액세스 제어는 지원되지 않습니다.

시작하기 전에

시작하기 전에 다음 단계를 완료하세요.

  1. 프로젝트에 Cloud Asset Inventory API를 사용 설정합니다.

    Cloud Asset Inventory API 사용 설정

    이 프로젝트는 요청 범위와 같을 필요가 없습니다. 서비스를 사용 설정할 때 프로젝트 설정에 대해 자세히 알아보세요.

  2. Google Cloud SDK를 설치합니다.

  3. 선택사항: Cloud Asset Inventory API를 직접 호출하려면 curl 명령어에 대한 액세스 권한이 있는지 확인합니다.

  4. 권한을 설정합니다.

    1. Cloud Asset API의 권한을 구성합니다.

    2. 요청 범위에 다음 권한을 사용 설정합니다.

      • cloudasset.assets.analyzeIamPolicy

      • cloudasset.assets.searchAllResources

      • cloudasset.assets.searchAllIamPolicies

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

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

      • Cloud 애셋 뷰어(roles/cloudasset.viewer)

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

유효한 IAM 정책 가져오기

gcloud

리소스에 유효한 IAM 정책을 가져오려면 gcloud asset get-effective-iam-policy 명령어를 사용하여 BatchGetEffectiveIamPolicies를 호출하면 됩니다. Google Cloud CLI 버전 399.0.0 이상을 실행해야 합니다.

gcloud asset get-effective-iam-policy \
    --scope=SCOPE \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

다음 값을 제공합니다.

  • SCOPE: 범위는 프로젝트, 폴더 또는 조직이 될 수 있습니다.

    허용되는 값은 다음과 같습니다.

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud 프로젝트 번호를 찾는 방법

      콘솔

      Google Cloud 프로젝트 번호를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔의 대시보드 페이지로 이동합니다.

        대시보드로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자에서 조직을 선택한 후 프로젝트 이름을 검색합니다.
      4. 프로젝트 이름을 클릭하여 해당 프로젝트로 전환합니다. 프로젝트 번호가 프로젝트 정보 카드에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 프로젝트 번호를 검색할 수 있습니다.

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud 폴더 ID를 찾는 방법

      콘솔

      Google Cloud 폴더 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자를 클릭한 후 조직을 선택합니다.
      4. 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더 ID를 검색할 수 있습니다.

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      여기서 TOP_LEVEL_FOLDER_NAME은 전체 또는 일부 문자열 일치일 수 있습니다. 발견된 폴더에 대한 추가 정보를 보려면 --format 옵션을 삭제합니다.

      다른 폴더 내에서 폴더 ID를 가져오려면 하위 폴더를 나열합니다.

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 조직 ID를 찾는 방법

      콘솔

      Google Cloud 조직 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자를 클릭한 후 조직을 선택합니다.
      4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 조직 ID를 검색할 수 있습니다.

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • ASSET_NAME: 유효한 IAM 정책을 검색하기 위해 쉼표로 구분된 애셋 전체 이름 목록입니다.

    배치 하나에서 최대 20개 애셋의 정책을 검색할 수 있습니다.

다음 코드 샘플은 gcloud CLI 명령어의 예시입니다.

  • 조직 ID가 123456인 경우:

    gcloud asset get-effective-iam-policy \
        --scope=organizations/123456 \
        --names=//cloudresourcemanager.googleapis.com/organizations/123456
    
  • 폴더 ID가 1234567인 경우:

    gcloud asset get-effective-iam-policy \
        --scope=folders/1234567 \
        --names=//cloudresourcemanager.googleapis.com/folders/1234567
    
  • my-project라는 프로젝트에 있는 Cloud SQL 인스턴스 리소스가 2개 있는 경우:

    gcloud asset get-effective-iam-policy \
        --scope=projects/my-project \
        --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
    

REST

Cloud 애셋 인벤토리 API를 사용하여 리소스에서 유효한 IAM 정책을 가져오려면 다음 curl 명령어를 사용합니다.

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "names": [
            "ASSET_NAME_1",
            "ASSET_NAME_2",
            "..."
          ]
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet

다음 값을 제공합니다.

  • ASSET_NAME: 유효한 IAM 정책을 검색하기 위해 쉼표로 구분된 애셋 전체 이름 목록입니다.

    배치 하나에서 최대 20개 애셋의 정책을 검색할 수 있습니다.

  • SCOPE: 범위는 프로젝트, 폴더 또는 조직이 될 수 있습니다.

    허용되는 값은 다음과 같습니다.

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud 프로젝트 번호를 찾는 방법

      콘솔

      Google Cloud 프로젝트 번호를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔의 대시보드 페이지로 이동합니다.

        대시보드로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자에서 조직을 선택한 후 프로젝트 이름을 검색합니다.
      4. 프로젝트 이름을 클릭하여 해당 프로젝트로 전환합니다. 프로젝트 번호가 프로젝트 정보 카드에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 프로젝트 번호를 검색할 수 있습니다.

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud 폴더 ID를 찾는 방법

      콘솔

      Google Cloud 폴더 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자를 클릭한 후 조직을 선택합니다.
      4. 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더 ID를 검색할 수 있습니다.

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      여기서 TOP_LEVEL_FOLDER_NAME은 전체 또는 일부 문자열 일치일 수 있습니다. 발견된 폴더에 대한 추가 정보를 보려면 --format 옵션을 삭제합니다.

      다른 폴더 내에서 폴더 ID를 가져오려면 하위 폴더를 나열합니다.

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 조직 ID를 찾는 방법

      콘솔

      Google Cloud 조직 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 상자를 클릭합니다.
      3. 다음 조직에서 선택 상자를 클릭한 후 조직을 선택합니다.
      4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 조직 ID를 검색할 수 있습니다.

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"