IAM 커스텀 역할 이해

ID 및 액세스 관리(IAM)는 특정 Google Cloud 리소스에 대한 세분화된 액세스 권한을 부여하고 다른 리소스에 대해 원치 않는 액세스를 차단하는 사전 정의된 역할을 제공합니다.

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

이 주제에서는 커스텀 역할에 포함할 수 있는 모든 IAM 권한의 전체 목록을 제공하지 않습니다. 커스텀 역할에서 특정 권한이 지원되는지 확인하려면 커스텀 역할의 권한 지원 수준을 참조하세요.

시작하기 전에

기본 개념

IAM에서는 사용자에게 권한을 직접 부여하지 않습니다. 대신 하나 이상의 권한이 결합된 역할을 부여합니다. IAM에는 여러 종류의 역할, 즉 기본 역할, 사전 정의된 역할, 커스텀 역할이 있습니다.

기본 역할로는 IAM 도입 전에도 존재했던 세 가지 역할인 소유자, 편집자, 뷰어 역할이 있습니다.

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

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

커스텀 역할을 만들 때 조직 또는 프로젝트를 선택해야 합니다. 그런 다음 조직 또는 프로젝트에 대한 커스텀 역할과 해당 조직 또는 프로젝트 내의 모든 리소스에 대한 커스텀 역할을 부여할 수 있습니다.

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

service.resource.verb

예를 들어 compute.instances.list 권한이 있는 사용자는 자신이 소유한 Compute Engine 인스턴스를 나열할 수 있고, compute.instances.stop 권한이 있는 사용자는 VM을 중지할 수 있습니다.

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

생성한 프로젝트 또는 조직 내에서만 커스텀 역할을 부여할 수 있습니다. 다른 프로젝트나 조직 또는 다른 프로젝트나 조직 내의 리소스에는 커스텀 역할을 부여할 수 없습니다.

필수 권한 및 역할

커스텀 역할을 만들려면 호출자는 iam.roles.create 권한이 있어야 합니다.

조직 관리자를 비롯하여 소유자가 아닌 사용자에게는 조직 역할 관리자 역할(roles/iam.organizationRoleAdmin) 또는 IAM 역할 관리자 역할(roles/iam.roleAdmin)을 할당해야 합니다. 'IAM 보안 검토자' 역할(roles/iam.securityReviewer)을 사용하면 커스텀 역할을 볼 수는 있지만 관리할 수는 없습니다. 이러한 역할을 부여하는 방법을 알아보려면 액세스 권한 부여, 변경, 취소를 참조하세요.

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

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

'조직 역할 관리자' 역할

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

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

역할 권한
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

커스텀 역할 수명주기

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

생성

커스텀 역할을 만들기 전에 서비스에서 이미 요구사항에 맞는 사전 정의된 역할(또는 여러 사전 정의된 역할 조합)이 있는지 확인합니다. 사전 정의된 역할의 전체 목록과 각 사전 정의된 역할에 포함된 권한은 사전 정의된 역할 참조를 확인하세요.

요구사항에 맞는 사전 정의된 역할(또는 사전 정의된 역할 조합)이 없는 경우 부여해야 하는 권한만 포함하는 커스텀 역할을 만들 수 있습니다. 자세한 내용은 커스텀 역할 생성 및 관리를 참조하세요.

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

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

커스텀 역할에서 특정 권한이 지원되는지 확인하려면 커스텀 역할의 권한 지원 수준을 참조하세요. 특정 리소스와 함께 사용할 수 있는 권한을 확인하려면 리소스에 사용 가능한 권한 보기를 참조하세요.

권한 종속 항목

일부 권한은 쌍으로 부여된 경우에만 유효합니다. 예를 들어 IAM 정책을 업데이트하려면 읽기-수정-쓰기 패턴을 사용해야 합니다. 따라서 정책을 업데이트하려면 대부분의 경우 setIamPolicy 권한 외에 해당 서비스와 리소스 유형에 대해 getIamPolicy 권한이 필요합니다.

커스텀 역할의 효과적으로 사용하기 위해 유사한 권한이 부여된 사전 정의된 역할을 기반으로 커스텀 역할을 만들 수 있습니다. 사전 정의된 역할을 통해 조합에 일반적으로 어떤 권한이 사용되는지 확인할 수 있습니다.

사전 정의된 역할을 기반으로 커스텀 역할을 만드는 방법을 알아보려면 커스텀 역할 만들기 및 관리를 참조하세요.

역할 이름 지정

역할에는 ID와 이름이 모두 포함됩니다. 역할 ID는 역할의 고유 식별자입니다. 역할 이름은 Cloud Console의 역할 목록에 표시됩니다.

역할 ID는 역할을 만든 프로젝트 또는 조직 내에서 고유해야 합니다. 이렇게 하면 프로젝트 또는 조직이 포함된 역할의 전체 ID가 고유하게 됩니다. 역할 ID는 최대 64자이며 대문자 및 소문자 영숫자 문자, 밑줄, 마침표를 포함할 수 있습니다.

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

