액세스 제어 개요

기본적으로 모든 Google Cloud Platform 프로젝트에는 원래 프로젝트 생성자인 단일 사용자가 존재합니다. 그 외 다른 사용자는 프로젝트에 대한 액세스 권한을 갖지 않으므로, 프로젝트 구성원으로 사용자를 추가할 때까지는 Compute Engine 리소스에 대한 액세스가 특정 리소스로만 제한됩니다. 이 페이지에서는 프로젝트에 새 사용자를 추가하는 여러 가지 방법과 Compute Engine 리소스에 대한 액세스 제어를 설정하는 방법에 대해 설명합니다.

또한 VM(가상 머신) 인스턴스에서 실행하는 애플리케이션이 Compute Engine 또는 다른 Google Cloud Platform API에 액세스할 필요가 있다면 사용자 인증 정보를 사용하는 대신 서비스 계정을 사용하여 애플리케이션을 인증할 수 있습니다.

사용자 액세스 제어 옵션

Compute Engine 리소스를 만들고 관리할 수 있는 권한을 다른 사용자에게 부여하려면 프로젝트와 특정 리소스에 팀 구성원으로 사용자를 추가하고 Cloud Identity and Access Management 역할을 사용하여 구성원에게 권한을 부여하면 됩니다.

팀 구성원은 유효한 Google 계정이 있는 개별 사용자, Google 그룹, 서비스 계정 또는 G Suite 도메인일 수 있습니다. 프로젝트 또는 리소스에 팀 구성원을 추가할 때는 구성원에게 부여할 역할을 지정합니다. Cloud IAM은 세 가지 유형의 역할, 즉 사전 정의된 역할, 기본 역할, 커스텀 역할을 제공합니다.

리소스는 GCP 리소스 계층 구조의 상위 리소스에 적용된 정책을 상속합니다. 리소스의 유효 정책은 해당 리소스에 설정된 정책과 상위 리소스에서 상속된 정책의 합집합입니다.

사전 정의된 Compute Engine 역할

사전 정의된 역할은 관련 권한 집합을 부여합니다. Compute Engine은 다음과 같은 사전 정의된 역할을 제공합니다.

역할 칭호 기능 타겟 사용자
Compute Engine 이미지 사용자

다른 프로젝트의 이미지를 나열하고 사용할 수 있는 권한입니다. 다른 역할과 함께 이 역할을 특정 멤버에 부여하면 해당 멤버가 다른 프로젝트의 이미지를 사용해서 새 리소스를 만들 수 있습니다. 예를 들어 이 역할과 인스턴스 관리자 역할을 부여하면 해당 멤버가 다른 프로젝트의 이미지를 사용하여 VM 인스턴스와 영구 디스크를 만들 수 있습니다.

관리형 인스턴스 그룹을 만들거나 Deployment Manager를 사용하여 VM 인스턴스를 만드는 경우, 다른 프로젝트의 이미지를 사용하려면 프로젝트의 Google API 서비스 계정에 이 역할을 부여해야 할 수 있습니다.

  • 서비스 계정
  • 시스템 관리자
  • 개발자
Compute Engine 인스턴스 관리자(v1)

Compute Engine 인스턴스, 인스턴스 그룹, 디스크, 스냅샷, 이미지에 대한 전체 제어 권한입니다. 모든 Compute Engine 네트워킹 리소스에 대해서는 읽기 전용 액세스 권한만 부여됩니다.

멤버가 서비스 계정으로 실행되도록 구성된 가상 머신 인스턴스를 관리하는 경우, VM 인스턴스에 대한 서비스 계정을 할당할 수 있도록 서비스 계정 사용자 역할도 부여해야 합니다.

  • 시스템 관리자
  • 개발자
Compute Engine 관리자 역할

모든 Compute Engine 리소스를 관리할 수 있는 전체 권한입니다. 사용자가 서비스 계정으로 실행하도록 구성된 가상 머신 인스턴스를 관리하는 경우, roles/iam.serviceAccountUser 역할도 부여해야 합니다.

  • 시스템 관리자
  • 개발자
Compute Engine 네트워크 관리자

