커스텀 역할은 사용자가 정의하며 지원되는 권한을 사용자의 필요에 맞도록 하나 이상 결합할 수 있다. 커스텀 역할은 Google에서 유지관리하지 않는다. 즉, Google Cloud에 새로운 권한, 기능, 서비스가 추가되어도 커스텀 역할은 자동으로 업데이트되지 않는다. 커스텀 역할을 만들 때 조직 또는 프로젝트를 선택해야 한다. 그런 다음 조직 또는 프로젝트에 대한 커스텀 역할과 해당 조직 또는 프로젝트 내의 모든 리소스에 대한 커스텀 역할을 부여할 수 있다. 폴더 수준에서는 커스텀 역할을 만들 수 없다. 폴더 내에서 커스텀 역할을 사용해야 하는 경우 폴더의 상위 항목에 커스텀 역할을 정의한다.
IAM 환경에서 권한은 다음 형식으로 표시된다.
service.resource.verb
예를 들어 compute.instances.list 권한이 있는 사용자는 자신이 소유한 Compute Engine 인스턴스를 나열할 수 있고, compute.instances.stop 권한이 있는 사용자는 VM을 중지할 수 있다.
커스텀 역할을 만들려면 호출자는 iam.roles.create 권한이 있어야 한다. 조직 관리자를 비롯하여 소유자가 아닌 사용자에게는 조직 역할 관리자 역할(roles/iam.organizationRoleAdmin) 또는 IAM 역할 관리자 역할(roles/iam.roleAdmin)을 할당해야한다. 'IAM 보안 검토자' 역할(roles/iam.securityReviewer)을 사용하면 커스텀 역할을 볼 수는 있지만 관리할 수는 없다.
Cloud Deployment Manager를 사용하면 커스텀 역할을 더 쉽게 구성하고 유지관리할 수 있다. Cloud Deployment Manager에서는 구성 파일을 사용하여 역할을 설명할 수 있으며 이 역할은 선택한 소스 제어 시스템에 체크인할 수 있다. Deployment Manager와 소스 제어를 함께 사용하면 다음 목적으로 'config-as-code(코드로 구성)'를 더 쉽게 만들 수 있다.
( Deployment Manager는 배포를 설명하기 위해 3가지 파일 유형을 사용한다. 각 유형에 관해 설명하자면 다음과 같다.
1. 구성은 리소스 및 해당 속성을 설명하는 YAML 파일! ID 및 액세스 관리(IAM) 커스텀 역할에서 각 YAML 파일은 이름, 설명, 권한 등 하나 이상의 커스텀 역할에 대한 모든 속성을 지정
2. 스키마는 주어진 리소스 및 해당 기본값에 대한 가능한 모든 속성을 지정. IAM 커스텀 역할의 경우 프로젝트 수준 및 조직 수준의 커스텀 역할에 대한 스키마가 있다.
3. 템플릿은 구성을 재사용 가능한 부분으로 분해하여 구성을 개선하는 Jinja 또는 Python 파일! IAM 커스텀 역할에서는 두 가지 템플릿, 즉 프로젝트 수준 커스텀 역할용 템플릿과 조직 수준 커스텀 역할용 템플릿이 제공된다. )
Deployment Manager를 사용해 커스텀 역할을 배포하려면
gcloud deployment-manager deployments create \
your-deployment-name --config project_custom_role.yaml
Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully.
NAME TYPE STATE ERRORS INTENT
custom-role gcp-types/iam-v1:projects.roles COMPLETED []