커스텀 역할의 이름은 고유하지 않아도 됩니다. 따라서 동일한 이름을 가진 둘 이상의 커스텀 역할이 Cloud Console에 나타날 수 있습니다. 혼란을 피하려면 설명이 포함된 고유한 이름을 커스텀 역할에 사용하세요. 또한 역할이 조직 수준 역할인지 프로젝트 수준 역할인지를 나타내는 것이 좋습니다.

역할 이름은 최대 100바이트까지 가능하며 대문자 및 소문자 영숫자 문자와 기호를 포함할 수 있습니다. 역할 이름은 언제든지 변경할 수 있습니다.

역할 설명

커스텀 역할을 수정하고 난 후 역할 설명을 업데이트하고 수정된 날짜 및 역할의 의도된 목적을 간략히 추가합니다. 설명은 영문 기준으로 최대 256자까지 가능하며 대문자 및 소문자 영숫자 문자와 기호를 포함할 수 있습니다.

테스트 및 배포

커스텀 역할에는 역할의 stage 속성에 저장된 출시 단계가 포함됩니다. 출시 단계는 정보 제공용입니다. 각 역할을 광범위하게 사용할 준비가 되었는지 여부를 추적하는 데 도움이 됩니다.

각 커스텀 역할에는 다음 출시 단계 중 하나가 포함될 수 있습니다.

출시 단계
ALPHA 이 역할은 아직 개발 중 또는 테스트 중이거나 아직 공개되지 않은 Google Cloud 서비스 또는 기능에 대한 권한을 포함합니다. 이 역할은 광범위하게 사용할 준비가 되지 않았습니다.
BETA 역할이 제한적으로 테스트되었거나 일반적으로 사용할 수 없는 Google Cloud 서비스 또는 기능에 대한 권한이 포함되어 있습니다.
GA 이 역할은 광범위하게 테스트되었으며 모든 권한은 일반 안정화 버전인 Google Cloud 서비스 또는 기능에 대한 권한입니다.

커스텀 역할을 만들 때 출시 단계를 ALPHA로 설정합니다. 조직의 소수 구성원에게 역할을 테스트해달라고 요청합니다. 커스텀 역할이 올바르게 작동하는지 확인한 후 출시 단계를 BETA 또는 GA로 변경합니다.

유지보수

직무 및 제품 기능은 끊임없이 변화하고 있습니다. 커스텀 역할을 최신 상태로 유지하고 최소 권한의 원칙을 준수하려면 유지보수 작업이 필요합니다.

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

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

커스텀 역할이 사전 정의된 역할을 기반으로 하는 경우 해당 역할을 커스텀 역할의 설명 필드에 나열하는 것이 좋습니다. 이렇게 하면 사전 정의된 역할의 변경사항에 따라 커스텀 역할을 업데이트해야 하는지 쉽게 확인할 수 있습니다. Cloud Console은 새 커스텀 역할을 만들 때 해당 정보를 설명에 자동으로 넣습니다. 커스텀 역할의 설명을 업데이트하는 방법을 알아보려면 기존 커스텀 역할 수정을 참조하세요.

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

커스텀 역할 사용 중지

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

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

제한 사항

  • 일부 사전 정의된 역할에는 커스텀 역할에서 허용되지 않는 권한이 포함되어 있습니다. 커스텀 역할에서 특정 권한이 지원되는지 확인하려면 커스텀 역할의 권한 지원 수준을 참조하세요.
  • resourcemanager.projects.list 권한은 조직 수준의 커스텀 역할에만 지원되며 프로젝트 수준의 커스텀 역할에서는 허용되지 않습니다. resourcemanager.projects.list 권한이 포함된 사전 정의된 역할을 새로운 프로젝트 수준의 커스텀 역할에 복사하면 다음 메시지 중 하나가 표시됩니다.
    • Cloud Console: '프로젝트 수준의 커스텀 역할에 적용 불가'라는 경고 메시지가 표시됩니다. resourcemanager.projects.list 권한이 포함된 권한 목록에서 자동으로 선택 취소되며 역할 만들기를 계속 진행할 수 있습니다.
    • Cloud SDK gcloud 명령줄 도구: 오류 메시지(INVALID_ARGUMENT: Permission resourcemanager.projects.list is not valid)가 반환됩니다. 먼저 역할 정의에서 resourcemanager.projects.list 권한을 삭제하고 다시 작업을 시도할 때까지 커스텀 역할을 만들 수 없습니다.
    • Google Cloud APIs: HTTP 400 오류 코드 및 INVALID_ARGUMENT 상태 코드와 함께 오류 메시지(Permission resourcemanager.projects.list is not valid)가 반환됩니다. 먼저 역할 정의에서 resourcemanager.projects.list 권한을 삭제하고 다시 작업을 시도할 때까지 커스텀 역할을 만들 수 없습니다.

다음 단계

커스텀 역할을 만드는 방법 알아보기