IAM 커스텀 역할 이해

Google Cloud IAM(Identity and Access Management)은 특정 Google Cloud Platform 리소스에 대해 세밀한 액세스 권한을 부여하며 다른 리소스에 대한 무단 액세스를 방지하는 사전 정의된 역할을 제공합니다.

또한 Cloud IAM을 이용하면 맞춤설정된 Cloud IAM 역할을 만들 수 있습니다. 1개 이상의 권한을 가진 커스텀 Cloud IAM 역할을 만들고 이를 사용자에게 부여할 수 있습니다. Cloud IAM은 커스텀 역할을 만들고 관리하는 데 필요한 UI 및 API를 제공합니다.

이 주제에서는 커스텀 역할에 포함할 수 있는 모든 Cloud IAM 권한의 전체 목록을 제공하지 않습니다. 커스텀 역할에서 특정 권한이 지원되는지 확인하려면 커스텀 역할의 권한 지원 수준을 참조하세요. 특정 서비스의 커스텀 역할에 대해 알아보려면 기타 IAM 문서 섹션을 참조하세요.

시작하기 전에

기본 개념

Cloud IAM에서는 사용자에게 권한을 직접 부여하지 않습니다. 대신 하나 이상의 권한이 결합된 역할을 부여합니다. Cloud IAM에는 사전 정의된 역할과 커스텀 역할이라는 두 가지 역할이 있습니다.

사전 정의된 역할은 Google에서 만들고 유지관리합니다. 해당 역할의 권한은 GCP에 새로운 기능이나 서비스가 추가될 때와 같이 필요한 경우에 자동으로 업데이트됩니다.

커스텀 역할은 사용자가 정의하며 지원되는 권한을 사용자의 필요에 맞도록 하나 이상 결합할 수 있습니다. 커스텀 역할은 Google에서 유지관리하지 않습니다. 즉, GCP에 새로운 권한, 기능, 서비스가 추가되어도 커스텀 역할은 자동으로 업데이트되지 않습니다.

사용 가능한 Cloud IAM 권한을 하나 이상 결합하여 커스텀 역할을 만들 수 있습니다. 권한을 통해 사용자는 Google Cloud Platform 리소스에 특정 작업을 할 수 있습니다. Cloud IAM 환경에서 권한은 다음 형식으로 표시됩니다.

<service>.<resource>.<verb>

예를 들어 compute.instances.list 권한을 통해 사용자는 소유한 Google Compute Engine 인스턴스를 나열할 수 있으며, compute.instances.stop 권한을 통해 가상 머신을 중지할 수 있습니다.

항상 그런 것은 아니지만 권한은 일반적으로 REST 메소드와 1:1로 대응합니다. 다시 말해, 각 GCP 서비스에는 보유하고 있는 REST 메소드마다 연결된 권한이 있습니다. 메소드를 호출하려면 호출자에게 해당 권한이 필요합니다. 예를 들어 topic.publish() 호출자는 pubsub.topics.publish 권한이 필요합니다.

커스텀 역할은 해당 역할 및 리소스를 소유한 같은 프로젝트 또는 조직의 정책에서 권한을 부여하는 데만 사용할 수 있습니다. 다른 프로젝트 또는 조직이 소유한 리소스에 대해서는 커스텀 역할을 부여할 수 없습니다.

필수 권한 및 역할

커스텀 역할을 만들려면 호출자에게 iam.roles.create 권한이 필요합니다.

조직 관리자를 비롯하여 소유자가 아닌 사용자에게는 '조직 역할 관리자' 역할(roles/iam.organizationRoleAdmin) 또는 'IAM 역할 관리자' 역할(roles/iam.roleAdmin)을 할당해야 합니다. 'IAM 보안 검토자' 역할(roles/iam.securityReviewer)을 사용하면 커스텀 역할을 볼 수는 있지만 관리할 수는 없습니다.

