Cloud Storage는 서비스 에이전트라고 하는 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.create |
서비스 계정이 객체를 버킷에 추가할 수 있게 합니다. |
storage.objects.delete |
서비스 계정이 버킷의 객체를 삭제할 수 있게 합니다.
대상 버킷에 객체 버전 관리가 사용 설정되었으면 |
storage.objects.list |
서비스 계정이 버킷의 객체를 나열할 수 있게 합니다. overwriteObjectsAlreadyExistingInSink 를 false 로 또는 deleteObjectsUniqueInSink 를 true 로 설정하는 경우에 필요합니다. |
사전 정의된 다음 역할에서 필요한 권한을 부여합니다.
- 스토리지 기존 버킷 작성자(
roles/storage.legacyBucketWriter
)
legacy
역할로 표시된 모든 Cloud Storage 역할은 버킷 수준에서만 부여될 수 있습니다.
Cloud Storage 역할과 이 역할에 포함된 권한의 전체 목록은 IAM 역할을 참조하세요.
필수 권한 부여
서비스 에이전트에 스토리지 기존 버킷 작성자 역할을 부여하려면 아래 단계를 수행합니다.
서비스 에이전트의 이메일 찾기
googleServiceAccounts.get
참조 페이지로 이동하세요.이 메서드 사용해 보기라는 제목의 대화형 패널이 열립니다.
패널의 요청 매개변수에 프로젝트 ID를 입력합니다. 여기에서 지정하는 프로젝트는 Storage Transfer Service를 관리하는 데 사용하고 있는 프로젝트여야 하며 이 프로젝트는 대상 버킷의 프로젝트와 다를 수 있습니다.
실행을 클릭합니다.
서비스 에이전트의 이메일이
accountEmail
값으로 반환됩니다. 이 값을 복사합니다.서비스 에이전트의 이메일에는
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
형식이 사용됩니다.
버킷 수준 정책에 서비스 에이전트 추가
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
주 구성원에 역할을 부여할 버킷과 관련된 버킷 더보기 메뉴(
)를 클릭합니다.액세스 수정을 선택합니다.
+ 주 구성원 추가 버튼을 클릭합니다.
새 주 구성원 필드에 서비스 에이전트의 계정 이메일을 입력합니다.
역할 선택 드롭다운 메뉴에서
Storage Legacy Bucket Writer
를 선택합니다.저장을 클릭합니다.
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.legacyBucketWriter
각 항목의 의미는 다음과 같습니다.
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.legacyBucketWriter", "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
입니다.
Cloud Storage 리소스에 IAM 역할 할당에 대한 자세한 내용은 Cloud Storage IAM 문서를 참조하세요.