VPC 서비스 제어 및 Storage Transfer Service를 사용하여 Amazon S3에서 Cloud Storage로 데이터 전송


이 가이드에서는 VPC 서비스 제어 경계로 Storage Transfer Service를 사용하여 Amazon Simple Storage Service(Amazon S3)에서 Cloud Storage로 데이터 전송을 강화하는 방법을 설명합니다. 이 가이드는 Amazon S3에 데이터가 있으며 그러한 데이터를 Google Cloud로 안전하게 처리하거나 마이그레이션하고자 하는 소유자를 위한 것입니다.

이 가이드에서는 사용자가 Amazon Web Services(AWS)와 객체 저장소 내 데이터로 기초적인 작업을 하는 데 익숙하다고 가정합니다. 이 가이드는 Access Context Manager를 사용한 서비스 계정 기반 액세스 제어 메서드를 활용합니다. 서비스 계정 기반 메서드보다 더 높은 액세스 수준은 액세스 수준 만들기를 참조하세요.

아키텍처

다음 다이어그램은 VPC 서비스 제어 아키텍처를 간략하게 보여줍니다.

제어되는 경계 외부에서는 Google Cloud 서비스와의 통신이 거부되는 VPC 서비스 제어 아키텍처

앞의 다이어그램에서 VPC 서비스 제어는 두 프로젝트가 모두 제어되는 경계 내에 있지 않는 한 Google Cloud 서비스와의 통신을 거부합니다.

목표

  • AWS 액세스 구성
  • VPC 서비스 제어 경계를 만듭니다.
  • Access Context Manager를 사용하여 액세스 정책과 액세스 수준을 만듭니다.
  • Storage Transfer Service를 사용하여 Amazon S3와 Cloud Storage 간에 데이터를 이동합니다.
  • Storage Transfer Service를 예약하여 정해진 일정으로 데이터를 검색합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

Storage Transfer Service를 사용하는 데 드는 추가 비용은 없지만 Storage Transfer Service를 사용할 때 Cloud Storage 가격 책정 및 외부 제공업체 요금이 적용됩니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

이 가이드에서는 Google Cloud 리소스와 함께 아래 Amazon Web Services(AWS) 리소스를 사용하며, 이 리소스는 비용이 부과될 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. API Access Context Manager, Cloud Storage, and Storage Transfer Service 사용 설정

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. API Access Context Manager, Cloud Storage, and Storage Transfer Service 사용 설정

    API 사용 설정

  8. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  9. Google Cloud 콘솔에서 IAM 및 관리 페이지로 이동하여 계정에 스토리지 관리자 및 Access Context Manager 관리자 역할을 부여합니다.
    IAM 및 관리 페이지로 이동
  10. 스토리지 관리자 역할은 다음 권한을 갖습니다.

    • firebase.projects.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • storage.buckets.*
    • storage.objects.*

    Access Context Manager 관리자 역할은 다음 권한을 갖습니다.

    • accesscontextmanager.accessLevels.*
    • accesscontextmanager.accessPolicies.*
    • accesscontextmanager.accessPolicies.setIamPolicy
    • accesscontextmanager.accessPolicies.update
    • accesscontextmanager.accessZones.*
    • accesscontextmanager.policies.*
    • accesscontextmanager.servicePerimeters.*
    • resourcemanager.organizations.get

AWS 액세스 구성

이 가이드에서는 기존 AWS Identity and Access Management(AWS IAM) 사용자로 StorageTransfer Service와 상호작용하는 AWS IAM 정책을 만듭니다. 이러한 정책과 사용자는 Google Cloud에 대한 연결을 인증하고 전송 중 데이터를 안전하게 보호하는 데 필요합니다. 이 가이드에서는 데이터를 전송할 Amazon S3 버킷이 있어야 합니다. 기존 Amazon S3 버킷을 사용하거나 새 버킷을 만들 수 있습니다. 테스트 또는 샌드박스 AWS 계정을 사용하여 같은 계정 내 프로덕션 리소스에 영향을 주는 것을 방지할 수 있습니다.