방화벽 규칙과 SSL 인증서를 제외하고 네트워킹 리소스를 생성, 수정, 삭제할 수 있는 권한입니다. 네트워크 관리자 역할은 방화벽 규칙, SSL 인증서, 인스턴스에 대한 읽기 전용 액세스(임시 IP 주소 보기) 권한을 허용합니다. 네트워크 관리자 역할은 멤버가 인스턴스를 생성, 시작, 중지 또는 삭제하도록 허용하지 않습니다.

네트워크 관리자
Compute Engine 보안 관리자

방화벽 규칙과 SSL 인증서를 생성, 수정, 삭제할 수 있는 권한입니다.

보안 관리자
Compute Engine 부하 분산기 관리자베타

부하 분산기와 관련 리소스를 생성, 수정, 삭제할 수 있는 권한입니다.

부하 분산기 관리자
Compute Engine 서비스 계정 사용자

서비스 계정을 사용하는 인스턴스를 만들 수 있는 권한과 이미 서비스 계정으로 실행되도록 구성된 인스턴스에서 디스크를 연결하고 메타데이터를 설정할 수 있는 권한입니다.

이 역할은 Compute Engine API에 대한 어떠한 권한도 제공하지 않기 때문에 그 자체만 부여할 수 없습니다. 이 역할은 인스턴스 관리자 역할과 같은 다른 역할과 함께 멤버에 부여해야 합니다.

  • 시스템 관리자
  • 개발자
Compute Engine 뷰어 역할

Compute Engine 리소스를 가져와 나열할 수 있지만 리소스에 저장된 데이터를 읽을 수 없는 읽기 전용 액세스 권한입니다. 예를 들어, 이 역할이 있는 계정은 모든 디스크를 프로젝트에 목록화할 수 있지만 해당 디스크의 데이터를 전혀 읽을 수 없습니다.

시스템 관리자
Compute Engine 네트워크 사용자

공유 VPC 네트워크를 사용할 수 있는 권한입니다. 특히 호스트 프로젝트에서 리소스를 사용해야 하는 서비스 소유자에게 이 역할을 부여합니다. 이 권한이 부여된 서비스 소유자는 호스트 프로젝트에 속하는 네트워크 및 하위 네트워크를 사용할 수 있습니다. 예를 들어, 네트워크 사용자는 공유 VPC 호스트 네트워크에 속하는 VM 인스턴스를 만들 수 있지만 호스트 프로젝트에서 새로운 네트워크를 만들거나 삭제할 수 없습니다.

  • 시스템 관리자
  • 개발자
Compute Engine 네트워크 뷰어

모든 네트워킹 리소스에 대한 읽기 전용 액세스 권한입니다. 예를 들어, 네트워크 구성을 검사하는 소프트웨어가 있는 경우, 해당 소프트웨어의 서비스 계정에 네트워크 뷰어 역할을 부여할 수 있습니다.

  • 네트워크 관리자
  • 시스템 관리자
  • 개발자
  • 서비스 계정
Compute Engine 저장소 관리자베타

디스크, 이미지, 스냅샷을 생성, 수정, 삭제할 수 있는 권한입니다.

예를 들어 회사에 이미지를 관리하는 사람이 있지만 이들에게 프로젝트에 대한 편집자 역할을 주고 싶지 않은 경우, 이들의 계정에 이 역할을 부여합니다.

  • 시스템 관리자
  • 개발자
Compute Engine 공유 VPC 관리자

공유 VPC 호스트 프로젝트를 관리할 수 있는 권한입니다. 특히 호스트 프로젝트를 사용하도록 지정하고 호스트 프로젝트의 네트워크에 서비스 프로젝트를 연결할 수 있습니다. 이 역할은 조직 수준에서만 부여됩니다.

프로젝트 제작자

특정 역할에 따라 권한이 부여되는 API 메소드의 목록을 보려면 Compute Engine IAM 역할 문서를 참조하세요.

사전 정의된 역할 표

다음 표에서 각 Compute Engine 역할의 기능을 모두 비교할 수 있습니다.

