에이전트 기반 전송 권한

에이전트 기반 전송을 만들기 전에 다음 항목에 대한 권한을 구성해야 합니다.

  • 전송을 만드는 데 사용되는 사용자 또는 사용자 관리형 서비스 계정. 이 계정은 Google Cloud 콘솔에 로그인된 계정이거나 gcloud CLI에 인증할 때 지정된 계정입니다. 사용자 계정은 일반 사용자 계정 또는 사용자 관리형 서비스 계정일 수 있습니다.

  • Google 관리 서비스 계정은 서비스 에이전트라고도 하며 Storage Transfer Service에서 사용됩니다. 이 계정은 일반적으로 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 형식을 사용하는 이메일 주소로 식별됩니다.

  • 전송 에이전트에 Google Cloud 권한을 제공하는 전송 에이전트 계정. 전송 에이전트 계정은 설치하는 사용자의 사용자 인증 정보 또는 사용자 관리형 서비스 계정의 사용자 인증 정보를 사용하여 인증합니다.

IAM 역할 부여에 대한 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

가장 간단한 권한 부여 방법

gcloud CLI를 사용하여 사용자/사용자 관리 서비스 계정 및 Google 관리 서비스 계정에 필요한 권한을 부여할 수 있습니다. 이러한 권한이 있는 사용자는 전송 작업을 생성, 편집, 삭제하고 대역폭 한도를 설정하거나 수정할 수 있습니다.

이러한 권한이 조직 정책에 비해 너무 광범위하면 Storage Transfer Service에 필요한 최소 권한은 이 문서의 이후 섹션을 참조하세요.

기존 권한을 검사하고 누락된 역할을 출력하려면 다음 명령어를 실행합니다.

gcloud transfer authorize

이러한 역할을 자동으로 적용하려면 --add-missing 플래그를 사용합니다.

gcloud transfer authorize --add-missing

사용자 관리 서비스 계정에 권한을 부여하려면 서비스 계정 키 파일을 전달합니다.

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

서비스 계정을 만드는 방법은 서비스 계정 만들기 및 관리를 참조하세요.

이 명령어는 다음 권한을 부여합니다.

  • 사용자/사용자 관리 서비스 계정에 다음 권한을 부여합니다.

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Google 관리 서비스 계정에 다음 권한을 부여합니다.

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

gcloud CLI 설치 방법은 gcloud 빠른 시작을 참조하세요.

사용자 또는 사용자 관리 서비스 계정 권한

이 섹션에서는 전송 관리와 전송 실행에 필요한 역할을 설명합니다. 조직의 요구사항에 따라 각 캐릭터에 대한 정확한 역할이 결정됩니다. 이 섹션에서는 관리자와 사용자를 만든다고 가정합니다.

관리자 계정

Storage Transfer Service 관리자 계정은 전송 에이전트를 관리하고 대역폭 사용량 한도를 설정하며 전송 작업을 삭제합니다.

관리자 계정을 설정하려면 다음 IAM 권한 및 역할을 할당합니다.

역할/권한 기능 참고
resourcemanager.projects.getIamPolicy 이 권한은 Google 관리형 서비스 계정에 전송에 필요한 권한이 있는지 확인하는 데 사용됩니다. 이 권한을 부여하려면 사전 정의된 역할 역할 뷰어(roles/iam.roleViewer)를 부여하거나 이 단일 권한으로 커스텀 역할을 생성하고 커스텀 역할을 부여합니다.
스토리지 전송 관리자 (roles/storagetransfer.admin) 프로젝트 설정 및 에이전트 모니터링과 같은 전송 프로젝트의 관리 작업을 사용 설정합니다. 부여되는 권한의 자세한 목록은 사전 정의된 Storage Transfer Service 역할을 참조하세요.

사용자 계정

Storage Transfer Service 사용자 계정은 전송을 만들고 실행하는 데 사용됩니다. 이러한 계정에는 일반적으로 전송 작업을 삭제할 수 있는 권한이 없습니다.

사용자 계정은 Google Cloud 콘솔 사용자이거나 서비스 계정일 수 있습니다. 서비스 계정을 사용하는 경우 Storage Transfer Service에 사용자 인증 정보를 전달하는 데 사용하는 방법은 사용하는 인터페이스에 따라 다릅니다.

사용자 계정을 설정하려면 계정에 다음 권한과 역할을 할당합니다.