Storage Transfer Service를 위한 AWS IAM 정책을 생성하고 버킷에 적용하기

  1. AWS Management Console에서 IAM 페이지로 이동합니다.
  2. 정책을 클릭한 다음 정책 만들기를 클릭합니다.
  3. 시각적 편집기에서 IAM 정책을 클릭합니다.
  4. S3을 클릭합니다.
  5. 다음 액세스 수준 체크박스를 선택합니다.

    • 목록
    • 읽기
    • 쓰기
  6. 리소스 창에서 특정을 클릭합니다.

  7. 버킷 창에서 ARN 추가를 클릭합니다.

  8. 버킷 이름 필드에 데이터를 전송할 버킷의 이름을 입력합니다.

  9. 리뷰 정책을 클릭하고 transfer-user-policy와 같이 이름을 입력합니다.

  10. 정책 만들기를 클릭합니다.

AWS IAM 정책에 AWS IAM 사용자 추가

  1. AWS Management Console에서 IAM 페이지로 이동합니다.
  2. 사용자를 클릭한 다음 사용자 추가를 클릭합니다.
  3. 이름 필드에 transfer-user를 입력합니다.
  4. 액세스 유형프로그래매틱 액세스를 클릭하고 해당 사용자에 대해 생성한 transfer-user-policy를 연결합니다.
  5. 나중에 가이드에서 사용하므로 사용자를 만든 후 액세스 ID와 보안 비밀 키 쌍을 메모해 둡니다.
  6. 저장을 클릭합니다.

Cloud Storage 버킷 만들기

VPC 서비스 제어 경계를 사용 설정하려면 Cloud Storage 버킷을 만들어야 합니다.

  1. Google Cloud 콘솔에서 Cloud Storage 브라우저 페이지로 이동합니다.

    Cloud Storage 브라우저 페이지로 이동

  2. 버킷 만들기를 클릭합니다.

  3. 이름 필드에 project-id-destination-bucket과 같은 이름을 입력합니다. 이 이름에서 project-id는 해당 Google Cloud 프로젝트 ID입니다.

  4. 버킷의 기본 스토리지 클래스Regional Storage를 클릭합니다.

  5. 위치 드롭다운 목록에서 버킷 데이터가 저장되는 리전을 클릭합니다.

  6. 만들기를 클릭합니다.

전송 작업 서비스 계정의 이름 찾기

Storage Transfer Service는 Google 관리 서비스 계정을 사용하여 프로젝트 내에서 Cloud Storage 및 Pub/Sub 리소스와 통신합니다. 나중에 이 가이드에서 사용되므로 서비스 계정의 이름을 확인해야 합니다. 이전에 Storage Transfer Service를 사용한 적이 없는 경우 Storage Transfer Service 서비스 계정이 생성됩니다. Google 관리 서비스 계정에 대한 상세 설명은 서비스 계정을 참조하세요.

  1. 서비스 계정의 이름을 확인하려면 Storage Transfer Service API 페이지로 이동합니다.
  2. 문자열 필드에 Google Cloud 프로젝트 ID를 입력합니다.

    서비스 계정 이름은 일반적으로 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 형식입니다.

Access Context Manager에서 액세스 정책 만들기

액세스 정책은 개발자가 조직을 위해 만든 서비스 경계 및 액세스 수준을 수집합니다. 한 조직에는 하나의 액세스 정책만 있을 수 있습니다.

  1. Google Cloud 콘솔에서 설정 페이지로 이동합니다.

    설정 페이지로 이동

  2. Google Cloud 프로젝트 ID와 조직 이름을 메모해 둡니다.

  3. Cloud Shell에서 다음과 같이 정책을 만듭니다.

    gcloud access-context-manager policies create \
        --organization organization-id --title policy-title
    
    • organization-id는 앞서 찾은 조직 ID입니다.
    • policy-title은 경계의 제목입니다. 예를 들면 Example-Company-Access-Policy입니다.

    출력은 다음과 같습니다.

    Create request issued
    Waiting for operation [accessPolicies/policy-title/create/policy-number] to complete...done.
    Created.
    

    policy-number는 정책 제목에 할당된 고유 ID를 나타냅니다.

