이 페이지에서는 허용 정책에 대한 정책 분석 도구를 사용하여 어떤 주 구성원이 어떤 Google Cloud 리소스에 어떻게 액세스할 수 있는지 확인하는 방법을 보여줍니다.
주 구성원에는 다음이 포함될 수 있습니다.
- 사용자, 그룹 또는 도메인
- 서비스 계정
- 에이전트 ID
- 워크로드 아이덴티티
- 직원 ID
이 페이지의 예시에서는 정책 분석 쿼리를 실행하고 결과를 즉시 보는 방법을 보여줍니다. 추가 분석을 위해 결과를 내보내려면 AnalyzeIamPolicyLongrunning을 사용하여 BigQuery 또는 Cloud Storage에 쿼리 결과를 쓰면 됩니다.
시작하기 전에
Cloud Asset API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기쿼리를 전송하는 데 사용할 프로젝트에서 API를 사용 설정해야 합니다. 이것은 쿼리 범위를 지정하는 리소스와 동일할 필요가 없습니다.
선택사항: 정책 분석 도구 작동 방식을 이해합니다.
선택사항: 조직당 하루에 20개가 넘는 정책 분석 쿼리를 실행하려면 Security Command Center 프리미엄 또는 엔터프라이즈 등급의 조직 수준 활성화가 있는지 확인합니다. 자세한 내용은 결제 관련 문의를 참조하세요.
필수 역할 및 권한
허용 정책을 분석하려면 다음 역할 및 권한이 필요합니다.
필요한 IAM 역할
허용 정책을 분석하는 데 필요한 권한을 얻으려면 관리자에게 쿼리 범위를 지정할 프로젝트, 폴더 또는 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- Cloud 애셋 뷰어(
roles/cloudasset.viewer) - 커스텀 IAM 역할로 정책 분석: 역할 뷰어 (
roles/iam.roleViewer) - Google Cloud CLI를 사용하여 정책 분석: 서비스 사용량 소비자 (
roles/serviceusage.serviceUsageConsumer)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 허용 정책을 분석하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
허용 정책을 분석하려면 다음 권한이 필요합니다.
-
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 권한이 필요합니다.
이 권한은 그룹 리더 관리자와 그룹 관리자 또는 최고 관리자 역할과 같은 보다 강력한 역할에 포함되어 있습니다. 이러한 역할을 부여하는 방법은 특정 관리자 역할 할당하기를 참조하세요.
리소스에 액세스할 수 있는 주 구성원 확인
정책 분석 도구를 사용하면 프로젝트, 폴더, 조직의 특정 리소스에 대한 특정 역할 또는 권한이 있는 주 구성원을 확인할 수 있습니다. 이 정보를 가져오려면 액세스를 분석할 리소스와 확인할 하나 이상의 역할 또는 권한이 포함된 쿼리를 만듭니다.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.
쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석 도구는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.
다음에 대해 확인할 리소스 및 확인할 역할 또는 권한을 선택합니다.
- 매개변수 1 필드의 드롭다운 메뉴에서 리소스를 선택합니다.
- 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.
- 선택기 추가를 클릭합니다.
- 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
- 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
- 선택사항: 추가 역할 및 권한을 확인하려면 확인하려는 역할 및 권한이 모두 나열될 때까지 역할 및 권한 선택기를 계속 추가합니다.
선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.
맞춤 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 리소스에 대한 지정된 역할 또는 권한이 있는 모든 주 구성원의 결과 표가 표시됩니다.
Google Cloud 콘솔의 정책 분석 쿼리를 실행하는 데 1분이 걸릴 수 있습니다. 1분이 지나면 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud 콘솔에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 결과를 더 가져오려면 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 리소스에 대한 특정 역할이나 권한이 있는 주 구성원을 확인할 수 있습니다. 이 정보를 가져오려면 확인할 역할 또는 권한을 하나 이상 포함하지만 리소스를 지정하지 않는 쿼리를 만드세요.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.
쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석 도구는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.
매개변수 1 필드에서 역할 또는 권한을 선택합니다.
역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
선택사항: 추가 역할 및 권한을 확인하려면 다음을 수행합니다.
- 선택기 추가를 클릭합니다.
- 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
- 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
- 확인하려는 모든 역할과 권한이 나열될 때까지 역할 및 권한 선택기를 계속 추가합니다.
선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.
맞춤 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 모든 범위 내 리소스에서 지정된 역할 또는 권한이 있는 모든 주 구성원의 결과 표가 표시됩니다.
Google Cloud 콘솔의 정책 분석 쿼리를 실행하는 데 1분이 걸릴 수 있습니다. 1분이 지나면 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud 콘솔에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 결과를 더 가져오려면 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에 정책 분석 기록을 참조하세요.
주 구성원이 리소스에서 가진 액세스 권한 확인
정책 분석 도구를 사용하면 주 구성원이 조직의 리소스에 대해 갖는 역할 또는 권한을 확인할 수 있습니다. 이 정보를 가져오려면 액세스 권한을 분석하려는 주 구성원과 리소스를 포함하는 쿼리를 만듭니다.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.
쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석 도구는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.
확인하려는 리소스와 주 구성원을 선택합니다.
- 매개변수 1 필드의 드롭다운 메뉴에서 리소스를 선택합니다.
- 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.
- 선택기 추가를 클릭합니다.
- 매개변수 2 필드의 드롭다운 메뉴에서 주 구성원을 선택합니다.
- 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.
선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.
맞춤 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 리소스에 대해 지정된 주 구성원에게 부여된 모든 역할의 결과 표가 표시됩니다.
Google Cloud 콘솔의 정책 분석 쿼리를 실행하는 데 1분이 걸릴 수 있습니다. 1분이 지나면 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud 콘솔에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 결과를 더 가져오려면 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개 이상 포함하는 쿼리를 만드세요.
콘솔
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.
쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석 도구는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.
다음에 대해 확인할 주 구성원 및 확인할 역할 또는 권한을 선택합니다.
- 매개변수 1 필드의 드롭다운 메뉴에서 주 구성원을 선택합니다.
- 주 구성원 필드에 사용자, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 사용자, 서비스 계정 또는 그룹을 선택합니다.
- 선택기 추가를 클릭합니다.
- 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
- 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
- 선택사항: 추가 역할 및 권한을 확인하려면 확인하려는 역할 및 권한이 모두 나열될 때까지 역할 및 권한 선택기를 계속 추가합니다.
선택사항: 계속을 클릭한 후 이 쿼리에 사용할 고급 옵션을 선택합니다.
맞춤 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 주 구성원이 지정된 역할 또는 권한을 가지는 모든 리소스의 결과 테이블이 표시됩니다.
Google Cloud 콘솔의 정책 분석 쿼리를 실행하는 데 1분이 걸릴 수 있습니다. 1분이 지나면 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud 콘솔에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 결과를 더 가져오려면 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 애셋 인벤토리 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 |
이 옵션을 사용 설정하면 정책 분석 도구가 추가 분석 쿼리를 실행하여 지정된 리소스에 대해 지정된 권한을 갖는 서비스 계정을 누가 가장할 수 있는지 확인합니다. 정책 분석 도구는 쿼리 결과에서 각 서비스 계정에 대해 하나의 쿼리를 실행합니다. 이러한 쿼리는 누가 서비스 계정의 다음 권한을 갖는지 분석합니다.
많은 쿼리를 자동으로 실행하므로 이는 비용이 많이 드는 작업입니다. |
--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 |
이 옵션을 사용 설정하면 정책 분석 도구가 추가 분석 쿼리를 실행하여 지정된 리소스에 대해 지정된 권한을 갖는 서비스 계정을 누가 가장할 수 있는지 확인합니다. 정책 분석 도구는 쿼리 결과에서 각 서비스 계정에 대해 하나의 쿼리를 실행합니다. 이러한 쿼리는 누가 서비스 계정의 다음 권한을 갖는지 분석합니다.
많은 쿼리를 자동으로 실행하므로 이는 비용이 많이 드는 작업입니다. |
expandGroups |
이 옵션을 사용 설정하면 쿼리 결과의 모든 그룹이 개별 구성원으로 확장됩니다. 충분한 그룹 권한이 있으면 중첩된 그룹도 확장됩니다. 이 확장은 그룹당 구성원 1,000명으로 제한됩니다. 이 옵션은 쿼리에 주 구성원을 지정하지 않는 경우에만 효과가 있습니다. |
expandResources |
이 옵션을 사용 설정하면 쿼리 결과에 있는 모든 상위 리소스(프로젝트, 폴더, 조직)에 대해 최대 1,000개의 관련 하위 리소스가 나열됩니다. |
expandRoles |
이 옵션을 사용 설정하면 역할 자체 외에도 각 역할 내의 모든 권한이 쿼리 결과에 나열됩니다. 이 옵션은 쿼리에 권한 또는 역할을 지정하지 않는 경우에만 사용할 수 있습니다. |
outputGroupEdges |
이 옵션을 사용 설정하면 쿼리 결과가 그룹 간의 관련 구성원 관계를 출력합니다. |
outputResourceEdges |
이 옵션을 사용 설정하면 쿼리 결과가 리소스 간의 관련 상위/하위 관계를 출력합니다. |
결과 시각화
정책 분석 도구를 사용하여 허용 정책 쿼리를 시각화할 수 있습니다. 이렇게 하면 리소스 계층 구조 내의 ID, 역할, 권한, 리소스 간의 관계를 이해하는 데 도움이 됩니다. 이러한 시각화를 사용하여 주체에 대해 사용되지 않거나 과도한 권한을 평가할 수도 있습니다.
정책 분석기는 권한을 부여하는 역할을 기반으로 관계를 시각화합니다. 특정 권한으로 범위가 지정된 쿼리는 해당 권한을 제공하는 역할의 허용 정책 바인딩을 표시합니다.
폴더 또는 조직 리소스 범위로 지정된 쿼리는 쿼리에 리소스가 지정되지 않은 경우 지정된 범위의 허용 정책 바인딩을 표시합니다. 쿼리가 조직 또는 폴더로 범위가 지정된 경우 프로젝트 내 리소스에 대한 허용 정책 바인딩을 보려면 쿼리에서 리소스를 지정하고 범위 내 바인딩 표시를 선택합니다.
프로젝트 리소스에 범위가 지정된 쿼리는 기본적으로 프로젝트 리소스와 프로젝트 내 리소스에 대한 허용 정책 바인딩을 표시합니다. 프로젝트 리소스의 허용 정책 바인딩만 표시하려면 범위 내 바인딩 표시를 선택 해제합니다.
프로젝트 리소스 옆에 있는 숫자는 부여된 역할을 사용하여 액세스할 수 있는 해당 프로젝트 내 리소스의 수를 나타냅니다. 숫자가 있는 프로젝트 리소스에서 펼치기를 클릭하면 해당 프로젝트 내에서 부여된 역할을 사용하여 액세스할 수 있는 리소스가 서비스별로 집계되어 표시됩니다. 예를 들어 BigQuery 테이블과 데이터 세트는 BigQuery 아래에 수집됩니다.
직접 주체 바인딩이 먼저 표시됩니다. 그룹 멤버십의 중첩된 바인딩은 나중에 로드됩니다. 중첩된 그룹을 통해 액세스 권한이 부여된 경우 필요한 권한이 있으면 바인딩이 있는 특정 그룹으로 연결되는 링크가 표시됩니다. 더 많은 그룹 멤버십을 보려면 더보기를 클릭합니다.
다음 예에서는 리소스에 액세스할 수 있는 주 구성원을 확인하기 위한 쿼리를 시각화하는 방법을 보여주지만, 동일한 프로세스를 사용하여 다른 쿼리 유형을 시각화할 수도 있습니다.
Google Cloud 콘솔에서 정책 분석기 페이지로 이동합니다.
정책 분석 섹션에서 커스텀 쿼리 라벨이 지정된 창을 찾고 해당 창에서 커스텀 쿼리 만들기를 클릭합니다.
쿼리 범위 선택 필드에서 쿼리 범위로 지정할 프로젝트, 폴더, 조직을 선택합니다. 정책 분석 도구는 프로젝트, 폴더, 조직 내 리소스는 물론 프로젝트, 폴더, 조직에 대한 액세스 권한을 분석합니다.
다음에 대해 확인할 주 구성원 및 확인할 역할 또는 권한을 선택합니다.
- 매개변수 1 필드의 드롭다운 메뉴에서 주 구성원을 선택합니다.
- 주 구성원 필드에 주 구성원, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 주 구성원, 서비스 계정 또는 그룹을 선택합니다.
- 선택기 추가를 클릭합니다.
- 매개변수 2 필드에서 역할 또는 권한을 선택합니다.
- 역할 선택 또는 권한 선택 필드에서 확인할 역할 또는 권한을 선택합니다.
- 선택사항: 추가 역할 및 권한을 확인하려면 확인하려는 역할 및 권한이 모두 나열될 때까지 역할 및 권한 선택기를 계속 추가합니다. 역할과 권한을 최대 10개까지 조합하여 선택할 수 있습니다.
맞춤 쿼리 창에서 분석 > 쿼리 실행을 클릭합니다. 보고서 페이지에는 입력한 쿼리 매개변수와 지정된 주 구성원이 지정된 역할 또는 권한을 가지는 모든 리소스의 결과 표가 표시됩니다.
Google Cloud 콘솔의 정책 분석 쿼리를 실행하는 데 1분이 걸릴 수 있습니다. 1분이 지나면 Google Cloud 콘솔에서 쿼리를 중지하고 사용 가능한 모든 결과를 표시합니다. 쿼리가 해당 시간 내에 완료되지 않은 경우 Google Cloud 콘솔에 결과가 불완전하다는 배너가 표시됩니다. 이러한 쿼리에 대한 결과를 더 가져오려면 BigQuery로 결과를 내보냅니다.
보고서 페이지에서 결과 시각화를 클릭합니다.