커스텀 역할 사용자 인터페이스는 Google Cloud Platform 콘솔에서 IAM 역할 아래에 있으며 커스텀 역할을 만들거나 관리할 권한이 있는 사용자에게만 표시됩니다. 기본적으로 프로젝트 소유자만 새로운 역할을 만들 수 있습니다. 프로젝트 소유자는 같은 프로젝트의 다른 사용자에게 'IAM 역할 관리자' 역할을 부여하여 이 기능에 대한 액세스를 제어할 수 있습니다. 조직의 경우, 조직 관리자만 '조직 역할 관리자' 역할을 부여할 수 있습니다.

관리자 역할은 아래에 자세히 설명되어 있습니다.

'조직 역할 관리자' 역할

GCP 계정과 연결된 조직이 있는 경우 '조직 역할 관리자' 역할을 통해 조직의 모든 커스텀 역할을 관리할 수 있습니다. 이 역할은 조직 수준에서만 부여됩니다. 조직 관리자만이 '조직 역할 관리자' 역할을 부여할 수 있습니다.

다음 표에는 '조직 역할 관리자' 역할 권한이 나와 있습니다.

역할 권한
roles/iam.organizationRoleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.list
resourcemanager.organizations.get
resourcemanager.organizations.getIamPolicy

'역할 관리자' 역할

'역할 관리자' 역할을 통해 프로젝트의 모든 커스텀 역할을 관리할 수 있습니다. 조직이 없으면 이 역할을 사용하세요. 이 역할은 프로젝트 또는 조직 소유자가 프로젝트 수준에서만 부여할 수 있습니다.

다음 표에는 '역할 관리자' 역할의 권한이 나와 있습니다.

역할 권한
roles/iam.roleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy

커스텀 역할 수명주기

커스텀 역할을 모델링하고 생성하고 관리하는 방법을 결정할 때 적용되는 몇 가지 개념이 있습니다.

생성

커스텀 역할을 만들기 전에 서비스에서 이미 요구사항에 맞는 사전 정의된 역할(또는 역할 모음)이 있는지 확인합니다. 특정 서비스에 적용되는 권한에 대해 자세히 알아보려면 기타 IAM 문서 섹션의 링크를 클릭하세요. 사전 정의된 역할에 포함된 권한의 목록을 보려면 역할 메타데이터 가져오기를 참조하세요.

1개 이상의 사전 정의된 역할에 부여된 권한 모음이 적합하지 않은 경우 1개 이상의 사전 정의된 역할로 커스텀 역할을 만들고 필요에 따라 권한을 추가하거나 삭제해야 합니다. 이렇게 하는 방법에 대한 자세한 내용은 커스텀 역할 생성 및 관리를 참조하세요.

지원되지 않거나 사용할 수 없는 권한

일부 권한은 사용자에게 표시되지 않거나 커스텀 역할에서 사용하지 못할 수 있습니다. 예를 들어 서비스가 베타 버전이거나 서비스에 API를 사용 설정하지 않으면 커스텀 역할에서 권한을 사용하지 못할 수 있습니다.

권한을 커스텀 역할에 포함할 수 있는지 확인하려면 커스텀 역할 생성 및 관리리소스에 사용할 수 있는 권한 보기 섹션을 참조하세요.

다음 Cloud IAM 권한은 커스텀 역할에서 지원되지 않습니다.

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

특정 GCP 서비스의 커스텀 역할에서 지원되는 권한을 확인하려면 아래 표를 참조하세요.

권한 종속성

일부 권한은 쌍으로 부여된 경우에만 유효합니다. 예를 들어 Cloud IAM 정책 업데이트 시 Read-Modify-Write 패턴을 따라야 하므로 setIamPolicy는 정책 업데이트 전에 etag를 가져올 수 있도록 거의 항상 getIamPolicy를 사용해야 합니다.

역할 이름 지정

커스텀 역할의 ID는 고유해야 하지만 이름 속성은 고유하지 않아도 됩니다.

따라서 GCP 콘솔은 같은 이름으로 여러 커스텀 역할을 표시할 수 있습니다. 혼란을 피하려면 설명이 포함된 고유한 이름을 커스텀 역할에 사용하세요.

