gcp-check-permissions
서비스 계정이 조회 범위에서 Google Cloud 확장 명령어에 필요한 권한을 가졌는지 확인합니다.
문법
gcp-check-permissions [profile=STRING] [scope=STRING]
옵션
- profile=STRING
- 선택 옵션. Google Cloud 접속 프로파일 식별자. 쉼표로 여러 개를 지정하면 프로파일마다 차례로 조회하고 profile 필드로 구분합니다. 생략하면 사용 권한이 있는 모든 Google Cloud 접속 프로파일로 조회합니다. 조회 중 한 프로파일에서 오류가 나면 그때까지 출력한 결과는 남고, 나머지 프로파일은 조회하지 않은 채 쿼리가 오류로 끝납니다.
- scope=STRING
- 선택 옵션. 점검할 범위.
projects/프로젝트ID(또는projects/프로젝트번호),folders/폴더번호,organizations/조직번호중 하나. 생략하면 서비스 계정 JSON 키의 프로젝트를 점검합니다.
출력 필드
| 필드 | 타입 | 이름 | 설명 |
|---|---|---|---|
| profile | 문자열 | 프로파일 | 접속 프로파일 이름 |
| scope | 문자열 | 조회 범위 | 점검한 조회 범위 |
| permission | 문자열 | 권한 | IAM 권한 |
| granted | 불리언 | 보유 여부 | 서비스 계정이 조회 범위에서 권한을 가졌는지 여부 |
| required_by | 문자열 | 사용 명령어 | 이 권한이 필요한 확장 명령어 |
| recommended_role | 문자열 | 권장 역할 | 권한이 없을 때 부여할 기본 역할. 실제 부여된 역할이 아닌 안내값 |
오류 코드
파싱 오류
| 오류 메시지 | 원인 | 해결 |
|---|---|---|
| 사용 가능한 Google Cloud 프로파일이 없습니다. | 프로파일 식별자가 틀렸거나 사용 권한이 없음 | profile 옵션에 접속 프로파일 식별자 입력, 프로파일 사용 권한 확인 |
| scope 형식이 올바르지 않습니다: {scope} | scope 형식 오류 | projects/, folders/, organizations/ 다음에 ID·번호 입력 |
런타임 오류
| 오류 메시지 | 원인 | 해결 |
|---|---|---|
| HTTP 403: PERMISSION_DENIED - Cloud Resource Manager API has not been used in project ... | 서비스 계정 프로젝트에서 Cloud Resource Manager API 미사용 설정 | 서비스 계정이 속한 프로젝트에서 Cloud Resource Manager API 사용 설정 |
| token exchange failed, HTTP 400: Invalid grant | JSON 키 오류, 서비스 계정·키 삭제 | 새 키를 발급해 접속 프로파일 수정 |
설명
Cloud Resource Manager API v3의 testIamPermissions로 서비스 계정이 지정한 범위에서 아래 권한을 가졌는지 확인하고, 권한마다 한 행을 출력합니다. 권한을 바꾸지 않고 확인만 합니다.
| 권한 | 사용 명령어 (required_by) | 권장 역할 (recommended_role) |
|---|---|---|
| cloudasset.assets.searchAllResources | gcp-assets, gcp-iam-policies | roles/cloudasset.viewer (Cloud 애셋 뷰어) |
| cloudasset.assets.searchAllIamPolicies | gcp-iam-policies | roles/cloudasset.viewer (Cloud 애셋 뷰어) |
| resourcemanager.projects.get | gcp-projects | roles/browser (탐색자) |
권한이 없는 범위를 지정해도 오류 없이 granted가 false로 나옵니다. 설치 직후나 다른 명령어에서 권한 오류가 났을 때 원인을 확인하는 용도로 사용합니다.
Note
이 명령어를 실행하는 데는 별도 역할이 필요 없지만, 서비스 계정이 속한 프로젝트에서 Cloud Resource Manager API가 사용 설정돼 있어야 합니다. 역할을 부여한 직후에는 반영까지 몇 분 걸릴 수 있습니다.
사용 예
예시: 조직 범위 권한 점검
상황: 조직 단위로 조회하기 전에 서비스 계정에 필요한 권한이 모두 있는지 확인합니다.
예상 결과:
| profile | scope | permission | granted | required_by | recommended_role |
|---|---|---|---|---|---|
| gcp | organizations/123456789012 | cloudasset.assets.searchAllResources | true | gcp-assets, gcp-iam-policies | roles/cloudasset.viewer |
| gcp | organizations/123456789012 | cloudasset.assets.searchAllIamPolicies | true | gcp-iam-policies | roles/cloudasset.viewer |
| gcp | organizations/123456789012 | resourcemanager.projects.get | true | gcp-projects | roles/browser |
결과 해석: granted가 false인 행이 있으면 recommended_role 필드의 역할을 해당 범위에 부여합니다.
예시: 부족한 권한만 보기
상황: 여러 접속 프로파일 중 권한이 부족한 것을 찾습니다.
gcp-check-permissions profile=gcp,gcp2
| search granted == false
| fields profile, scope, permission, required_by, recommended_role
결과 해석: 결과가 없으면 모든 프로파일이 필요한 권한을 가진 것입니다.