시각화는 최대 4개의 열로 왼쪽에서 오른쪽으로 구성됩니다. 시각화의 선은 주 구성원을 그룹에, 주 구성원 또는 그룹을 역할에, 역할을 리소스에 연결합니다.
- 왼쪽에는 쿼리로 반환된 주체가 표시됩니다.
- 그룹에 역할이 부여되어 주 구성원이 역할을 갖는 경우 '구성원'이라는 라인이 해당 주 구성원을 그룹에 연결합니다. 주 구성원에게 역할이 직접 부여된 경우 이 열은 표시되지 않습니다.
- 'has'라는 라인은 각 주 구성원 또는 그룹을 역할에 연결합니다.
- '액세스 권한이 있는'이라는 라벨이 지정된 선은 각 역할을 권한이 부여된 리소스에 연결합니다.
- 부여된 역할의 영향을 받는 리소스 수는 리소스 옆에 숫자로 표시됩니다.
- 기존 역할 추천 또는 정책 통계가 있는 경우 역할이 원으로 표시되고 전구 아이콘이 표시됩니다. 역할을 클릭하여 추천에 대한 자세한 내용을 확인하고 링크를 사용하여 검토하고 적용할 수 있습니다.
쿼리를 조정하려면 '결과 시각화' 패널 전환을 클릭합니다.

