소스에 대한 액세스 구성: Microsoft Azure Storage

공유 액세스 서명(SAS)을 사용하여 Microsoft Azure Storage에서 소스 데이터에 대한 액세스 권한을 구성할 수 있습니다.

지원되는 리전

Storage Transfer Service는 다음 Microsoft Azure Storage 리전에서 데이터를 전송할 수 있습니다.
  • 미주: 미국 동부, 미국 동부 2, 미국 서부, 미국 서부 2, 미국 서부 3, 미국 중부, 미국 중북부, 미국 중남부, 미국 중서부, 캐나다 중부, 캐나다 동부, 브라질 남부
  • 아시아 태평양: 오스트레일리아 중부, 오스트레일리아 동부, 오스트레일리아 남동부, 인도 중부, 인도 남부, 인도 서부, 동남아시아, 동아시아, 일본 동부, 일본 서부, 한국 남부, 한국 중부
  • 유럽, 중동, 아프리카(EMEA): 프랑스 중부, 독일 중서부, 노르웨이 동부, 스웨덴 중부, 스위스 북부, 북유럽, 유럽 서부, 영국 남부, 영국 서부, 카타르 중부, UAE 북부, 남아프리카공화국 북부

액세스 구성

Microsoft Azure Storage 컨테이너에 대한 액세스를 구성하려면 다음 단계를 따르세요.

  1. Microsoft Azure Storage 사용자를 만들거나 기존 사용자를 사용하여 Microsoft Azure Storage Blob 컨테이너의 스토리지 계정에 액세스합니다.

  2. 컨테이너 수준에서 SAS 토큰을 만듭니다. 자세한 내용은 공유 액세스 서명을 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 참조하세요.

    1. 허용된 서비스에는 Blob이 포함되어야 합니다.

    2. 허용된 리소스 유형에서 컨테이너객체를 모두 선택합니다.

    3. 허용된 권한읽기나열이 포함되어야 합니다. 소스에서 객체를 삭제하도록 전송이 구성된 경우 삭제 권한도 포함해야 합니다.

    4. SAS 토큰의 기본 만료 시간은 8시간입니다. 전송을 성공적으로 완료할 수 있도록 적절한 만료 시간을 설정합니다.

    5. 허용된 IP 주소 필드에 IP 주소를 지정하지 마세요. Storage Transfer Service는 다양한 IP 주소를 사용하며 IP 주소 제한을 지원하지 않습니다.

    6. 허용되는 프로토콜HTTPS 전용이어야 합니다.

  3. 토큰이 생성되면 반환된 SAS 토큰 값을 기록합니다. Storage Transfer Service에서 전송을 구성할 때 이 값이 필요합니다.

Secret Manager에 Microsoft 사용자 인증 정보 저장

Secret Manager는 비밀번호와 같은 민감한 정보를 저장하고 관리하는 보안 서비스입니다. 보안 비밀을 보호하기 위해 강력한 암호화, 역할 기반 액세스 제어, 감사 로깅을 사용합니다.

Storage Transfer Service는 Secret Manager를 활용해서 Azure 사용자 인증 정보를 보호할 수 있습니다. Storage Transfer Service는 Secret Manager에서 공유 액세스 서명(SAS) 토큰과 Azure 공유 키를 모두 지원합니다.

공유 키를 지정하면 Storage Transfer Service는 해당 키를 사용하여 전송 작업에 지정된 Azure 컨테이너로 범위가 제한된 서비스 SAS를 생성합니다.

API 사용 설정

Enable the Secret Manager API.

Enable the API

추가 권한 구성

사용자 권한

보안 비밀을 만드는 사용자는 다음 역할이 필요합니다.

  • Secret Manager 관리자(roles/secretmanager.admin)

역할 부여 방법 알아보기

서비스 에이전트 권한

Storage Transfer Service 서비스 에이전트에는 다음 IAM 역할이 필요합니다.

  • Secret Manager 보안 비밀 접근자(roles/secretmanager.secretAccessor)

서비스 에이전트에 다음 역할을 부여합니다.