역할의 ID는 변경할 수 없으므로 신중하게 선택하세요. 역할을 삭제할 수는 있지만 37일이 소요되는 삭제 프로세스가 완료되기 전까지는 같은 ID로 새로운 커스텀 역할을 만들 수 없습니다. 삭제 프로세스에 대한 자세한 내용은 커스텀 역할 삭제를 참조하세요.

역할 이름은 GCP 콘솔에 표시됩니다. GCP 콘솔에서 커스텀 역할을 선택할 때 사용자의 혼란을 막기 위해 모호하지 않은 이름을 선택합니다. 또한 해당 역할이 조직 수준인지 프로젝트 수준인지 파악할 수 있는 정보를 역할 이름에 포함하는 것이 좋습니다. 역할 이름은 언제든지 변경할 수 있습니다.

역할 설명

커스텀 역할을 수정하고 난 후 역할 설명을 업데이트하고 수정된 날짜 및 역할의 의도된 목적을 간략히 추가합니다.

테스트 및 배포

커스텀 역할에는 role.stage 속성이 포함됩니다. 처음에는 단계를 ALPHA로 설정하여 역할이 아직 초기 개발 단계이며 프로덕션 준비가 되지 않았음을 나타냅니다. 그런 다음 조직의 소수 구성원이 몇 가지 샘플 사용 사례에서 역할을 사용할 수 있도록 합니다.

구성원이 새로 만든 커스텀 역할에 만족하면 role.stage 속성을 BETA 또는 GA로 변경합니다. 일반적으로 커스텀 역할이 베타 버전인 서비스의 권한을 참조하는 경우 서비스가 정식으로 출시되기 전까지 해당 속성을 GA가 아닌 BETA로 표시해야 합니다.

유지관리

직무 및 제품 기능은 끊임없이 변화하고 있습니다. 따라서 커스텀 역할을 최신 상태로 유지하고 필요한 최소 권한을 할당하려면 유지관리 작업이 필요합니다.

예를 들어 출시된 서비스에 새로운 베타 기능이 추가되면 해당 API 메소드는 공개적으로 사용할 수 있게 되며 권한이 관련 기본 역할 및 사전 정의된 역할에 자동으로 추가됩니다. 이 서비스의 커스텀 역할은 이러한 새로운 권한을 상속하지 않으므로 해당 커스텀 역할에 할당된 사용자는 자신이 새로운 베타 기능에 액세스할 수 없다고 할 수 있습니다. 이 경우 권한을 추가하거나 특정 사용자에게만 이 베타 기능에 대한 액세스 권한을 부여하는 별도의 커스텀 역할을 만들 수 있습니다.

Google은 권한을 추가 또는 삭제하여 기존의 사전 정의된 역할을 업데이트할 수 있지만 사전 정의된 역할을 기반으로 하는 커스텀 역할은 수정하지 않습니다. 커스텀 역할은 단순한 권한 목록입니다. 즉, 기반이 될 수 있는 사전 정의된 역할에 대한 링크가 존재하지 않습니다.

기존 커스텀 역할의 설명 필드에 이러한 세부정보를 추가하여 사전 정의된 역할의 최근 변경에 따라 커스텀 역할을 업데이트해야 하는지 쉽게 확인할 수 있도록 하는 것이 좋습니다. GCP 콘솔은 새로운 커스텀 역할을 만들 때 이러한 정보를 설명에 자동으로 입력합니다.

최근 변경된 권한을 확인하려면 IAM 권한 변경 로그를 참조하세요.

커스텀 역할 사용 중지

조직 내 구성원들이 더 이상 역할을 사용하지 못하게 하려면 role.stage 속성을 DEPRECATED로 변경하고 필요한 경우 deprecation_message를 설정하여 사용자에게 대신 사용해야 하는 역할은 무엇인지 또는 어디서 자세한 정보를 확인할 수 있는지 알려줄 수 있습니다. 또한 조직에 여전히 지원 중단된 역할을 참조하는 정책이 없도록 해야 합니다.

역할을 사용 중지할 준비가 되면 roles:UpdateRole()을 호출하여 역할을 사용 중지합니다.

