사용자가 커스텀 이미지를 생성, 삭제, 사용 또는 공유할 수 있도록 하려면 적절한 IAM(Identity and Access Management) 역할을 부여해야 합니다. IAM을 사용하여 다음을 수행합니다.
- 커스텀 이미지 생성 권한 부여
- 조직 내 또는 조직 간 커스텀 이미지 공유
- 커스텀 이미지 공개적으로 공유
- 관리형 인스턴스 그룹에 이미지 액세스 권한 부여
- 이전에 공유한 이미지 사용 제한
- 커스텀 이미지 삭제 권한 부여
- IAM 정책에서 구성원을 삭제하여 권한 취소
Compute Engine 리소스에 대한 액세스 권한을 부여하는 방법에 대한 일반적인 정보는 Compute Engine 리소스에 대한 액세스 관리를 참조하세요. IAM에 대한 자세한 내용은 IAM 문서를 참조하세요.
시작하기 전에
- 이 가이드의 명령줄 예시를 사용하려면 우선 다음 작업을 수행해야 합니다.
- gcloud 명령줄 도구를 최신 버전으로 설치하거나 업데이트합니다.
- 기본 리전 및 영역을 설정합니다.
- 이 가이드의 API 예를 사용하려면 API 액세스를 설정합니다.
- IAM 문서를 읽어봅니다.
- Compute Engine IAM 역할, 특히
roles/compute.imageUser
역할에 대해 알아보세요.
제한사항
사용자에게 이미지에 대한 allUsers
역할을 부여할 수 없습니다.
커스텀 이미지 생성 권한 부여
조직 또는 프로젝트에서 사용자가 커스텀 이미지를 생성할 수 있도록 권한을 부여할 수 있습니다.
Compute Engine은 사용자가 이미지, 디스크, 스냅샷 등의 스토리지 관련 리소스를 생성, 삭제, 관리할 수 있도록 사용자에게 할당 가능한 사전 정의된 스토리지 관리자 역할을 제공합니다. 이미지 생성만을 허용하는 역할이 필요한 경우 커스텀 역할을 만들어야 합니다. 필요에 따라 커스텀 역할에 다음 권한을 포함합니다.
compute.images.create
를 통해 새 이미지 생성compute.images.list
를 통해 프로젝트의 이미지 나열compute.disks.use
를 통해 디스크에서 이미지 생성compute.disks.list
를 통해 사용자에게 프로젝트의 디스크 목록을 볼 수 있는 권한 부여
사용자가 조직에서 커스텀 이미지를 생성할 수 있도록 권한을 부여하면 사용자는 조직 내 모든 프로젝트의 커스텀 이미지를 생성할 수 있습니다.
Console
Google Cloud Console에서 프로젝트 또는 조직의 IAM 및 관리자 페이지로 이동합니다.
추가 버튼을 클릭해 새 구성원을 추가합니다.
새 구성원 필드에서 액세스 권한을 부여할 ID의 이메일 주소를 입력합니다.
역할 선택 목록에서 Compute Engine > Compute 스토리지 관리자를 선택하거나, 커스텀 역할을 생성한 경우에는 커스텀 역할을 선택합니다.
변경사항을 저장합니다.
gcloud
조직 수준에서 roles/compute.storageAdmin
역할을 부여하려면 다음을 수행합니다.
gcloud organizations add-iam-policy-binding organization-id \
--member='member' \
--role='roles/compute.storageAdmin'
프로젝트 수준에서 roles/compute.storageAdmin
역할을 부여하려면 다음을 수행합니다.
gcloud projects add-iam-policy-binding project-id \
--member='member' \
--role='roles/compute.storageAdmin'
다음을 바꿉니다.
organization-id
또는project-id
: 조직 ID 또는 프로젝트 ID입니다(예:my-organization-1
또는my-project-1
).member
: 역할을 부여할 유효한 ID입니다.user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
API
API를 통해 직접 IAM 정책을 수정하려면 다음 안내를 따르세요.
getIamPolicy
메서드로 기존 정책을 읽습니다. 프로젝트의 경우 다음 URL을 사용합니다. 여기서project-id
를 프로젝트 ID로 바꿉니다. 예를 들면my-project-1
입니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
조직의 경우 다음 URL을 사용합니다. 여기서
organization-id
를 12자리 숫자로 된 조직 ID로 바꿉니다 예를 들면123456578920
입니다.POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy
Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 구성원과 연결된 역할을 추가 또는 삭제합니다. 예를 들어 1email@example.com에
roles/compute.storageAdmin
역할을 부여하려면 다음 새 binding을 정책에 추가합니다.{ "members": [ "group:admins@example.com" ], "role":"roles/compute.storageAdmin" }
setIamPolicy()
로 업데이트된 정책을 작성합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
project-id
를 프로젝트 ID로 바꿉니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
커스텀 이미지 삭제 권한 부여
필요에 따라 사용자에게 다음 권한을 부여할 수 있습니다.
- 특정 이미지 삭제
- 특정 프로젝트에서 소유한 이미지 삭제
- 조직 내 모든 프로젝트의 이미지 삭제
프로젝트 수준에서 권한을 부여하면 사용자가 프로젝트에서 소유한 모든 이미지를 삭제할 수 있습니다. 조직 수준에서 권한을 부여하면 사용자가 프로젝트에 관계없이 해당 조직에서 소유한 모든 이미지를 삭제할 수 있습니다.
Compute Engine은 사용자가 이미지, 디스크, 스냅샷 등의 스토리지 관련 리소스를 생성, 삭제, 관리할 수 있도록 사용자에게 할당 가능한 사전 정의된 스토리지 관리자 역할을 제공합니다. 이미지 삭제만을 허용하는 역할이 필요한 경우 커스텀 역할을 생성해야 합니다. 필요에 따라 커스텀 역할에 다음 권한을 포함합니다.
compute.images.delete
를 통해 이미지 삭제compute.images.list
를 통해 필요한 경우 프로젝트 또는 조직의 이미지 나열compute.images.get
을 통해 이미지 가져오기
Console
특정 이미지를 삭제할 권한을 부여하려면 다음 단계를 따르세요.
Google Cloud Console에서 이미지 페이지로 이동합니다.
권한을 부여할 이미지를 선택합니다.
오른쪽의 권한 패널에서 구성원 추가를 클릭합니다.
이미지를 공유할 ID의 이메일 주소를 입력합니다.
user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
역할 목록에서 Compute Engine을 가리키고 스토리지 관리자를 선택하거나 커스텀 목록에서 커스텀 역할을 선택합니다.
변경사항을 저장합니다.
프로젝트 또는 조직의 이미지를 삭제할 권한을 부여하려면 다음 단계를 따르세요.
프로젝트 또는 조직의 IAM 및 관리자 페이지로 이동합니다.
페이지 상단에서 추가 버튼을 클릭합니다.
새 구성원 필드에서 액세스 권한을 부여할 ID의 이메일 주소를 입력합니다.
user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
역할 목록에서 Compute Engine을 가리키고 스토리지 관리자를 선택하거나 커스텀 목록에서 커스텀 역할을 선택합니다.
변경사항을 저장합니다.
gcloud
조직 수준에서 이미지를 삭제할 권한을 사용자에게 부여하려면 다음을 수행하세요.
gcloud organizations add-iam-policy-binding organization-id \
--member='member' \
--role='role'
프로젝트 수준에서 이미지를 삭제할 권한을 부여하려면 다음을 수행하세요.
gcloud projects add-iam-policy-binding project-id \
--member='member' \
--role='role'
특정 이미지를 삭제할 권한을 부여하려면 다음을 수행하세요.
gcloud images add-iam-policy-binding image-name \
--member='member' \
--role='role'
다음을 바꿉니다.
organization-id
또는project-id
또는image-name
: 12자리 숫자로 된 조직 ID, 프로젝트 ID 또는 이미지 이름입니다(예:123456578920
또는my-project-1
또는my-custom-image
).member
: 역할을 부여할 유효한 ID입니다.user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
role
: 이 ID에 할당할 역할입니다(예:roles/compute.storageAdmin
또는roles/customImageDeletionRole
과 같은 커스텀 역할).
API
API를 통해 이미지를 삭제할 권한을 부여하려면 다음 안내를 따르세요.
리소스의 해당
getIamPolicy
메서드로 기존 정책을 읽습니다. 프로젝트의 경우 다음 URL을 사용합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
project-id
를 프로젝트 ID로 바꿉니다.조직의 경우 다음을 사용하세요.
POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy
organization-id
를 12자리 숫자로 된 조직 ID로 바꿉니다.특정 이미지의 경우 다음을 사용하세요.
POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
project-id
를 프로젝트 ID로,image-name
을 이미지 이름으로 바꿉니다.Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 구성원과 연결된 역할을 추가 또는 삭제합니다. 예를 들어 email@example.com에
roles/compute.storageAdmin
역할을 부여하려면 다음 새 binding을 정책에 추가합니다.{ "members": [ "user:email@example.com" ], "role":"roles/compute.storageAdmin" }
setIamPolicy()
로 업데이트된 정책을 작성합니다. 예를 들면 다음과 같습니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
project-id
를 프로젝트 ID로 바꿉니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
조직 내 커스텀 이미지 공유
프로젝트가 조직에 속한 경우 조직은 다른 프로젝트에 대한 액세스 수준이 다양한 여러 프로젝트를 가질 수 있습니다. 커스텀 이미지를 생성할 때 조직 내 다른 프로젝트의 다른 사용자와 이미지를 공유할 수 있습니다.
Compute Engine은 이미지 관리에 사용할 수 있는 다음과 같은 선별된 IAM 역할을 사전 정의합니다.
roles/compute.imageUser
: 이미지에 대한 다른 권한 없이 요청에 이미지를 나열하고 읽고 사용할 수 있는 권한입니다.roles/compute.storageAdmin
: 디스크, 이미지, 스냅샷을 생성, 수정, 삭제할 수 있는 권한입니다.
또는 자체적인 커스텀 IAM 역할을 만들 수도 있습니다.
모든 커스텀 이미지를 호스팅하는 전용 단일 프로젝트에 모든 커스텀 이미지를 보관하는 것이 좋습니다. 이렇게 하면 이러한 이미지 관리를 개선하고 특정 팀에게 필요한 이미지에만 액세스하도록 허용할 수 있습니다. 팀에게 전체 이미지 프로젝트에 대한 액세스 권한을 부여할 수도 있지만, 전체 이미지 프로젝트에 대한 팀 액세스 권한은 최소 권한 원칙에 위배되므로 권장하지 않습니다.
아래의 예시는 해당 그룹의 사용자가 이미지에 액세스할 수 있도록 그룹을 추가하는 방법을 보여줍니다.
Console
Google Cloud Console에서 이미지 페이지로 이동합니다.
다른 사용자와 공유할 이미지를 선택합니다.
오른쪽의 권한 패널에서 구성원 추가를 클릭합니다.
이미지를 공유할 ID의 이메일 주소를 입력합니다.
user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
역할 목록의 Compute Engine에서 이미지 사용자 또는 스토리지 관리자를 선택하거나 커스텀 역할을 선택합니다.
변경사항을 저장합니다.
사용자가 Cloud Console에서 공유 커스텀 이미지를 실행하도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가해야 합니다. 이렇게 하면 공유 이미지가 이미지 선택 목록에 표시됩니다.
Google Cloud Console에서 IAM 및 관리자 페이지로 이동합니다.
페이지 상단에서 추가 버튼을 클릭합니다.
새 구성원 필드에서 이미지를 공유할 ID의 이메일 주소를 입력합니다.
역할 목록에서 프로젝트를 가리키고 뷰어를 선택합니다.
변경사항을 저장합니다.
gcloud
gcloud
명령줄 도구를 사용하여 특정 이미지의 IAM 정책을 업데이트합니다.
gcloud compute images add-iam-policy-binding image-name \
--member='member' \
--role='role'
다음을 바꿉니다.
image-name
: 이미지의 이름입니다. 예를 들면custom-centos-8
입니다.member
: 역할을 부여할 유효한 ID입니다.user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
role
:roles/compute.imageUser
,roles/compute.storageAdmin
또는 커스텀 역할 등 이 ID를 할당하는 역할입니다.
필요한 경우 images.list
요청에서 사용자가 공유 이미지를 볼 수 있도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가합니다. 사용자가 공유 이미지 목록을 볼 필요가 없는 경우에는 이 단계를 건너뜁니다.
gcloud compute projects add-iam-policy-binding project-id \
--member='member' \
--role='roles/viewer'
API
API를 통해 직접 IAM 정책을 수정하려면 다음 안내를 따르세요.
리소스의 해당
getIamPolicy
메서드로 기존 정책을 읽습니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 사용자와 관련 역할을 추가 또는 삭제합니다.
user|group|serviceAccount:email
또는domain:domain
형식을 사용하여 사용자를 추가합니다. 예를 들면user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
,domain:example.domain.com
입니다. 예를 들어email@example.com
에roles/compute.imageUser
역할을 부여하려면 다음을 추가합니다.{ "members": [ "user:email@example.com" ], "role":"roles/compute.imageUser" }
setIamPolicy()
로 업데이트된 정책을 작성합니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
필요한 경우 images.list
요청에서 사용자가 공유 이미지를 볼 수 있도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가합니다. 사용자가 공유 이미지 목록을 볼 필요가 없는 경우에는 이 단계를 건너뜁니다.
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
조직 간 커스텀 이미지 공유
커스텀 이미지 카탈로그를 생성하면 조직 외부의 파트너, 사용자 또는 계약자와 이미지를 공유할 때 유용합니다. 이미지 사용자로 조직 외부 사용자를 프로젝트에 추가하여 조직 외부 사용자와 이미지를 공유하려면 다음 안내를 따르세요.
Console
Google Cloud Console에서 이미지 페이지로 이동합니다.
다른 사용자와 공유할 이미지를 선택합니다.
오른쪽의 권한 패널에서 구성원 추가를 클릭합니다.
이미지를 공유할 그룹의 이메일 주소를 입력합니다. 예를 들면
group:admins@example.com
입니다.역할 목록에서 Compute Engine을 가리키고 이미지 사용자를 선택합니다.
변경사항을 저장합니다.
사용자가 Cloud Console에서 공유 커스텀 이미지를 실행하도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가해야 합니다. 이렇게 하면 공유 이미지가 이미지 선택 목록에 표시됩니다.
Google Cloud Console에서 IAM 및 관리자 페이지로 이동합니다.
페이지 상단에서 추가 버튼을 클릭합니다.
새 구성원 필드에서 이미지를 공유할 ID의 이메일 주소를 입력합니다.
역할 목록에서 프로젝트를 가리키고 뷰어를 선택합니다.
변경사항을 저장합니다.
gcloud
gcloud
명령줄 도구를 사용합니다.
gcloud compute images add-iam-policy-binding image-name \
--member='member' \
--role='roles/compute.imageUser'
다음을 바꿉니다.
image-name
: 이미지의 이름입니다. 예를 들면custom-centos-8
입니다.member
: 역할을 부여할 유효한 ID입니다. 예를 들면group:admins@example.com
입니다.
필요한 경우 images.list
요청에서 사용자가 공유 이미지를 볼 수 있도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가합니다. 사용자가 공유 이미지 목록을 볼 필요가 없는 경우에는 이 단계를 건너뜁니다.
gcloud compute projects add-iam-policy-binding project-id \
--member='member' \
--role='roles/viewer'
API
API를 통해 이미지의 IAM 정책을 직접 수정하려면 다음 안내를 따르세요.
리소스의 해당
getIamPolicy
메서드로 기존 정책을 읽습니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 사용자와 관련 역할을 추가 또는 삭제합니다.
user|group|serviceAccount:email
또는domain:domain
형식을 사용하여 사용자를 추가합니다. 예를 들면user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
,domain:example.domain.com
입니다. 예를 들어 email@example.com에roles/compute.imageUser
역할을 부여하려면 다음을 추가합니다.{ "members": [ "user:email@example.com" ], "role":"roles/compute.imageUser" }
setIamPolicy()
로 업데이트된 정책을 작성합니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
필요한 경우
images.list
요청에서 사용자가 공유 이미지를 볼 수 있도록 하려면 사용자를 이미지 프로젝트에 프로젝트 뷰어로 추가합니다. 사용자가 공유 이미지 목록을 볼 필요가 없는 경우에는 이 단계를 건너뜁니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
공개적으로 커스텀 이미지 공유
조직이나 프로젝트에 속해 있는지 여부에 관계없이 인증된 모든 Compute Engine 사용자와 커스텀 이미지를 공유할 수 있습니다.
이미지와 같은 리소스는 모든 인증된 사용자와만 공유할 수 있으며, 프로젝트 또는 조직을 인증된 모든 사용자와 공유할 수는 없습니다. 이러한 제한사항과 리소스 계층 구조를 사용하면 조직이 실수로 모든 프로젝트를 인증된 모든 Compute Engine 사용자와 공유하는 것을 방지할 수 있습니다.
다음 예시에서는 인증된 모든 Compute Engine 사용자에게 커스텀 이미지에 대한 roles/compute.imageUser
역할을 부여하는 방법을 보여줍니다.
gcloud
다음 명령어에서 image-name
을 리소스 이름(예: my_image
)으로 바꿉니다.
gcloud compute images add-iam-policy-binding image-name \
--member='allAuthenticatedUsers' \
--role='roles/compute.imageUser'
API
API를 통해 직접 IAM 정책을 수정하려면 다음 안내를 따르세요.
getIamPolicy
메서드로 기존 정책을 읽습니다. 예를 들면 다음과 같습니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 구성원과 연결된 역할을 추가 또는 삭제합니다.
{ "members": [ "allAuthenticatedUsers" ], "role":"roles/compute.imageUser" }
setIamPolicy()
로 업데이트된 정책을 작성합니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy
다음을 바꿉니다.
project-id
: 이 이미지가 속한 프로젝트의 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
관리형 인스턴스 그룹에 이미지 액세스 권한 부여
Compute Engine에서는 인스턴스 그룹을 관리형 또는 비관리형 인스턴스 그룹으로 만들 수 있습니다. 관리형 인스턴스 그룹을 만들면 Compute Engine은 Google API 서비스 계정을 사용하여 Compute Engine API를 호출하고 비정상 인스턴스를 다시 만들고 인스턴스를 업데이트하는 등 그룹과 관련된 작업을 수행합니다.
다른 프로젝트의 이미지를 사용하여 관리형 인스턴스 그룹을 만들려면 관리형 인스턴스 그룹을 만들 프로젝트에 속한 API 서비스 계정에 roles/compute.imageUser
역할을 추가합니다. 예를 들면 다음과 같습니다.
- 프로젝트 A는 프로젝트 B가 소유한 이미지를 사용하여 관리형 인스턴스 그룹을 만들려고 합니다.
- 프로젝트 B는 프로젝트 A의 서비스 계정에
roles/compute.imageUser
역할을 부여합니다. - 이제 프로젝트 A는 프로젝트 B의 이미지를 사용하여 관리형 인스턴스 그룹을 만들 수 있습니다.
roles/compute.imageUser
역할을 부여한 후에는 관리형 그룹의 인스턴스 템플릿 생성 시 Console 또는 이미지의 URL을 사용하여 다른 프로젝트에서 이미지에 액세스할 수 있습니다.
서비스 계정의 이메일 주소 가져오기
서비스 계정의 이메일 주소를 가져오려면 다음 단계를 따르세요.
- Cloud Console에서 서비스 계정에 액세스 권한을 부여할 프로젝트의 IAM 페이지로 이동합니다.
- 메시지가 나타나면 목록에서 프로젝트를 선택합니다.
다음과 같은 형식의 이메일 주소를 사용하는 Google API 서비스 계정을 찾습니다.
project-number@cloudservices.gserviceaccount.com
위의 이메일 주소를 기록합니다.
서비스 계정의 이메일 주소를 검색한 후 다음 링크 중 하나를 클릭합니다.
관리형 인스턴스 그룹에 프로젝트의 모든 이미지에 대한 액세스 권한 부여
이제 서비스 계정의 이메일 주소를 보유하고 있으므로 다른 프로젝트에 주소를 추가하고 roles/compute.imageUser
역할을 부여할 수 있습니다.
Console
Google Cloud Console에서 이미지 프로젝트의 IAM 및 관리자 페이지로 이동합니다.
새 구성원을 추가하려면 추가를 클릭합니다.
새 구성원 필드에 서비스 계정 이메일 주소를 추가합니다.
역할 목록에서 Compute를 가리키고 Compute 이미지 사용자를 선택합니다.
저장을 클릭합니다.
서비스 계정의 프로젝트로 다시 전환합니다.
이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
gcloud
다음과 같이 이미지 프로젝트에서 서비스 계정을 추가합니다.
gcloud projects add-iam-policy-binding project-id \
--member 'serviceAccount:service-account-email' --role 'roles/compute.imageUser'
다음을 바꿉니다.
project-id
: 공유할 이미지가 포함된 프로젝트의 ID입니다.service-account-email
: 서비스 계정의 이메일입니다.
이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
API
이미지 프로젝트의 IAM 정책을 가져오고
project-id
를 이미지 프로젝트의 프로젝트 ID로 바꿉니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
텍스트 편집기를 사용하여 정책을 수정하여 서비스 계정에
roles/compute.imageUser
역할을 부여합니다. 예를 들면 다음과 같습니다.{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:service-account-email" ] } ] }
service-account-email
을 서비스 계정 이메일로 바꿉니다.업데이트된 정책을 작성합니다.
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
project-id
를 이미지 프로젝트의 제품 ID로 바꿉니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
관리형 인스턴스 그룹에 프로젝트의 특정 이미지에 대한 액세스 권한 부여
이제 서비스 계정의 이메일 주소가 있으므로 다른 프로젝트에 주소를 추가하고 특정 이미지에 대해 roles/compute.imageUser
의 역할을 부여할 수 있습니다.
Console
Google Cloud Console에서 이미지 프로젝트의 이미지 페이지로 이동합니다.
공유하려는 이미지를 선택합니다.
권한 패널에서 구성원 추가를 클릭합니다.
서비스 계정 이메일을 입력합니다.
역할 목록에서 Compute을 선택하고 Compute 이미지 사용자를 선택합니다.
저장을 클릭합니다.
서비스 계정의 프로젝트로 다시 전환합니다.
이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
gcloud
서비스 계정에 특정 이미지에 대한 액세스 권한을 부여하려면 다음을 수행하세요.
gcloud images add-iam-policy-binding image-name \
--member 'serviceAccount:service-account-email' \
--role 'roles/compute.imageUser'
다음을 바꿉니다.
image-name
: 공유할 이미지 이름입니다.service-account-email
: 서비스 계정의 이메일입니다.
이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
API
이미지의 IAM 정책을 가져옵니다.
POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
다음을 바꿉니다.
project-id
: 이미지 프로젝트의 프로젝트 ID입니다.image-name
: 공유할 이미지의 이름입니다.
텍스트 편집기를 사용하여 정책을 수정하여 서비스 계정에
roles/compute.imageUser
역할을 부여합니다. 예를 들면 다음과 같습니다.{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:service-account-email" ] } ] }
service-account-email
을 서비스 계정 이메일로 바꿉니다.업데이트된 정책을 작성합니다.
POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy
다음을 바꿉니다.
project-id
: 이미지 프로젝트의 프로젝트 ID입니다.image-name
: 공유할 이미지의 이름입니다.
요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
이제 이미지 프로젝트의 이미지를 기반으로 인스턴스 템플릿을 생성하고 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 만들 수 있습니다.
공유 이미지 및 스냅샷 사용 제한
이미지를 다른 사용자와 공유한 후에는 해당 사용자가 조직 내에서 리소스를 사용하는 위치를 제어할 수 있습니다. constraints/compute.storageResourceUseRestrictions
제약조건을 설정하여 사용자가 스토리지 리소스를 사용할 수 있는 프로젝트를 정의합니다.
이러한 제약 조건을 설정하려면 조직 정책을 수정할 권한이 있어야 합니다. 예를 들어 resourcemanager.organizationAdmin
역할에 이러한 제약조건을 설정할 권한이 있습니다.
조직의 조직 ID를 확인합니다.
gcloud organizations list
조직의 기존 정책 설정을 가져옵니다. organization-id를 12자리 숫자로 된 조직 ID로 바꿉니다.
gcloud beta resource-manager org-policies describe \ compute.storageResourceUseRestrictions \ --organization organization-id > org-policy.yaml
텍스트 편집기에서
org-policy.yaml
파일을 열고compute.storageResourceUseRestrictions
제약조건을 수정합니다. 필요한 제한사항을 추가하거나 더 이상 필요하지 않은 제한사항을 삭제합니다. 파일 수정이 끝나면 변경사항을 저장합니다. 예를 들어 정책 파일에서 설정할 수 있는 제약조건 항목은 다음과 같습니다.constraint: compute.storageResourceUseRestrictions listPolicy: allowedValues: - under:organization/organization-id
조직에
policy.yaml
파일을 적용합니다. organization-id를 12자리 숫자로 된 조직 ID로 바꿉니다.gcloud beta resource-manager org-policies set-policy \ --organization organization-id org-policy.yaml
조직 정책에서 제약조건 구성을 완료한 후에는 이 제약조건을 테스트하여 제한사항이 원하는 대로 구현되는지 확인합니다.
다른 프로젝트의 이미지 사용
다른 프로젝트의 하나 이상의 이미지에 대한 액세스 권한을 부여받은 경우 요청에 이미지 프로젝트를 지정하여 프로젝트의 이미지에 액세스할 수 있습니다.
이미지를 사용하여 인스턴스 등의 새 리소스를 만드는 방법은 인스턴스 만들기 및 시작을 참조하세요.
예를 들어 다음 명령어를 실행하면 database-images
프로젝트에 포함된 database-image-a
라는 이름의 이미지를 사용하여 인스턴스가 생성됩니다.
gcloud compute instances create test-instance \ --image database-image-a --image-project database-images
다른 프로젝트의 이미지를 기반으로 부팅 영구 디스크를 만들 수도 있습니다. 이미지로 부팅 디스크를 만드는 방법에 대한 자세한 내용은 독립형 부팅 영구 디스크 만들기를 참조하세요.
공유 이미지에 대한 액세스 권한 취소
사용자가 Compute Engine 리소스에 더 이상 액세스할 필요가 없는 경우 Google Cloud Console, gcloud
명령줄 도구 또는 Compute Engine API를 사용하여 액세스 권한을 취소합니다.
Console
Google Cloud Console에서 이미지 프로젝트의 이미지 페이지로 이동합니다.
업데이트할 이미지 옆에 있는 체크박스를 선택합니다.
정보 패널 표시를 클릭하여 권한 열을 펼칩니다.
사용자를 삭제할 역할을 펼칩니다.
삭제를 클릭하여 역할에서 사용자를 삭제합니다.
gcloud
이미지의 역할에서 사용자를 삭제하려면 remove-iam-policy-binding
하위 명령어를 --member
및 --role
플래그와 함께 사용합니다.
gcloud compute images remove-iam-policy-binding image-name \
--member='member' \
--role='role'
다음을 바꿉니다.
image-name
: 이미지의 이름입니다. 예를 들면my_image
입니다.member
: 삭제할 ID입니다.user|group|serviceAccount:email
또는domain:domain
형식이어야 합니다. 예를 들면 다음과 같습니다.user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
role
: ID를 삭제할 역할입니다.
리소스에 대한 액세스 권한을 취소하려면(현재 베타 버전) 대신 gcloud beta compute
명령어를 사용하세요.
API
API를 통해 직접 IAM 정책을 수정하려면 다음 안내를 따르세요.
리소스의 해당
getIamPolicy
메서드로 기존 정책을 읽습니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy
다음을 바꿉니다.
project-id
: 이미지가 속한 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.
Compute Engine은 응답의 현재 정책을 반환합니다.
텍스트 편집기로 정책을 수정하여 연결된 역할에서 구성원을 삭제합니다.
setIamPolicy()
로 업데이트된 정책을 작성합니다.POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/global/images/image-name:setIamPolicy
다음을 바꿉니다.
project-id
: 이미지가 속한 프로젝트 ID입니다.image-name
: 이미지의 이름입니다.요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.
다음 단계
- IAM에 대해 읽어 보기
- Compute Engine IAM 역할 목록 보기
- 이미지에 대해 알아보기
- 공유 이미지를 사용하여 인스턴스를 만드는 방법 알아보기
- 독립형 부팅 영구 디스크를 만드는 방법 알아보기
- Deployment Manager 배포에서 역할을 사용하는 방법 알아보기
- 최소 권한 원칙에 따라 전체 프로젝트 대신 특정 Compute Engine 리소스에 액세스 권한 부여하기