IAM 정책 분석

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

이 페이지의 예시에서는 정책 분석 쿼리를 실행하고 결과를 즉시 보는 방법을 보여줍니다. 추가 분석을 위해 결과를 내보내려면 AnalyzeIamPolicyLongrunning을 사용하여 BigQuery 또는 Cloud Storage에 쿼리 결과를 쓰면 됩니다.

시작하기 전에

  • Cloud Asset API 사용 설정

    API 사용 설정

    쿼리를 전송하는 데 사용되는 프로젝트 또는 조직에서 API를 사용 설정해야 합니다. 이것은 쿼리 범위를 지정하는 리소스와 동일할 필요가 없습니다.

  • 선택사항: 정책 분석기 작동 방식을 이해합니다.

필수 역할 및 권한

허용 정책을 분석하려면 다음 역할 및 권한이 필요합니다.

필요한 IAM 역할

허용 정책을 분석하는 데 필요한 권한을 얻으려면 관리자에게 쿼리 범위를 지정할 프로젝트, 폴더 또는 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 허용 정책을 분석하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

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

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • 커스텀 IAM 역할을 사용하여 정책 분석: iam.roles.get
  • Google Cloud CLI를 사용하여 정책 분석: serviceusage.services.use

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

필요한 Google Workspace 권한

쿼리 결과에서 그룹을 펼쳐 Google Workspace 그룹의 멤버십으로 인해 주 구성원에게 특정 역할 또는 권한이 있는지 확인하려면 groups.read Google Workspace 권한이 필요합니다. 이 권한은 그룹 리더 관리자와 그룹 관리자 또는 최고 관리자 역할과 같은 보다 강력한 역할에 포함되어 있습니다. 이러한 역할을 부여하는 방법은 특정 관리자 역할 할당하기를 참조하세요.

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

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

콘솔

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

    정책 분석기 페이지로 이동

  2. 정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.

  3. 쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석기는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.

  4. 다음에 대해 확인할 리소스 및 확인할 역할 또는 권한을 선택합니다.

    1. 매개변수 1 필드의 드롭다운 메뉴에서 리소스를 선택합니다.
    2. 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.
    3. 선택기 추가를 클릭합니다.
    4. 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
    5. 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
    6. 선택사항: 추가 역할 및 권한을 확인하려면 확인하려는 역할 및 권한이 모두 나열될 때까지 역할권한 선택기를 계속 추가합니다.
  5. 선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.

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

    Google Cloud 콘솔의 정책 분석 쿼리는 최대 1분 동안 실행됩니다. 1분 후에 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud Console에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 BigQuery로 결과를 내보냅니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. project, folder, organization 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • FULL_RESOURCE_NAME: 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PERMISSIONS: 쉼표로 구분된 확인할 권한 목록입니다(예: compute.instances.get,compute.instances.start). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

gcloud asset analyze-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS'

