Storage Transfer Service는 서비스 에이전트라고 하는 Google 관리 서비스 계정을 사용하여 Cloud Storage 소스 버킷에서 데이터를 이동합니다. 이 서비스 에이전트는 googleServiceAccounts.get
을 처음 호출할 때 생성됩니다.
소스 버킷은 서비스 에이전트와 동일한 프로젝트에 속하지 않아도 됩니다. 단계는 버킷이 포함된 프로젝트에 관계없이 동일합니다.
사용자 권한
서비스 에이전트에 필수 권한을 부여하려면 소스 버킷에 대한 관련 권한이 있어야 합니다.
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
스토리지 기존 버킷 소유자 역할(roles/storage.legacyBucketOwner
) 또는 스토리지 관리자 역할(roles/storage.admin
)이 필수 권한을 제공합니다.
Google Cloud 콘솔에서 권한 자동 부여
Google Cloud 콘솔을 사용하여 전송을 만들고 사용자 권한에 나열된 권한이 있는 경우 서비스 에이전트는 소스 버킷에 대한 필수 권한을 자동으로 부여받습니다.
이 페이지의 단계를 건너뛰고 전송 만들기로 직접 이동할 수 있습니다.
필수 권한
서비스 에이전트에는 다음과 같은 소스 버킷 권한이 있어야 합니다.
권한 | 설명 |
---|---|
storage.buckets.get |
서비스 에이전트가 버킷의 위치를 가져올 수 있게 합니다. |
storage.objects.list |
서비스 에이전트가 버킷의 객체를 나열할 수 있게 합니다. |
storage.objects.get |
서비스 에이전트가 버킷의 객체를 읽을 수 있게 합니다. |
storage.objects.create |
서비스 에이전트가 버킷의 객체를 만들 수 있게 합니다. 파일 시스템으로 전송하는 경우에 필수입니다. Storage Transfer Service는 소스 버킷에서 2개의 폴더를 만들고 채웁니다. |
storage.objects.delete |
서비스 에이전트가 버킷의 객체를 삭제할 수 있게 합니다. deleteObjectsFromSourceAfterTransfer 를 true 로 설정한 경우에 필요합니다.
|
다음 사전 정의된 역할은 함께 필수 권한을 부여합니다.
- 다음 중 하나:
- 다른 Cloud Storage 버킷으로 전송되는 경우 스토리지 객체 뷰어(
roles/storage.objectViewer
) - 전송이 파일 시스템으로 전송되는 경우 스토리지 객체 생성자(
roles/storage.objectCreator
)
- 다른 Cloud Storage 버킷으로 전송되는 경우 스토리지 객체 뷰어(
- 그리고 다음 중 하나가 적용됩니다.
- 객체 삭제 권한이 필요한 경우 스토리지 기존 버킷 작성자(
roles/storage.legacyBucketWriter
) - 객체 삭제 권한이 필요하지 않은 경우 스토리지 기존 버킷 리더(
roles/storage.legacyBucketReader
)
- 객체 삭제 권한이 필요한 경우 스토리지 기존 버킷 작성자(
legacy
역할로 표시된 모든 Cloud Storage 역할은 버킷 수준에서만 부여될 수 있습니다.
Cloud Storage 역할과 이 역할에 포함된 권한의 전체 목록은 IAM 역할을 참조하세요.
ACL_PRESERVE가 설정된 객체 ACL의 경우 소스 객체에 대해 스토리지 기존 객체 소유자 역할(roles/storage.legacyObjectOwner
)이 추가로 필요합니다. ACL_PRESERVE의 경우 스토리지 기존 객체 소유자 역할을 갖도록 서비스 계정을 수동으로 추가하여 소스 객체에 storage.objects.getIamPolicy
권한을 부여하세요.
필수 권한 부여
서비스 에이전트에 필수 권한을 부여하려면 다음 단계를 따르세요.
서비스 에이전트의 이메일 찾기
googleServiceAccounts.get
참조 페이지로 이동하세요.이 메서드 사용해 보기라는 제목의 대화형 패널이 열립니다.
패널의 요청 매개변수에 프로젝트 ID를 입력합니다. 여기에서 지정하는 프로젝트는 Storage Transfer Service 관리를 위해 사용 중인 프로젝트여야 하고, 이 프로젝트는 소스 버킷의 프로젝트와 다를 수 있습니다.
실행을 클릭합니다.
서비스 에이전트의 이메일이
accountEmail
값으로 반환됩니다. 이 값을 복사합니다.서비스 에이전트의 이메일에는
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
형식이 사용됩니다.
버킷 수준 정책에 서비스 에이전트 추가
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
주 구성원에 역할을 부여할 버킷과 관련된 버킷 더보기 메뉴(
)를 클릭합니다.액세스 수정을 선택합니다.
+ 주 구성원 추가 버튼을 클릭합니다.
새 주 구성원 필드에 서비스 에이전트의 계정 이메일을 입력합니다.
역할 선택 드롭다운 메뉴에서
Storage Object Viewer
또는Storage Object Creator
를 선택합니다.다른 역할 추가를 클릭합니다.
Storage Legacy Bucket Writer
또는Storage Legacy Bucket Reader
를 선택합니다.저장을 클릭합니다.
gcloud
gcloud storage buckets add-iam-policy-binding
명령어를 사용합니다.
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 주 구성원에게 액세스 권한을 부여할 버킷의 이름입니다. 예를 들면my-bucket
입니다.YOUR_AGENT_EMAIL
은 서비스 에이전트 이메일 찾기에서 복사한 에이전트 계정 이메일입니다.
코드 샘플
C++
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Cloud Storage용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud Storage 클라이언트 라이브러리를 참조하세요. 자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
JSON
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
각 항목의 의미는 다음과 같습니다.
YOUR_AGENT_EMAIL
은 서비스 에이전트 이메일 찾기에서 복사한 에이전트 계정 이메일입니다.
cURL
을 사용하여PUT setIamPolicy
요청으로 JSON API를 호출합니다.curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
각 항목의 의미는 다음과 같습니다.
JSON_FILE_NAME
은 2단계에서 만든 파일의 경로입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 주 구성원에게 액세스 권한을 부여할 버킷의 이름입니다. 예를 들면my-bucket
입니다.