- 범위 필드에서 찾아보기를 클릭하여 쿼리 범위로 지정할 프로젝트, 폴더 또는 조직을 변경합니다.
- 주 구성원 필드에 주 구성원, 서비스 계정 또는 그룹의 이름을 입력합니다. 그런 다음 제공된 주 구성원 목록에서 액세스를 분석하려는 주 구성원, 서비스 계정 또는 그룹을 선택합니다.
- 질문의 역할을 변경하려면 역할 선택 또는 권한 필드에서 확인할 역할 또는 권한을 선택합니다.
- 쿼리의 리소스를 변경하려면 리소스 필드에 액세스를 분석할 리소스의 전체 리소스 이름을 입력합니다. 전체 리소스 이름을 모르면 리소스의 표시 이름을 입력하기 시작한 다음 제공된 리소스 목록에서 리소스를 선택합니다.
- 검색을 클릭하여 시각화를 업데이트합니다.
제한사항
특정 유형의 주 구성원의 액세스를 분석할 때 정책 분석 도구에는 다음과 같은 제한사항이 있습니다.
에이전트 주 구성원: 에이전트 ID가 액세스할 수 있는 역할과 리소스를 검색하면 검색 결과가 에이전트 ID에 대한 직접 바인딩과 다음 주 구성원 집합으로 제한됩니다.
신뢰 도메인의 모든 에이전트 ID입니다. 형식은
principalSet://<var>TRUST_DOMAIN</var>/*입니다. 예를 들면principalSet://agents.global.org-123456789012.system.id.goog/*입니다.platformContainer속성이 있는 모든 에이전트 ID(principalSet://<var>TRUST_DOMAIN</var>/attribute.platformContainer/aiplatform/projects/<var>PROJECT_NUMBER</var>형식 사용) 예를 들면principalSet://agents.global.org-123456789012.system.id.goog/attribute.platformContainer/aiplatform/projects/9876543210입니다.platform속성이 있는 모든 에이전트 ID(principalSet://<var>TRUST_DOMAIN</var>/attribute.platform/aiplatform형식 사용) 예를 들면principalSet://agents.global.org-123456789012.system.id.goog/attribute.platform/aiplatform입니다.container속성이 있는 모든 에이전트 ID(principalSet://<var>TRUST_DOMAIN</var>/attribute.container/projects/<var>PROJECT_NUMBER</var>형식 사용) 예를 들면principalSet://agents.global.org-123456789012.system.id.goog/attribute.container/projects/9876543210입니다.
워크로드 아이덴티티 또는 직원 주 구성원: 워크로드 또는 직원 풀의 단일 ID가 액세스할 수 있는 역할과 리소스를 검색하면 검색 결과가 다음 주 구성원 집합으로 제한됩니다.
각 워크로드 아이덴티티 풀의 모든 ID입니다.
principalSet://iam.googleapis.com/projects/<var>PROJECT_NUMBER</var>/locations/global/workloadIdentityPools/<var>POOL_ID</var>/*형식을 사용합니다. 예를 들면principalSet://iam.googleapis.com/projects/9876543210/locations/global/workloadIdentityPools/altostrat-contractors/*입니다.각 직원 풀의 모든 ID(
principalSet://iam.googleapis.com/locations/global/workforcePools/<var>POOL_ID</var>/*형식 사용) 예를 들면principalSet://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/*입니다.
정책 분석 도구 시각화에는 다음과 같은 제한사항이 있습니다.
쿼리를 만들 때 고급 옵션에서 선택한 내용이 시각화에 반영되지 않을 수 있습니다.
쿼리 결과가 너무 크거나 복잡하여 효과적으로 렌더링할 수 없는 시각화가 생성되면 경고 메시지가 표시됩니다. 이 문제를 해결하려면 쿼리 매개변수를 조정하여 표시되는 결과 집합을 좁히세요.
시각화에는 최대 1,000개의 그룹이 표시될 수 있습니다.
다음 단계
AnalyzeIamPolicyLongrunning을 사용하여 BigQuery에 쓰기 또는 Cloud Storage에 쓰기 방법을 알아봅니다.- REST API를 사용하여 정책 분석 쿼리 저장을 수행하는 방법을 알아봅니다.
- 주 구성원에게 특정 유형의 액세스 권한이 없는 이유를 확인하는 데 사용할 수 있는 액세스 문제 해결 도구에 대해 살펴봅니다.