Windows(PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS'

Windows(cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS'

분석 결과가 포함된 YAML 응답을 받게 됩니다. 각 분석 결과에서는 쿼리와 관련된 액세스, ID, 리소스 집합을 표시하고 이어서 관련 IAM 역할 바인딩을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL입니다.

지정된 리소스의 지정된 권한을 가진 주 구성원이 응답의 identities 필드에 나열됩니다. 다음 예시에서는 identities 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyze-iam-policy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

REST

리소스에 대한 특정 권한이 있는 주 구성원을 확인하려면 Cloud 애셋 인벤토리 API의 analyzeIamPolicy 메서드를 사용합니다.

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

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. projects, folders, organizations 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • FULL_RESOURCE_NAME: 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: 확인할 권한입니다(예: compute.instances.get). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

HTTP 메서드 및 URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

JSON 요청 본문:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

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

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

지정된 리소스의 지정된 권한을 가진 주 구성원이 응답의 identities 필드에 나열됩니다. 다음 예시에서는 identities 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyzeIamPolicy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

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

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

콘솔

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

    정책 분석기 페이지로 이동

  2. 정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.

  3. 쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석기는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.

  4. 매개변수 1 필드에서 역할 또는 권한을 선택합니다.

  5. 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.

  6. 선택사항: 추가 역할 및 권한을 확인하려면 다음을 수행합니다.

    1. 선택기 추가를 클릭합니다.
    2. 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
    3. 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
    4. 확인하려는 모든 역할과 권한이 나열될 때까지 역할권한 선택기를 계속 추가합니다.
  7. 선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.

  8. 커스텀 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 모든 범위 내 리소스에서 지정된 역할 또는 권한이 있는 모든 주 구성원의 결과 표가 표시됩니다.

    Google Cloud 콘솔의 정책 분석 쿼리는 최대 1분 동안 실행됩니다. 1분 후에 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud Console에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 BigQuery로 결과를 내보냅니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. project, folder, organization 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • ROLES: 쉼표로 구분된 확인할 역할 목록입니다(예: roles/compute.admin,roles/compute.imageUser). 여러 역할을 나열하면 정책 분석기가 나열된 역할을 확인합니다.
  • PERMISSIONS: 쉼표로 구분된 확인할 권한 목록입니다(예: compute.instances.get,compute.instances.start). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

gcloud asset analyze-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --roles='ROLES' \
    --permissions='PERMISSIONS'

Windows(PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --roles='ROLES' `
    --permissions='PERMISSIONS'

Windows(cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --roles='ROLES' ^
    --permissions='PERMISSIONS'

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

지정된 역할 또는 권한이 있는 주 구성원이 응답의 identities 필드에 나열됩니다. 다음 예시에서는 identities 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  - role: roles/compute.admin
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyze-iam-policy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

REST

특정 역할 또는 권한이 있는 주 구성원을 확인하려면 Cloud 애셋 인벤토리 API의 analyzeIamPolicy 메서드를 사용합니다.

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

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. projects, folders, organizations 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • ROLE_1, ROLE_2... ROLE_N: 확인할 역할입니다(예: roles/compute.admin). 여러 역할을 나열하면 정책 분석기가 나열된 역할을 확인합니다.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: 확인할 권한입니다(예: compute.instances.get). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

HTTP 메서드 및 URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

JSON 요청 본문:

{
  "analysisQuery": {
    "accessSelector": {
      "roles": [
        "ROLE_1",
        "ROLE_2",
        "ROLE_N"
      ],
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

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

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

지정된 역할 또는 권한이 있는 주 구성원이 응답의 identities 필드에 나열됩니다. 다음 예시에서는 identities 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "role": "roles/compute.admin"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyzeIamPolicy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

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

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

콘솔

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

    정책 분석기 페이지로 이동

  2. 정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.

  3. 쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석기는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.

  4. 확인하려는 리소스와 주 구성원을 선택합니다.

    1. 매개변수 1 필드의 드롭다운 메뉴에서 리소스를 선택합니다.
    2. 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.
    3. 선택기 추가를 클릭합니다.
    4. 매개변수 2 필드의 드롭다운 메뉴에서 주 구성원을 선택합니다.
    5. 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.
  5. 선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.

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

    Google Cloud 콘솔의 정책 분석 쿼리는 최대 1분 동안 실행됩니다. 1분 후에 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud Console에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 BigQuery로 결과를 내보냅니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. project, folder, organization 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • FULL_RESOURCE_NAME: 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PRINCIPAL: PRINCIPAL_TYPE:ID 형식의 분석할 액세스를 갖는 주 구성원입니다(예: user:my-user@example.com). 주 구성원 유형의 전체 목록은 주 구성원 식별자를 참조하세요.

gcloud asset analyze-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL

Windows(PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL

Windows(cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL

분석 결과가 포함된 YAML 응답을 받게 됩니다. 각 분석 결과에서는 쿼리와 관련된 액세스, ID, 리소스 집합을 표시하고 이어서 관련 IAM 역할 바인딩을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL입니다.

주 구성원이 지정된 리소스에서 가진 역할은 응답의 accesses 필드에 나열됩니다. 다음 예시에서는 accesses 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
---
ACLs:
- accesses:
  - roles/iam.serviceAccountUser
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/iam.serviceAccountUser
---
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyze-iam-policy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

REST

주 구성원이 리소스에서 가진 액세스 권한을 확인하려면 Cloud 애셋 인벤토리 API의 analyzeIamPolicy 메서드를 사용합니다.

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

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. projects, folders, organizations 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • FULL_RESOURCE_NAME: 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PRINCIPAL: PRINCIPAL_TYPE:ID 형식의 분석할 액세스를 갖는 주 구성원입니다(예: user:my-user@example.com). 주 구성원 유형의 전체 목록은 주 구성원 식별자를 참조하세요.

HTTP 메서드 및 URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

JSON 요청 본문:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    }
  }
}

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

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

주 구성원이 지정된 리소스에서 가진 역할은 응답의 accesses 필드에 나열됩니다. 다음 예시에서는 accesses 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/iam.serviceAccountUser",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "roles": "iam.serviceAccountUser"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyzeIamPolicy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

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

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

콘솔

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

    정책 분석기 페이지로 이동

  2. 정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.

  3. 쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석기는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.

  4. 다음에 대해 확인할 주 구성원 및 확인할 역할 또는 권한을 선택합니다.

    1. 매개변수 1 필드의 드롭다운 메뉴에서 주 구성원을 선택합니다.
    2. 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.
    3. 선택기 추가를 클릭합니다.
    4. 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
    5. 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
    6. 선택사항: 추가 역할 및 권한을 확인하려면 확인하려는 역할 및 권한이 모두 나열될 때까지 역할권한 선택기를 계속 추가합니다.
  5. 선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.

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

    Google Cloud 콘솔의 정책 분석 쿼리는 최대 1분 동안 실행됩니다. 1분 후에 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud Console에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 BigQuery로 결과를 내보냅니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. project, folder, organization 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • PRINCIPAL: PRINCIPAL_TYPE:ID 형식의 분석할 액세스를 갖는 주 구성원입니다(예: user:my-user@example.com). 주 구성원 유형의 전체 목록은 주 구성원 식별자를 참조하세요.
  • PERMISSIONS: 쉼표로 구분된 확인할 권한 목록입니다(예: compute.instances.get,compute.instances.start). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

gcloud asset analyze-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS'

Windows(PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS'

Windows(cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS'

분석 결과가 포함된 YAML 응답을 받게 됩니다. 각 분석 결과에서는 쿼리와 관련된 액세스, ID, 리소스 집합을 표시하고 이어서 관련 IAM 역할 바인딩을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL입니다.

지정된 주 구성원에게 지정된 권한이 있는 리소스는 응답의 resources 필드에 나열됩니다. 다음 예시에서는 resources 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image
policy:
  attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyze-iam-policy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

REST

주 구성원이 액세스할 수 있는 리소스를 확인하려면 Cloud Asset Inventory API의 analyzeIamPolicy 메서드를 사용합니다.

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

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. projects, folders, organizations 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • PRINCIPAL: PRINCIPAL_TYPE:ID 형식의 분석할 액세스를 갖는 주 구성원입니다(예: user:my-user@example.com). 주 구성원 유형의 전체 목록은 주 구성원 식별자를 참조하세요.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: 확인할 권한입니다(예: compute.instances.get). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.

HTTP 메서드 및 URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

JSON 요청 본문:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

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

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

지정된 주 구성원에게 지정된 권한이 있는 리소스는 응답의 resources 필드에 나열됩니다. 다음 예시에서는 resources 필드가 강조표시된 단일 분석 결과를 보여줍니다.

...
{
  "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyzeIamPolicy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

특정 시간의 액세스 결정

컨텍스트가 충분히 제공되면 정책 분석기가 특정 시간에만 액세스 권한을 부여하는 IAM 조건부 역할 바인딩을 분석할 수 있습니다. 이러한 조건을 날짜/시간 조건이라고 합니다. 정책 분석기가 날짜/시간 조건의 역할 바인딩을 정확하게 분석하려면 요청에서 액세스 시간을 정의해야 합니다.

정책 분석기는 추가 사용자 입력 없이 리소스 조건을 분석할 수도 있습니다. 정책 분석기가 조건에 어떻게 작동하는지 자세히 알아보려면 조건부 액세스를 참조하세요.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. project, folder, organization 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • PERMISSIONS: 선택사항. 쉼표로 구분된 확인할 권한 목록입니다(예: compute.instances.get,compute.instances.start). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.
  • FULL_RESOURCE_NAME: 선택사항. 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PERMISSIONS: 선택사항. 쉼표로 구분된 확인할 권한 목록입니다(예: compute.instances.get,compute.instances.start). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.
  • ACCESS_TIME: 확인할 시간입니다. 이 시간은 미래여야 합니다. RFC 3339 형식의 타임스탬프를 사용합니다(예: 2099-02-01T00:00:00Z).

gcloud asset analyze-iam-policy 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS' \
    --access-time=ACCESS_TIME

Windows(PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS' `
    --access-time=ACCESS_TIME

Windows(cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS' ^
    --access-time=ACCESS_TIME

분석 결과가 포함된 YAML 응답을 받게 됩니다. 각 분석 결과에서는 쿼리와 관련된 액세스, ID, 리소스 집합을 표시하고 이어서 관련 IAM 역할 바인딩을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL입니다.

요청에 액세스 시간을 포함하면 정책 분석기가 날짜/시간 조건을 평가할 수 있습니다. 조건이 false로 평가되면 응답에 해당 역할이 포함되지 않습니다. 조건이 true로 평가되면 조건 평가 결과가 TRUE로 나열됩니다.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  conditionEvaluationValue: 'TRUE'
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    condition:
      expression: request.time.getHours("America/Los_Angeles") >= 5
      title: No access before 5am PST
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyze-iam-policy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

REST

특정 시점에 리소스에 대한 특정 권한이 있는 주 구성원을 확인하려면 Cloud 애셋 인벤토리 API의 analyzeIamPolicy 메서드를 사용합니다.

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

  • RESOURCE_TYPE: 검색 범위를 지정할 리소스 유형입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. projects, folders, organizations 값을 사용합니다.
  • RESOURCE_ID: 검색 범위를 지정할 Google Cloud 프로젝트, 폴더, 조직의 ID입니다. 이 리소스 및 해당 종속 항목에 연결된 IAM 허용 정책만 분석됩니다. 프로젝트 ID는 my-project 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: 선택사항. 확인할 권한입니다(예: compute.instances.get). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.
  • FULL_RESOURCE_NAME: 선택사항. 액세스를 분석할 리소스의 전체 리소스 이름입니다. 전체 리소스 이름 형식 목록은 리소스 이름 형식을 참조하세요.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: 선택사항. 확인할 권한입니다(예: compute.instances.get). 여러 권한을 나열하면 정책 분석기가 나열된 권한을 확인합니다.
  • ACCESS_TIME: 확인할 시간입니다. 이 시간은 미래여야 합니다. RFC 3339 형식의 타임스탬프를 사용합니다(예: 2099-02-01T00:00:00Z).

HTTP 메서드 및 URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

JSON 요청 본문:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "conditionContext": {
      "accessTime": "ACCESS_TIME"
    }
  }
}

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

분석 결과가 포함된 JSON 응답을 받게 됩니다. 각 분석 결과에서는 관련 IAM 역할 바인딩을 설명한 후 해당 바인딩의 리소스, 액세스, 주 구성원을 나열합니다. 역할 바인딩이 조건부인 경우 분석 결과에 조건 평가 결과도 포함됩니다. 조건을 평가할 수 없는 경우에는 결과가 CONDITIONAL로 나열됩니다.

요청에 액세스 시간을 포함하면 정책 분석기가 날짜/시간 조건을 평가할 수 있습니다. 조건이 false로 평가되면 응답에 해당 역할이 포함되지 않습니다. 조건이 true로 평가되면 분석 응답의 조건 평가 값이 TRUE입니다.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ],
    "condition": {
      "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5",
      "title": "No access before 5am PST"
    }
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ],
      "conditionEvaluation": {
        "evaluationValue": "TRUE"
      }
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

