이 문서에서는 Compute Engine에서 이미지를 가져오고 내보내기 위한 기본 요건을 설명합니다.
Cloud Storage에서 이미지를 가져오거나 내보내서 다른 클라우드 환경 또는 온프레미스 환경에서 가상 머신(VM) 인스턴스, 가상 디스크 파일, 머신 이미지를 공유할 수 있습니다. 다음 체크리스트에는 이미지를 가져오고 내보내기 전에 충족해야 하는 요구사항이 요약되어 있습니다.
- Cloud Storage 버킷에 대한 액세스 설정
- 사용자 계정에 필수 역할 부여
- Cloud Build 서비스 계정에 필수 역할 부여
- Compute Engine 서비스 계정에 필수 역할 부여
시작하기 전에
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
이미지를 내보내는 경우 내보내기 도구는 이미지를 Cloud Storage 버킷에 업로드합니다.
이미지를 가져오려면 먼저 Cloud Storage 버킷에 이미지를 업로드해야 합니다. 가져오기 도구는 Cloud Storage 버킷에서 Compute Engine으로 파일을 다운로드한 다음 해당 디스크 파일에서 Compute Engine에 이미지를 만듭니다.
- 사용자 계정. 가져오기 및 내보내기 명령어를 실행 중인 계정입니다.
- Cloud Build 서비스 계정. 가져오기 또는 내보내기 도구로 Cloud Build API를 사용 설정할 때 생성되는 기본 Cloud Build 서비스 계정입니다.
- Compute Engine 서비스 계정. 가져오기 및 내보내기 워크플로에 필요한 기본 또는 커스텀 Compute Engine 서비스 계정입니다.
- 저장소 관리자 역할(
roles/storage.admin
) - 뷰어 역할(
roles/viewer
) - 프로젝트 IAM 관리자 역할(
roles/resourcemanager.projectIamAdmin
) - Cloud Build 편집자 역할(
roles/cloudbuild.builds.editor
) 프로젝트 또는 조직의 IAM 및 관리자 페이지로 이동합니다.
계정을 찾고
수정을 클릭합니다.역할 선택 목록에서 다음 역할을 선택합니다.
- Cloud Storage > 스토리지 관리자
- 프로젝트 > 뷰어
- Resource Manager > 프로젝트 IAM 관리자
- Cloud Build > Cloud Build 편집자
변경사항을 저장합니다.
roles/storage.admin
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 Google Cloud 프로젝트 IDMEMBER
: 가져오기 및 내보내기 명령어를 실행하는 계정(예:user:export-user@gmail.com
)
roles/viewer
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
roles/resourcemanager.projectIamAdmin
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
roles/cloudbuild.builds.editor
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
리소스의
getIamPolicy
메서드로 기존 정책을 읽습니다. 프로젝트의 경우projects.getIamPolicy
메서드를 사용합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
PROJECT_ID
를 프로젝트 ID(예:my-project-1
)로 바꿉니다.필수 역할을 계정에 부여하려면 텍스트 편집기를 사용하여 정책을 수정합니다.
예를 들어
user:export-user@gmail.com
계정에 필수 역할을 부여하려면 다음 binding을 정책에 추가합니다.{ { "role":"roles/storage.admin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/viewer", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/resourcemanager.projectIamAdmin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/cloudbuild.builds.editor", "member":[ "user:export-user@gmail.com" ] } }
업데이트된 정책을 작성하려면
setIamPolicy
메서드를 사용합니다.예를 들어 프로젝트 수준에서 정책을 설정하려면
project.setIamPolicy
메서드를 사용합니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- 서비스 계정 토큰 생성자 역할(
roles/iam.serviceAccountTokenCreator
) - 서비스 계정 사용자 역할(
roles/iam.serviceAccountUser
) - Compute 관리자 역할(
roles/compute.admin
)Compute 관리자 역할 부여를 방지하려면 다음 Compute Engine IAM 권한이 있는 커스텀 역할 만든 후 Cloud Build 서비스 계정에 부여하면 됩니다.
- Compute 네트워크 사용자 역할(
roles/compute.networkUser
)이 역할은 공유 VPC를 사용하는 이미지를 가져오거나 내보낼 때만 필요합니다.
공유 VPC 프로젝트에서 이미지를 가져오거나 내보내는 프로젝트에 있는 Cloud Build 서비스 계정에 Compute 네트워크 사용자 역할을 부여합니다.
Cloud Build API를 사용 설정한 후 프로젝트 또는 조직의 IAM 및 관리자 페이지로 이동합니다.
Cloud Build 서비스 계정을 찾고
수정을 클릭합니다.필수 역할이 표시되지 않으면 다음을 수행합니다.
- 다른 역할 추가를 클릭합니다.
역할 선택 목록에서 추가하려는 필수 역할을 선택합니다.
- 서비스 계정 > 서비스 계정 토큰 생성자
- 서비스 계정 > 서비스 계정 사용자
Compute Engine > Compute 관리자
또는 커스텀 역할을 선택할 수 있습니다. 이 문서 앞부분의 커스텀 역할의 필수 권한을 참조하세요.
저장을 클릭하여 변경사항을 저장합니다.
선택사항: 공유 VPC를 사용하는 이미지를 가져오거나 내보내는 경우 공유 VPC 프로젝트에서 Compute 네트워크 사용자 역할을 선택합니다.
- 콘솔 상단의 프로젝트 선택기에서 공유 VPC 호스트 프로젝트를 선택합니다.
- IAM 및 관리자 페이지에서 액세스 권한 부여를 클릭합니다.
- 새 주 구성원 필드에 Cloud Build 서비스 계정 이메일 주소를 입력합니다.
PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
PROJECT_NUMBER
룰 이미지를 가져오거나 내보내는 프로젝트의 고유 번호로 바꿉니다. - 역할 선택 목록에서 Compute Engine > Compute 네트워크 사용자 역할을 선택합니다.
- 저장을 클릭하여 변경사항을 저장합니다.
Cloud Build 서비스 계정에
roles/compute.admin
역할을 부여합니다.roles/compute.admin
역할 부여를 방지하려면 필수 권한이 있는 커스텀 역할을 만든 후 이 역할을 Cloud Build 서비스 계정에 부여하면 됩니다. 이 문서 앞부분의 커스텀 역할의 필수 권한을 참조하세요.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 Google Cloud 프로젝트 IDPROJECT_NUMBER
: 프로젝트의 Google Cloud 프로젝트 번호
roles/iam.serviceAccountUser
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
roles/iam.serviceAccountTokenCreator
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
선택사항: 공유 VPC를 사용하는 이미지를 내보내거나 가져오는 경우
roles/compute.networkUser
역할을 부여합니다.gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'
다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC가 있는 호스트 프로젝트의 IDPROJECT_NUMBER
: 이미지를 가져오거나 내보내는 프로젝트의 고유 번호
리소스의
getIamPolicy
메서드로 기존 정책을 읽습니다. 프로젝트의 경우projects.getIamPolicy
메서드를 사용합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
PROJECT_ID
를 프로젝트 ID(예:my-project-1
)로 바꿉니다.필수 역할을 계정에 부여하려면 텍스트 편집기를 사용하여 정책을 수정합니다.
예를 들어
serviceAccount:12345@cloudbuild.gserviceaccount.com
에 필수 역할을 부여하려면 다음 binding을 정책에 추가합니다.{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
roles/compute.admin
역할 부여를 방지하려면 필수 권한이 있는 커스텀 역할을 만든 후 이 역할을 Cloud Build 서비스 계정에 부여하면 됩니다. 이 문서 앞부분의 커스텀 역할의 필수 권한을 참조하세요.선택사항: 공유 VPC를 사용하는 이미지를 내보내거나 가져오는 경우 공유 VPC 프로젝트에서
roles/compute.networkUser
역할을 부여합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
HOST_PROJECT_ID
를 공유 VPC 프로젝트의 ID로 바꿉니다.Cloud Build 서비스 계정에 다음 IAM binding을 추가합니다.
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
업데이트된 정책을 작성하려면
setIamPolicy
메서드를 사용합니다.예를 들어 프로젝트 수준에서 정책을 설정하려면
project.setIamPolicy
메서드를 사용합니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Compute 스토리지 관리자 역할(
roles/compute.storageAdmin
): VM 이미지를 내보내고 가져오는 데 필요합니다. - 스토리지 객체 뷰어 역할(
roles/storage.objectViewer
): VM 이미지를 가져오는 데 필요합니다. - 스토리지 객체 관리자 역할(
roles/storage.objectAdmin
): VM 이미지를 내보내는 데 필요합니다. 프로젝트 또는 조직의 IAM 및 관리자 페이지로 이동합니다.
Compute Engine 서비스 계정을 찾고
수정을 클릭합니다.역할 선택 목록에서 다음 역할을 선택합니다.
- Compute Engine > Compute Storage 관리자
- Cloud Storage > 스토리지 객체 뷰어
- Cloud Storage > 스토리지 객체 관리자
변경사항을 저장합니다.
roles/compute.storageAdmin
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
이미지를 가져오는 경우
roles/storage.objectViewer
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
이미지를 내보내는 경우
roles/storage.objectAdmin
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
리소스의
getIamPolicy
메서드로 기존 정책을 읽습니다. 프로젝트의 경우projects.getIamPolicy
메서드를 사용합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
PROJECT_ID
를 프로젝트 ID(예:my-project-1
)로 바꿉니다.필수 역할을 계정에 부여하려면 텍스트 편집기를 사용하여 정책을 수정합니다.
예를 들어 이미지를 가져오는 데 필요한 역할을
serviceAccount:12345-compute@developer.gserviceaccount.com
에 부여하려면 정책에 다음 binding을 추가합니다.{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
업데이트된 정책을 작성하려면
setIamPolicy
메서드를 사용합니다.예를 들어 프로젝트 수준에서 정책을 설정하려면
project.setIamPolicy
메서드를 사용합니다. 요청 본문에 이전 단계에서 업데이트한 IAM 정책을 제공합니다.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- 커스텀 서비스 계정으로 가상 디스크 가져오기
- 커스텀 서비스 계정으로 가상 어플라이언스 가져오기
- 커스텀 서비스 계정을 사용하여 가상 어플라이언스에서 머신 이미지 가져오기
- 커스텀 서비스 계정으로 커스텀 이미지 내보내기
- 커스텀 이미지를 Cloud Storage로 내보내기
- 프로젝트 간에 이미지 공유
- 가져오기 방법 선택
- 가상 디스크 가져오기
- 가상 어플라이언스 가져오기
- 가상 어플라이언스에서 머신 이미지 가져오기
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
Cloud Storage 버킷에 대한 액세스 설정
가져오기 또는 내보내기 도구에서 사용할 수 있는 Cloud Storage 버킷에 액세스할 수 있어야 합니다. Cloud Storage 버킷이 없으면 Cloud Storage 버킷 만들기를 참조하세요.
Cloud Storage 버킷에 대한 액세스 권한을 설정하려면 계정에 필수 역할 부여 및 Compute Engine 서비스 계정을 참조하세요.
필수 IAM 역할 부여
VM 이미지 가져오기 및 내보내기 도구를 사용하려면 다음 계정이 대신 작업을 수행해야 합니다.
사용자 계정에 필수 역할 부여
이미지를 가져오거나 내보내려면 사용자 계정에 다음 역할이 필요합니다.
콘솔
gcloud
다음 단계에서는
gcloud projects add-iam-policy-binding
명령어를 사용하여 프로젝트 수준에서 필요한 역할을 부여합니다.REST
Cloud Build 서비스 계정에 필수 역할 부여
Google Cloud 콘솔 또는 gcloud CLI를 사용하여 처음으로 이미지를 가져오거나 내보낼 때 이 도구는 Cloud Build API를 사용 설정하고 필수 역할을 Compute Engine 서비스 계정에 부여하려고 시도합니다.
하지만 이러한 역할을 수동으로 부여하여 필수 권한이 적용되도록 할 수 있습니다.
콘솔
gcloud
다음 단계에서는
gcloud projects add-iam-policy-binding
명령어를 사용하여 프로젝트 수준에서 필요한 역할을 부여합니다.REST
리소스에 대한 액세스 관리 방법에 대한 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
Compute Engine 서비스 계정에 필수 역할 부여
Google Cloud 콘솔 또는 gcloud CLI를 사용하여 처음으로 이미지를 가져오거나 내보낼 때 이 도구는 필수 역할을 기본 Compute Engine 서비스 계정에 부여하려고 시도합니다.
조직 정책 구성에 따라 프로젝트에 대한 편집자 역할이 기본 서비스 계정에 자동으로 부여될 수 있습니다.
iam.automaticIamGrantsForDefaultServiceAccounts
조직 정책 제약조건을 적용하여 자동 역할 부여를 중지하는 것이 좋습니다. 2024년 5월 3일 이후에 조직을 만든 경우 기본적으로 이 제약조건이 적용됩니다.자동 역할 부여를 중지한 경우 기본 서비스 계정에 부여할 역할을 결정한 후 직접 이러한 역할을 부여해야 합니다.
기본 서비스 계정에 이미 편집자 역할이 있으면 편집자 역할을 권한이 더 낮은 역할로 바꾸는 것이 좋습니다. 서비스 계정 역할을 안전하게 수정하려면 정책 시뮬레이터를 사용하여 변경사항의 영향을 확인한 후 적절한 역할을 부여하고 취소합니다.
Compute Engine 서비스 계정에는 다음 역할이 있어야 합니다.
콘솔
gcloud
다음 단계에서는
gcloud projects add-iam-policy-binding
명령어를 사용하여 프로젝트 수준에서 필요한 역할을 부여합니다.REST
기본 Compute Engine 서비스 계정을 사용하지 않으려면
gcloud
가져오기 및 내보내기 명령어에서--compute-service-account
플래그를 사용하여 사용자 관리 서비스 계정을 지정하면 됩니다. 커스텀 Compute Engine 서비스 계정 사용에 대한 자세한 내용은 다음 리소스를 참조하세요.다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-11-12(UTC)
-