기능 인스턴스 관리자(v1) 이미지 사용자 네트워크 사용자 네트워크 뷰어 네트워크 관리자 보안 관리자 저장소 관리자 공유 VPC 관리자 Compute 관리자 Compute 뷰어 부하 분산기 관리자
VM 인스턴스 만들기 또는 삭제 * 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
VM 인스턴스에 SSH 사용 * 아니요 아니요 아니요 아니요 아니요 아니요 아니요 * 아니요 아니요
VM 인스턴스 나열 또는 가져오기 아니요 아니요 아니요 아니요 아니요
이미지, 디스크, 스냅샷 만들기 또는 삭제 아니요 아니요 아니요 아니요 아니요 아니요 아니요
이미지 나열 또는 가져오기 아니요 아니요 아니요 아니요 아니요 아니요
인스턴스 그룹 만들기 또는 삭제 * 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
인스턴스 그룹 나열 또는 가져오기 아니요 아니요 아니요 아니요 아니요
부하 분산기 만들기 및 관리 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
VPN 만들기 및 관리 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
네트워크/하위 네트워크 리소스 보기 아니요 아니요 아니요 아니요
방화벽 규칙 보기 아니요 아니요 아니요 아니요
방화벽 및 SSL 인증서 만들기 및 관리 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 방화벽의 경우 아니요, SSL 인증서의 경우 예
공유 VPC 호스트 프로젝트 만들기 및 관리 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
공유 VPC 호스트 프로젝트에서 네트워크 및 하위 네트워크 사용 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
네트워크 및 하위 네트워크 만들기 및 관리 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요

*VM 인스턴스를 서비스 계정으로 실행할 수 있는 경우 서비스 계정 사용자 역할도 부여합니다.

특정 역할에 따라 권한이 부여되는 API 메소드의 목록을 보려면 Compute Engine IAM 역할 문서를 참조하세요.

기본 Cloud IAM 역할

기본 Cloud IAM 역할은 이전의 프로젝트 소유자, 편집자, 뷰어 역할에 직접 매핑됩니다. 일반적으로 가능한 모든 경우에 사전 정의된 역할을 사용해야 하지만, Cloud IAM이 아직 지원되지 않는 일부 경우에는 올바른 권한을 부여하기 위해 기본 역할을 사용해야 할 수 있습니다.

역할 칭호 권한
Owner 청구 상태를 변경하고, 액세스 제어를 관리하고, 프로젝트를 삭제할 수 있는 권한이 포함된 모든 뷰어 및 편집자 권한입니다.
Editor 리소스를 생성, 수정, 삭제할 수 있는 권한이 포함된 모든 뷰어 권한입니다.
Viewer 리소스 변경 권한이 없는 모든 리소스에 대한 읽기 전용 권한입니다.

기본 권한에 대해 자세히 알아보려면 기본 역할 문서를 읽어보세요.

사전 정의된 역할이나 기본 역할이 필요에 맞지 않는 경우에는 커스텀 역할을 만들 수 있습니다.

Compute Engine 리소스에 대한 Cloud IAM 정책

VM 인스턴스, 이미지, 디스크 등의 Compute Engine 리소스에 대한 액세스 권한을 부여하려면 Cloud IAM 정책을 해당 리소스에 직접 연결합니다. Cloud IAM 정책을 사용하면 프로젝트 수준에서 역할을 관리하는 방법을 대신해서, 또는 추가적인 방법으로 이러한 리소스에 대한 Cloud IAM 역할을 관리할 수 있습니다. 이렇게 하면 공동작업자에게 작업에 필요한 특정 리소스에 대해서만 액세스 권한을 부여하는 최소 권한 원칙을 유연하게 적용할 수 있습니다.

Compute Engine 리소스에 대한 Cloud IAM 정책을 사용하는 조직에서는 다음이 가능합니다.

  • 사용자에게 특정 리소스 하위 집합에 대한 액세스 권한을 부여합니다. 예를 들어 김하나가 프로젝트의 일부 인스턴스를 관리하는 경우, 인스턴스 수준의 Cloud IAM 정책을 사용하면 김하나에게 해당 인스턴스에 대해서만 compute.instanceAdmin.v1 역할을 부여할 수 있습니다. 김하나에게 프로젝트에 대해서도 동일한 역할을 부여하면 프로젝트의 모든 인스턴스를 수정할 수 있는 권한을 갖게 됩니다.
  • 강력한 프로젝트 소유자가 아니라도 인스턴스, 디스크, 이미지의 관리자가 다른 사람에게 이러한 리소스에 대한 액세스 권한을 부여할 수 있습니다. 예를 들어 강철수라는 개발자에게 특정 이미지에 대한 compute.storageAdmin 역할이 부여된 경우, 이 사람은 팀원에게 해당 이미지에 대한 compute.imageUser 역할을 부여하여 팀원과 이미지를 공유할 수 있습니다. Compute Engine 리소스에 대한 Cloud IAM 정책이 없을 경우 프로젝트의 Cloud IAM 정책을 수정해야만 이미지를 공유할 수 있기 때문에 강철수가 프로젝트 소유자여야 합니다.