쿼리가 완료되기 전에 요청 시간이 초과되면 DEADLINE_EXCEEDED 오류가 발생합니다. 이러한 쿼리에 대한 전체 결과를 가져오려면 analyzeIamPolicy의 장기 실행 버전을 사용하여 BigQuery 또는 Cloud Storage에 결과를 기록합니다. 자세한 내용은 BigQuery에 정책 분석 기록 또는 Cloud Storage에 정책 분석 기록을 참조하세요.

옵션 사용 설정

다음 옵션을 사용 설정하여 더 자세한 쿼리 결과를 수신할 수 있습니다.

콘솔

옵션 설명
쿼리와 일치하는 리소스 내의 리소스 나열 이 옵션을 사용 설정하면 쿼리 결과에 있는 모든 상위 리소스(프로젝트, 폴더, 조직)에 대해 최대 1,000개의 관련 하위 리소스가 나열됩니다.
그룹 내의 개별 사용자 나열

이 옵션을 사용 설정하면 쿼리 결과의 모든 그룹이 개별 구성원으로 확장됩니다. 충분한 그룹 권한이 있으면 중첩된 그룹도 확장됩니다. 이 확장은 그룹당 구성원 1,000명으로 제한됩니다.

이 옵션은 쿼리에 주 구성원을 지정하지 않는 경우에만 사용할 수 있습니다.