알려진 제한사항

  • 일부 사전 정의된 역할에는 지원 중단된 권한 또는 커스텀 역할에서 허용되지 않은 권한이 포함되어 있습니다. 지원 중단되었거나 제한된 권한이 포함된 사전 정의된 역할을 기반으로 하는 커스텀 역할에는 이러한 권한이 포함되지 않습니다. 지원되는 모든 권한의 전체 목록은 커스텀 역할의 권한 지원 수준을 참조하세요.

  • 프로젝트에서 생성된 커스텀 역할은 다른 프로젝트를 나열할 수 없습니다. resourcemanager.projects.list 권한이 포함된 사전 정의된 역할을 새로운 프로젝트 수준의 커스텀 역할에 복사하면 다음 메시지 중 하나가 표시됩니다.

    • GCP 콘솔: '프로젝트 수준의 맞춤 역할에 적용 불가'라는 경고 메시지가 표시됩니다. resourcemanager.projects.list 권한이 포함된 권한 목록에서 자동으로 선택 취소되며 역할 만들기를 계속 진행할 수 있습니다.
    • Cloud SDK gcloud 명령줄 도구: 오류 메시지(INVALID_ARGUMENT: Permission resourcemanager.projects.list is not valid)가 반환됩니다. 먼저 역할 정의에서 resourcemanager.projects.list 권한을 삭제하고 다시 작업을 시도할 때까지 커스텀 역할을 만들 수 없습니다.
    • Google Cloud API: HTTP 400 오류 코드 및 INVALID_ARGUMENT 상태 코드와 함께 오류 메시지(Permission resourcemanager.projects.list is not valid)가 반환됩니다. 먼저 역할 정의에서 resourcemanager.projects.list 권한을 삭제하고 다시 작업을 시도할 때까지 커스텀 역할을 만들 수 없습니다.

다음 단계

기타 IAM 문서

문서 설명
IAM 개요 IAM의 기본 개념을 설명합니다.
역할 이해 기본 및 사전 정의된 IAM 역할을 설명합니다.
조직 IAM 조직의 IAM 역할 및 권한을 설명합니다.
프로젝트 IAM 프로젝트의 IAM 역할 및 권한을 설명합니다.
App Engine IAM App Engine의 IAM 역할 및 권한을 설명합니다.
Cloud BigQuery IAM Cloud BigQuery의 IAM 역할 및 권한을 설명합니다.
Cloud Bigtable IAM Cloud Bigtable의 IAM 역할 및 권한을 설명합니다.
Cloud Billing API IAM Cloud Billing API의 IAM 역할 및 권한을 설명합니다.
Cloud Dataflow IAM Cloud Dataflow의 IAM 역할 및 권한을 설명합니다.
Cloud Dataproc IAM Cloud Dataproc의 IAM 역할 및 권한을 설명합니다.
Cloud Datastore IAM Cloud Datastore의 IAM 역할 및 권한을 설명합니다.
참고: Cloud Datastore는 현재 커스텀 역할을 지원하지 않습니다.
Cloud Deployment Manager IAM Cloud Deployment Manager의 IAM 역할 및 권한을 설명합니다.
Cloud DNS IAM Cloud DNS의 IAM 역할 및 권한을 설명합니다.
Kubernetes Engine IAM Kubernetes Engine의 IAM 역할 및 권한을 설명합니다.
Cloud Pub/Sub IAM Cloud Pub/Sub의 IAM 역할 및 권한을 설명합니다.
Cloud SQL IAM Cloud SQL의 IAM 역할 및 권한을 설명합니다.
Cloud Storage IAM Cloud Storage의 IAM 역할 및 권한을 설명합니다.
Compute Engine IAM Compute Engine의 IAM 역할 및 권한을 설명합니다.
폴더 IAM 폴더의 IAM 역할 및 권한을 설명합니다.
Service Management IAM Service Management의 IAM 역할 및 권한을 설명합니다.
Stackdriver Debugger IAM Stackdriver Debugger의 IAM 역할 및 권한을 설명합니다.
Stackdriver Logging IAM Stackdriver Logging의 IAM 역할 및 권한을 설명합니다.
Stackdriver Trace IAM Stackdriver Trace의 IAM 역할 및 권한을 설명합니다.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud ID 및 액세스 관리 문서