리소스는 상위 리소스의 정책도 상속합니다. 프로젝트 수준에서 정책을 설정하면 모든 하위 리소스로 정책이 상속됩니다. 리소스에 실제로 적용되는 정책은 해당 리소스에 설정된 정책과 계층 구조의 상위 리소스에서 상속된 정책의 합집합입니다. 자세한 내용은 Cloud IAM 정책 계층 구조를 참조하세요.

조직 정책

G Suite 멤버인 경우 프로젝트가 조직 리소스의 일부일 수 있습니다. 조직 리소스는 G Suite 계정과 밀접하게 연관된 Google Cloud Platform 리소스 계층의 수퍼 노드입니다. G Suite 도메인용으로 조직 리소스가 생성된 다음, 해당 도메인의 멤버가 생성하는 모든 Cloud Platform 프로젝트는 조직 리소스에 속합니다.

조직은 전체 Cloud Resource 계층에서 허용되는 구성을 제한하는 정책인 조직 정책을 구현할 수 있습니다. Compute Engine의 경우 다음 정책을 구현할 수 있습니다.

조직 정책을 설정하려면 조직의 orgpolicy.policyAdmin 역할을 부여받아야 합니다. 또한 정책 예외에 따라 프로젝트별 재정의를 설정할 수 있습니다.

조직에 대해 자세히 알아보려면 조직 문서를 읽어보세요.

조직 정책에 대해 자세히 알아보려면 조직 정책 문서를 읽어보세요.

사용자에게 VM 인스턴스에 대한 SSH 액세스 권한 부여

사용자에게 SSH를 사용하여 가상 머신 인스턴스에 연결할 수 있는 권한을 제공하지만, Compute Engine 리소스를 관리할 수 있는 권한을 부여하지 않으려면, 프로젝트에 사용자의 공개 키를 추가하거나 특정 인스턴스에 사용자의 공개 키를 추가합니다. 이 방법을 사용하면 프로젝트 멤버로 사용자를 추가하지 않으면서도 특정 인스턴스에 대한 액세스 권한을 부여할 수 있습니다.

SSH 및 SSH 키 관리에 대해 자세히 알아보려면 SSH 키 개요를 읽어보세요.

프로젝트 멤버에 roles/compute.instanceAdmin.v1 역할을 부여할 경우, 해당 인스턴스가 서비스 계정으로 실행되도록 설정되지 않은 한, SSH를 사용하여 인스턴스에 자동으로 연결할 수 있습니다. 인스턴스가 서비스 계정으로 실행되도록 설정된 경우 해당 멤버가 인스턴스에 연결할 수 있도록 roles/iam.serviceAccountUser 역할도 부여해야 합니다.

멤버를 프로젝트 소유자 또는 편집자로 추가하면, 프로젝트에 있는 가상 머신 인스턴스에 대한 SSH 액세스 권한도 자동으로 부여됩니다.

VM 인스턴스에서 실행되는 애플리케이션의 액세스 제어

인스턴스에서 애플리케이션 코드를 실행하며 해당 애플리케이션을 다른 Google Cloud Platform API에 인증해야 하는 경우에는 서비스 계정을 만들고 이 서비스 계정에 특정 Cloud IAM 역할을 부여하는 방법으로 다른 Cloud Platform API에 인증 할 수 있습니다. 서비스 계정은 사용자 인증 정보를 포함하지 않는 특수 계정이며, 서버 간 상호작용에 이상적입니다.

서비스 계정에 대해 자세히 알아보려면 서비스 계정 문서를 읽어보세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

Compute Engine 문서