역할 내의 권한 나열

이 옵션을 사용 설정하면 역할 자체 외에도 각 역할 내의 모든 권한이 쿼리 결과에 나열됩니다.

이 옵션은 쿼리에 권한 또는 역할을 지정하지 않는 경우에만 사용할 수 있습니다.

gcloud

이 섹션에서는 gcloud CLI를 사용하여 허용 정책을 분석할 때 추가할 수 있는 몇 가지 일반적인 플래그를 설명합니다. 전체 옵션 목록은 선택적 플래그를 참조하세요.

플래그 설명
--analyze-service-account-impersonation

이 옵션을 사용 설정하면 정책 분석기가 추가 분석 쿼리를 실행하여 지정된 리소스에 대해 지정된 권한을 갖는 서비스 계정을 누가 가장할 수 있는지 확인합니다. 정책 분석기는 쿼리 결과에서 각 서비스 계정에 대해 하나의 쿼리를 실행합니다. 이러한 쿼리는 누가 서비스 계정의 다음 권한을 갖는지 분석합니다.

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

많은 쿼리를 자동으로 실행하므로 이는 비용이 많이 드는 작업입니다. analyze-iam-policy를 사용하는 대신 analyze-iam-policy-longrunning을 사용하여 BigQuery로 내보내거나 Cloud Storage로 내보내는 것이 좋습니다.