역할/권한 기능 참고
resourcemanager.projects.getIamPolicy Google 관리형 서비스 계정에 전송에 필요한 Pub/Sub 권한이 있는지 확인하는 데 사용됩니다. 이 권한을 부여하려면 사전 정의된 역할 역할 뷰어(roles/iam.roleViewer)를 부여하거나 이 단일 권한으로 커스텀 역할을 생성하고 커스텀 역할을 부여합니다.
스토리지 전송 사용자 (roles/storagetransfer.user) 사용자가 전송을 생성, 가져오기, 업데이트, 나열할 수 있습니다. 부여되는 권한의 자세한 목록은 사전 정의된 Storage Transfer Service 역할을 참조하세요.

Google 관리 서비스 계정 권한

Storage Transfer Service는 Google 관리형 서비스 계정을 사용하여 데이터를 이동합니다. 이 서비스 계정은 처음으로 전송 작업을 만들거나, googleServiceAccounts.get을 호출하거나, Google Cloud 콘솔의 작업 생성 페이지를 방문하면 자동으로 생성됩니다.

서비스 계정의 형식은 일반적으로 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com입니다. 서비스 계정 식별자를 검색하려면 googleServiceAccounts.get API 호출을 사용합니다.

역할 자동 할당

올바른 역할을 Google 관리 서비스 계정에 자동으로 할당하는 방법에는 두 가지가 있습니다.

  • Google Cloud 콘솔을 사용하여 전송을 만듭니다. 콘솔에 필요한 권한이 자동으로 적용됩니다.

  • gcloud transfer authorize --add-missing을 사용하세요. 가장 간단한 권한 부여 방법을 참조하세요.

수동 역할 할당

Google 관리 서비스 계정이 전송을 완료하는 데 필요한 리소스에 액세스하도록 허용하려면 서비스 계정에 다음 역할이나 이에 상응하는 권한을 할당합니다.

역할/권한 기능 참고
스토리지 객체 생성자 (roles/storage.objectCreator) Storage Transfer Service를 사용 설정하여 이 전송에 연결된 Cloud Storage 버킷에 전송 로그를 만들 수 있습니다. 전송에 사용되는 모든 Cloud Storage 버킷에 부여합니다. 상황에 따라 Storage Transfer Service를 실행 중인 프로젝트에 프로젝트 수준의 역할을 부여할 수 있습니다.

이러한 역할이 부여하는 권한의 자세한 목록은 사전 정의된 Cloud Storage 역할을 참조하세요.
스토리지 객체 뷰어 (roles/storage.objectViewer) Storage Transfer Service를 사용 설정하여 파일이 이미 Cloud Storage에 전송되거나 Cloud Storage에서 수신되었는지 여부를 확인합니다.
Storage Transfer Service 에이전트 (roles/storagetransfer.serviceAgent) Storage Transfer Service를 사용 설정하여 Google Cloud에서 전송 에이전트와 통신할 수 있도록 Pub/Sub 주제를 자동으로 만들고 수정합니다. Storage Transfer Service가 실행되는 프로젝트에 프로젝트 수준의 역할을 적용합니다.

이 역할이 부여하는 권한의 자세한 목록은 권한 및 역할을 참조하세요.
스토리지 기존 버킷 리더 (roles/storage.legacyBucketReader) Storage Transfer Service를 사용 설정하여 Cloud Storage 버킷 메타데이터를 읽습니다.

전송에 사용되는 각 Cloud Storage 버킷에 부여합니다.

Cloud Storage legacy 역할은 버킷 수준에서만 부여될 수 있습니다.

자세한 내용은 필요한 권한 부여를 참조하세요.

전송 에이전트 계정 권한

사용자 계정 또는 서비스 계정으로 Storage Transfer Service 전송 에이전트를 실행할 수 있습니다.

전송 에이전트를 실행하는 전송 에이전트 서비스 계정 또는 사용자 계정을 설정하려면 다음 역할을 할당합니다.

역할/권한 기능 참고
스토리지 전송 에이전트 (roles/storagetransfer.transferAgent) 전송 에이전트에 전송을 완료하는 데 필요한 Storage Transfer Service 및 Pub/Sub 권한을 부여합니다. 사용자 또는 에이전트에서 사용 중인 서비스 계정에 이 역할을 부여합니다.

이 역할이 부여하는 권한의 자세한 목록은 IAM으로 액세스 제어를 참조하세요.

