共有アクセス署名(SAS)を使用して、Microsoft Azure Storage のソースデータへのアクセスを構成できます。
サポートされるリージョン
Storage Transfer Service は、次の Microsoft Azure Storage リージョンからデータを転送できます。- 南北アメリカ: 米国東部、米国東部 2、米国西部、米国西部 2、米国西部 3、米国中部、米国中北部、米国中南部、米国中西部、カナダ中部、カナダ東部、ブラジル南部
- アジア太平洋: オーストラリア中部、オーストラリア東部、オーストラリア東南部、中央インド、南インド、西インド、東南アジア、東アジア、日本東部、日本西部、韓国南部、韓国中部
- ヨーロッパ、中東、アフリカ(EMEA): フランス中部、ドイツ中西部、ノルウェー東部、スウェーデン中部、スイス北部、北ヨーロッパ、西ヨーロッパ、英国南部、英国西部、カタール中部、アラブ首長国連邦北部、南アフリカ北部
アクセスを構成する
Microsoft Azure Storage コンテナへのアクセスを構成するには、次の手順を行います。
既存の Microsoft Azure Storage ユーザーを作成または使用して、Microsoft Azure Storage Blob コンテナのストレージ アカウントにアクセスします。
コンテナレベルで SAS トークンを作成します。手順については、Shared Access Signature を使用した Azure Storage リソースへのアクセスの制限を付与するをご覧ください。
許可されているサービスには、Blob を含める必要があります。
[許可されているリソースタイプ] で、[コンテナ] と [オブジェクト] の両方を選択します。
[許可される権限] には、[読み取り] と [リスト] が含まれている必要があります。転送がソースからオブジェクトを削除するように構成されている場合は、削除権限も含める必要があります。
SAS トークンのデフォルトの有効期限は 8 時間です。転送を正常に完了できるように、十分な有効期限を設定してください。
[許可された IP アドレス] フィールドには IP アドレスを指定しないでください。Storage Transfer Service は、さまざまな IP アドレスを使用します。また、IP アドレスの制限はサポートしていません。
[許可されているプロトコル] は [HTTPS のみ] である必要があります。
トークンが作成されたら、返される SAS トークンの値をメモします。Storage Transfer Service を使用して転送を構成する際に、この値が必要です。
SAS トークンを Secret Manager に保存する(プレビュー)
Secret Manager は、パスワードなどの機密データの保存と管理を行う安全なサービスです。強力な暗号化、ロールベースのアクセス制御、監査ロギングを使用してシークレットを保護します。
Storage Transfer Service は、Secret Manager を使用して Azure SAS トークンを保護できます。Secret Manager にトークンを読み込み、シークレット リソース名を Storage Transfer Service に渡します。
API を有効にする
Secret Manager API を有効にします。
追加の権限を構成する
ユーザー権限
シークレットを作成するユーザーには、次のロールが必要です。
- Secret Manager 管理者(
roles/secretmanager.admin
)
ロールを付与する方法を確認する。
サービス エージェントの権限
Storage Transfer Service のサービス エージェントには、次の IAM ロールが必要です。
- Secret Manager のシークレット アクセサー(
roles/secretmanager.secretAccessor
)
サービス エージェントにロールを付与するには:
Cloud コンソール
手順に沿ってサービス エージェントのメールアドレスを取得します。
Google Cloud コンソールで [IAM] ページに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] テキスト ボックスに、サービス エージェントのメールアドレスを入力します。
[ロールを選択] プルダウンで、[Secret Manager のシークレット アクセサー] を検索して選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを使用して、IAM ロールをサービス エージェントに追加します。
手順に沿ってサービス エージェントのメールアドレスを取得します。
コマンドラインで次のコマンドを入力します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
シークレットを作成する
Secret Manager でシークレットを作成します。
Cloud コンソール
Google Cloud コンソールの [Secret Manager] ページに移動します。
[シークレットの作成] をクリックします。
名前を入力します。
[シークレットの値] テキスト ボックスに、次の形式で認証情報を入力します。
{ "sas_token" : "SAS_TOKEN_VALUE" }
[シークレットの作成] をクリックします。
シークレットが作成されたら、シークレットの完全なリソース名をメモします。
[Overview] タブを選択します。
[リソース 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=-
シークレットの完全なリソース名を取得します。
gcloud secrets describe SECRET_NAME
レスポンスに含まれる name
の値をメモします。これには次のフォーマットが使用されます。
projects/1234567890/secrets/SECRET_NAME
シークレットの作成と管理の詳細については、シークレット マネージャーのドキュメントをご覧ください。
シークレットをジョブ作成コマンドに渡す
このプレビュー期間中は、Secret Manager と Storage Transfer Service を併用するために、REST API を使用して転送ジョブを作成する必要があります。
Secret Manager リソース名を、transferSpec.azureBlobStorageDataSource.secretResource
フィールドの値として渡します。
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",
"secretResource": "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 ファイアウォールと仮想ネットワークを構成するの手順に沿って操作します。