ソースへのアクセスを構成する: Microsoft Azure Storage

共有アクセス署名(SAS)を使用して、Microsoft Azure Storage のソースデータへのアクセスを構成できます。

サポートされるリージョン

Storage Transfer Service は、次の Microsoft Azure Storage リージョンからデータを転送できます。
  • 南北アメリカ: 米国東部、米国東部 2、米国西部、米国西部 2、米国西部 3、米国中部、米国中北部、米国中南部、米国中西部、カナダ中部、カナダ東部、ブラジル南部
  • アジア太平洋: オーストラリア中部、オーストラリア東部、オーストラリア東南部、中央インド、南インド、西インド、東南アジア、東アジア、日本東部、日本西部、韓国南部、韓国中部
  • ヨーロッパ、中東、アフリカ(EMEA): フランス中部、ドイツ中西部、ノルウェー東部、スウェーデン中部、スイス北部、北ヨーロッパ、西ヨーロッパ、英国南部、英国西部、カタール中部、アラブ首長国連邦北部、南アフリカ北部

アクセスを構成する

Microsoft Azure Storage コンテナへのアクセスを構成するには、次の手順を行います。

  1. 既存の Microsoft Azure Storage ユーザーを作成または使用して、Microsoft Azure Storage Blob コンテナのストレージ アカウントにアクセスします。

  2. コンテナレベルで SAS トークンを作成します。手順については、Shared Access Signature を使用した Azure Storage リソースへのアクセスの制限を付与するをご覧ください。

    1. 許可されているサービスには、Blob を含める必要があります。

    2. [許可されているリソースタイプ] で、[コンテナ] と [オブジェクト] の両方を選択します。

    3. [許可される権限] には、[読み取り] と [リスト] が含まれている必要があります。転送がソースからオブジェクトを削除するように構成されている場合は、削除権限も含める必要があります。

    4. SAS トークンのデフォルトの有効期限は 8 時間です。転送を正常に完了できるように、十分な有効期限を設定してください。

    5. [許可された IP アドレス] フィールドには IP アドレスを指定しないでください。Storage Transfer Service は、さまざまな IP アドレスを使用します。また、IP アドレスの制限はサポートしていません。

    6. [許可されているプロトコル] は [HTTPS のみ] である必要があります。

  3. トークンが作成されたら、返される SAS トークンの値をメモします。Storage Transfer Service を使用して転送を構成する際に、この値が必要です。

Microsoft 認証情報を Secret Manager に保存する

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 日間はかかります。

セキュリティ構成を最新の状態に保つため、少なくとも週に 1 回、このドキュメントからデータを pull することをおすすめします。JSON ファイルから IP 範囲を取得する Python スクリプトの例については、Virtual Private Cloud のドキュメントをご覧ください。

これらの範囲を許可された IP として追加するには、Microsoft Azure の記事、Azure Storage ファイアウォールと仮想ネットワークを構成するの手順に沿って操作します。