소스 및 대상 권한

또한 에이전트 계정에 소스 데이터에 액세스하고 대상에 쓸 수 있는 올바른 권한이 있는지 확인해야 합니다.

파일 시스템, S3 호환 스토리지, HDFS에서 Cloud Storage로

전송 대상이 Cloud Storage 버킷인 경우 전송 에이전트는 대상 버킷에 대한 다음 권한이 필요합니다. 자세한 내용은 버킷 수준 정책에 주 구성원 추가를 참조하세요.

권한 설명
storage.objects.create 에이전트 계정이 전송 중에 Cloud Storage 객체를 쓸 수 있습니다.
storage.objects.get 에이전트 계정에서 객체 데이터 및 메타데이터를 읽도록 허용합니다.
storage.objects.list 에이전트 계정에서 Cloud Storage 버킷의 객체를 나열할 수 있습니다.
storage.objects.delete 싱크에서 객체를 덮어쓰거나 삭제하도록 전송이 구성된 경우 필수입니다. 예를 들어 overwriteObjectsAlreadyExistingInSink 또는 deleteObjectsUniqueInSink가 전송의 transferOptions 구성에 설정된 경우입니다.

이러한 권한을 부여하려면 다음 역할을 부여합니다.

또는 특정 권한이 있는 커스텀 역할을 만들고 커스텀 역할을 부여합니다.

멀티파트 업로드 사용 설정에는 추가 권한이 필요합니다.

Cloud Storage - 파일 시스템

전송 소스가 Cloud Storage 버킷인 경우 전송 에이전트는 소스 버킷에 대한 다음 권한이 필요합니다.

권한 설명
storage.objects.create 에이전트 계정이 전송 로그 및 전송 관련 메타데이터를 Cloud Storage 소스 버킷에 쓸 수 있도록 허용합니다.
storage.objects.get 에이전트 계정에서 객체 데이터 및 메타데이터를 읽도록 허용합니다.
storage.objects.list 에이전트 계정에서 Cloud Storage 버킷의 객체를 나열할 수 있습니다.
storage.objects.delete 소스에서 객체를 삭제하도록 전송이 구성된 경우 필수입니다. deleteObjectsFromSourceAfterTransfer를 참조하세요.

이 권한을 부여하려면 다음 역할을 부여합니다.

또는 단일 권한이 있는 커스텀 역할을 만들고 커스텀 역할을 부여합니다.

파일 시스템 - 파일 시스템

두 파일 시스템 간 전송인 경우 전송 에이전트에는 중간 버킷에 대한 다음 권한이 필요합니다.

권한 설명
storage.objects.create 에이전트 계정이 전송 중에 Cloud Storage 객체를 쓸 수 있습니다.
storage.objects.get 에이전트 계정에서 객체 데이터 및 메타데이터를 읽도록 허용합니다.
storage.objects.list 에이전트 계정에서 Cloud Storage 버킷의 객체를 나열할 수 있습니다.
storage.objects.delete 전송이 완료된 후 중간 버킷의 객체를 삭제하도록 구성된 경우 필수입니다.

이러한 권한을 부여하려면 다음 역할을 부여합니다.

또는 특정 권한이 있는 커스텀 역할을 만들고 커스텀 역할을 부여합니다.

멀티파트 업로드 사용 설정에는 추가 권한이 필요합니다.

멀티파트 업로드

파일 시스템에서 Cloud Storage로 전송하거나 파일 시스템 간에 전송하기 위해 멀티파트 업로드를 사용 설정하려면 다음 권한을 에이전트에 추가로 부여합니다.

  • Cloud Storage로 전송할 때는 대상 버킷에 권한을 할당합니다.
  • 파일 시스템 간 전송의 경우 중간 버킷에 권한을 할당합니다.
멀티파트 업로드 권한 이름 설명
storage.multipartUploads.create 여러 부분으로 객체를 업로드합니다.
storage.multipartUploads.abort 멀티파트 업로드 세션을 취소합니다.
storage.multipartUploads.listParts 멀티파트 업로드 세션에서 업로드된 객체 부분을 나열합니다.
storage.multipartUploads.list 버킷의 멀티파트 업로드 세션을 나열합니다.

이러한 권한을 부여하려면 다음 역할을 부여합니다.

또는 특정 권한이 있는 커스텀 역할을 만들고 커스텀 역할을 부여합니다.