Cloud 콘솔

  1. 안내에 따라 서비스 에이전트 이메일 검색합니다.

  2. Google Cloud 콘솔의 IAM 페이지로 이동합니다.

    IAM으로 이동

  3. 액세스 권한 부여를 클릭합니다.

  4. 새 주 구성원 텍스트 상자에 서비스 에이전트 이메일을 입력합니다.

  5. 역할 선택 드롭다운에서 Secret Manager 보안 비밀 접근자를 검색하고 선택합니다.

  6. 저장을 클릭합니다.

gcloud

gcloud projects add-iam-policy-binding 명령어를 사용해서 서비스 에이전트에 IAM 역할을 추가합니다.

  1. 안내에 따라 서비스 에이전트 이메일 검색합니다.

  2. 명령줄에서 다음 명령어를 입력합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:SERVICE_AGENT_EMAIL' \
      --role='roles/secretmanager.secretAccessor'
    

보안 비밀 만들기

Secret Manager로 보안 비밀 만들기

Cloud 콘솔

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

    Secret Manager로 이동

  2. 보안 비밀 만들기를 클릭합니다.

  3. 이름을 입력합니다.

  4. 보안 비밀 값 텍스트 상자에 다음 형식 중 하나로 사용자 인증 정보를 입력합니다.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    또는

    {
      "access_key" : "ACCESS_KEY"
    }
    
  5. 보안 비밀 만들기를 클릭합니다.

  6. 보안 비밀이 생성되면 보안 비밀의 전체 리소스 이름을 기록해 둡니다.

    1. 개요 탭을 선택합니다.

    2. 리소스 ID 값을 복사합니다. 다음 형식을 사용합니다.

      projects/1234567890/secrets/SECRET_NAME

gcloud

gcloud 명령줄 도구를 사용해서 새 보안 비밀을 만들려면 JSON 형식의 사용자 인증 정보를 gcloud secrets create 명령어에 전달합니다.

printf '{
  "sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-

또는

printf '{
  "access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-

보안 비밀의 전체 리소스 이름을 검색합니다.

gcloud secrets describe SECRET_NAME

응답에서 name 값을 기록해 둡니다. 다음 형식을 사용합니다.

projects/1234567890/secrets/SECRET_NAME

보안 비밀 만들기 및 관리에 대한 자세한 내용은 Secret Manager 문서를 참조하세요.

보안 비밀을 작업 만들기 명령어에 전달

Storage Transfer Service에서 Secret Manager를 사용하려면 REST API를 사용하여 전송 작업을 만들어야 합니다.

Secret Manager 리소스 이름을 transferSpec.azureBlobStorageDataSource.credentialsSecret 필드의 값으로 전달합니다.

POST https://storagetransfer.googleapis.com/v1/transferJobs

{
  "description": "Transfer with Secret Manager",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "azureBlobStorageDataSource": {
      "storageAccount": "AZURE_SOURCE_NAME",
      "container": "AZURE_CONTAINER",
      "credentialsSecret": "SECRET_RESOURCE_ID",
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

IP 제한사항

Azure Storage 방화벽을 사용하여 Azure 리소스에 대한 액세스를 제한하는 경우 Storage Transfer Service 작업자에서 사용하는 IP 범위를 허용된 IP 목록에 추가해야 합니다.

이러한 IP 범위는 변경될 수 있기 때문에 현재 값을 영구 주소의 JSON 파일로 게시합니다.

https://www.gstatic.com/storage-transfer-service/ipranges.json

새 범위가 파일에 추가되면 Storage Transfer Service의 요청에 이 범위를 사용하기 전에 최소 7일 이상 기다립니다.

보안 구성을 업데이트된 상태로 유지하기 위해 최소한 매주 이 문서의 데이터를 확인하는 것이 좋습니다. JSON 파일에서 IP 범위를 가져오는 샘플 Python 스크립트의 경우 Virtual Private Cloud 설명서의 이 문서를 참조하세요.

이러한 범위를 허용된 IP로 추가하려면 Microsoft Azure 문서 Azure Storage 방화벽 및 가상 네트워크 구성의 안내를 따르세요.