--expand-groups

이 옵션을 사용 설정하면 쿼리 결과의 모든 그룹이 개별 구성원으로 확장됩니다. 충분한 그룹 권한이 있으면 중첩된 그룹도 확장됩니다. 이 확장은 그룹당 구성원 1,000명으로 제한됩니다.

이 옵션은 쿼리에 주 구성원을 지정하지 않는 경우에만 효과가 있습니다.

--expand-resources 이 옵션을 사용 설정하면 쿼리 결과에 있는 모든 상위 리소스(프로젝트, 폴더, 조직)에 대해 최대 1,000개의 관련 하위 리소스가 나열됩니다.
--expand-roles

이 옵션을 사용 설정하면 역할 자체 외에도 각 역할 내의 모든 권한이 쿼리 결과에 나열됩니다.

이 옵션은 쿼리에 권한 또는 역할을 지정하지 않는 경우에만 사용할 수 있습니다.

--output-group-edges 이 옵션을 사용 설정하면 쿼리 결과가 그룹 간의 관련 구성원 관계를 출력합니다.
--output-resource-edges 이 옵션을 사용 설정하면 쿼리 결과가 리소스 간의 관련 상위/하위 관계를 출력합니다.

REST

옵션을 사용 설정하려면 먼저 분석 쿼리에 options 필드를 추가합니다. 예를 들면 다음과 같습니다.

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
    },
    "accessSelector": {
      "permissions": [
        "iam.roles.get",
        "iam.roles.list"
      ]
   },
   "options": {
     OPTIONS
   }
  }
}

OPTIONS"OPTION": true 형식의 사용 설정할 옵션으로 바꿉니다. 다음 표에서 사용 가능한 옵션을 설명합니다.

옵션 설명
analyzeServiceAccountImpersonation

이 옵션을 사용 설정하면 정책 분석기가 추가 분석 쿼리를 실행하여 지정된 리소스에 대해 지정된 권한을 갖는 서비스 계정을 누가 가장할 수 있는지 확인합니다. 정책 분석기는 쿼리 결과에서 각 서비스 계정에 대해 하나의 쿼리를 실행합니다. 이러한 쿼리는 누가 서비스 계정의 다음 권한을 갖는지 분석합니다.

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

많은 쿼리를 자동으로 실행하므로 이는 비용이 많이 드는 작업입니다. AnalyzeIamPolicy를 사용하는 대신 AnalyzeIamPolicyLongrunning을 사용하여 BigQuery로 내보내거나 Cloud Storage로 내보내는 것이 좋습니다.

expandGroups

이 옵션을 사용 설정하면 쿼리 결과의 모든 그룹이 개별 구성원으로 확장됩니다. 충분한 그룹 권한이 있으면 중첩된 그룹도 확장됩니다. 이 확장은 그룹당 구성원 1,000명으로 제한됩니다.

이 옵션은 쿼리에 주 구성원을 지정하지 않는 경우에만 효과가 있습니다.

expandResources 이 옵션을 사용 설정하면 쿼리 결과에 있는 모든 상위 리소스(프로젝트, 폴더, 조직)에 대해 최대 1,000개의 관련 하위 리소스가 나열됩니다.
expandRoles

이 옵션을 사용 설정하면 역할 자체 외에도 각 역할 내의 모든 권한이 쿼리 결과에 나열됩니다.

이 옵션은 쿼리에 권한 또는 역할을 지정하지 않는 경우에만 사용할 수 있습니다.

outputGroupEdges 이 옵션을 사용 설정하면 쿼리 결과가 그룹 간의 관련 구성원 관계를 출력합니다.
outputResourceEdges 이 옵션을 사용 설정하면 쿼리 결과가 리소스 간의 관련 상위/하위 관계를 출력합니다.

다음 단계