VPC 서비스 제어 경계 만들기

VPC 서비스 제어 경계를 만들 때는 허용되는 트래픽 없이 시작합니다. 이후에 명시적 액세스 수준을 만들어 제어되는 경계 내부로 데이터를 전송하는 전송 작업을 허용합니다.

  1. Google Cloud 콘솔에서 VPC 서비스 제어 페이지로 이동합니다.

    VPC 서비스 제어 페이지로 이동

  2. 새 경계선을 클릭합니다.

  3. 이름 필드에 data-transfer-perimeter와 같은 경계의 이름을 입력합니다.

  4. 선택되어 있는 일반 경계는 그대로 둡니다.

  5. 프로젝트 추가를 클릭하고 이 가이드를 통해 만든 프로젝트를 보호할 프로젝트 목록에 추가합니다.

  6. Cloud Storage API를 클릭합니다.

  7. 액세스 수준을 기본값으로 둡니다.

  8. 저장을 클릭합니다.

액세스 정책에 액세스 수준 만들기

이 섹션에서는 서비스 계정을 통해 VPC에 대한 액세스를 제한합니다.

  1. Cloud Shell에서 액세스 권한을 부여할 주 구성원을 나열하는 conditions.yaml이라는 YAML 파일을 만듭니다.

     - members:
         - serviceAccount:project-project-number@storage-transfer-service.iam.gserviceaccount.com
         - user:sysadmin@example.com
     

  2. 액세스 수준을 만듭니다.

    gcloud access-context-manager levels create name \
        --title title \
        --basic-level-spec ~./conditions.yaml \
        --combine-function=OR \
        --policy=policy-id
    
    • name은 액세스 수준의 고유한 이름입니다. 이 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.
    • titletrusted-identity-ingest와 같은 고유한 정책 제목입니다.
    • policy-id는 조직의 액세스 정책 ID(숫자)입니다.
    • combine-functionOR로 설정되어 있습니다. 기본값 AND모든 조건이 충족되어야 액세스 수준이 부여됨을 의미합니다. OR 값으로 설정하면 IP 주소나 다른 필수 액세스 수준에서 상속된 것과 같은 다른 조건이 충족되지 않더라도 주 구성원에게 액세스 권한이 부여됩니다.

    출력은 다음과 비슷합니다.

    Create request issued for: name
    Waiting for operation [accessPolicies/policy-id/accessLevels/name/create/access-level-number] to complete...done.
    Created level name.
    

    access-level-number는 액세스 수준에 할당된 고유 ID입니다.

액세스 수준을 VPC 서비스 제어에 바인딩

  1. Google Cloud 콘솔에서 VPC 서비스 제어로 이동합니다.

    VPC 서비스 제어 페이지로 이동

  2. VPC 서비스 제어에 대한 수정을 클릭합니다.

  3. 액세스 수준을 클릭하고 trusted-identity-ingest 액세스 수준을 선택합니다.

  4. 저장을 클릭합니다.

이제 제어되는 경계에서 허용되는 작업만 정의한 서비스 계정에서 허용됩니다.

전송 시작

  1. Google Cloud 콘솔에서 전송 페이지로 이동합니다.

    전송 페이지로 이동

  2. 전송 만들기를 클릭합니다.

  3. Amazon S3 버킷을 클릭합니다.

  4. Amazon S3 버킷 필드에 AWS Management Console에 표시되는 소스 Amazon S3 버킷 이름을 입력합니다.

  5. Amazon S3 버킷과 연결된 액세스 키 ID보안 비밀 키를 입력합니다. 이 값은 이 가이드의 시작 부분에서 복사했습니다.

  6. 대상 선택에서 project-id-destination-bucket과 같이 경계 내에 생성했던 버킷의 이름을 입력합니다.

  7. 구성 전송의 경우 전송 작업을 지금 실행으로 예약합니다.

  8. 선택사항: 전송 작업 이름을 수정합니다.

  9. 설명에는 나중에 전송 작업을 식별할 수 있는 설명이 들어간 고유한 이름을 사용합니다.

  10. 만들기를 클릭합니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계