Azure Blob Storageを使う中で、ファイルの共有やバックアップ等の目的で異なるAzure Entra ID(旧Azure AD)テナントに紐付くサブスクリプションのAzure Blob Storageにオブジェクトを転送したいといった場面があるかと思います。そういった場合に、オブジェクト レプリケーションの機能を利用することで、マイクロソフトのバックボーンネットワーク経由でセキュアに目的を達成することができるのですが、同じAzure Entra IDテナント間での設定手順と異なり、レプリケーションルールを記載したjsonファイルの作成や、テナント間でのjsonファイルの連携が必要になるため、検証もかねて構築手順を整理してみようと思います。
オブジェクト レプリケーションの機能の概要については以下公開情報を参照ください。
https://learn.microsoft.com/ja-jp/azure/storage/blobs/object-replication-overview
構成図
ソース側ストレージアカウントの作成
ソース側のサブスクリプションでストレージアカウントを作成します。
Azure Portalからストレージアカウントを選択し「+作成」をクリックします
各パラメータについて、環境に合わせて設定をしますが、以下のパラメータについては必須で設定する必要があります。
詳細設定
・BLOBストレージのクロステナントレプリケーションを許可する
データ保護
・BLOBのバージョン管理を有効にする
・BLOBの変更フィードを有効にする
今回はストレージアカウント「sourceblobstorage2023」を作成しました。
ソース側BLOBコンテナーの作成
ソース側のストレージアカウントにBLOBコンテナーを作成します。
Azure Portalから作成したストレージアカウントにアクセスします。
左ペインから【データストレージ】-【コンテナー】を選択後、「+ コンテナー」をクリックします。
ソースコンテナーの名前を入力し、「作成」をクリックします。
今回はコンテナー「source」を作成しました。
宛先側ストレージアカウントの作成
宛先側のサブスクリプションでストレージアカウントを作成します。
Azure portalからストレージアカウントを選択し「+作成」をクリックします。
各パラメータについて、環境に合わせて設定をしますが、以下のパラメータについては必須で設定する必要があります。
詳細設定
・BLOBストレージのクロステナントレプリケーションを許可する
今回はストレージアカウント「destblobstorage2023」を作成しました。
宛先側BLOBコンテナーの作成
宛先側のストレージアカウントにBLOBコンテナーを作成します。
Azure Portalから作成したストレージアカウントにアクセスします。
左ペインから【データストレージ】-【コンテナー】を選択後、「+ コンテナー」をクリックします。
宛先コンテナーの名前を入力し、「作成」をクリックします。
今回はコンテナー「dest」を作成しました。
宛先側オブジェクト レプリケーション設定
blob storageについて作成ができたので、次にオブジェクト レプリケーションの設定をします。
以下のjsonファイルを作成します。
{
"properties": {
"policyId": "default",
"sourceAccount": "/subscriptions/<ソース側サブスクリプションID>/resourceGroups/<リソースグループ名>/providers/Microsoft.Storage/storageAccounts/sourceblobstorage2023",
"destinationAccount": "/subscriptions/<ソース側サブスクリプションID>/resourceGroups/<リソースグループ名>/providers/Microsoft.Storage/storageAccounts/destblobstorage2023",
"rules": [
{
"ruleId": "",
"sourceContainer": "source",
"destinationContainer": "dest"
}
]
}
}
※レプリ―ケーションのルールにフィルターを追加したい場合は"rules"に"filters"の項目を追加することで設定できます。
例:2023年9月12日0時(日本時間)より後に作成されたファイルをコピーする場合"rules": [ { "ruleId": "", "sourceContainer": "source", "destinationContainer": "dest", "filters": { "minCreationTime": "2023-09-11T15:00:00Z" } } ]
作成したjsonファイルを利用してレプリケーション設定を作成します。
宛先側のストレージアカウント「destblobstorage2023」にAzure Portalからアクセスし、
左ペインから【データ管理】-【オブジェクト レプリケーション】を選択後します。
レプリケーション規則のアップロードを選択後、作成したjsonファイルをアップロードします。
設定内容について、問題ないことを確認して、「アップロード」をクリックします。
アップロードが完了すると、オブジェクト レプリケーションの「その他のアカウント」タブにレプリケーション規則が作成されているので、レプリケーション規則をダウンロードします。
※jsonファイルがダウンロードされます。
ソース側オブジェクト レプリケーション設定
宛先側のストレージアカウント「sorceblobstorage2023」にAzure Portalからアクセスし、
左ペインから【データ管理】-【オブジェクト レプリケーション】を選択後します。
レプリケーション規則のアップロードを選択後、宛先側レプリケーション設定でダウンロードしたjsonファイルをアップロードします。
設定内容について、問題ないことを確認して、「アップロード」をクリックします。
アップロードが完了後、オブジェクト レプリケーションの「その他のアカウント」タブにレプリケーション規則が作成されていることを確認します。
検証
ソース側のBLOB Storageにテキストファイルをアップロードしたところ、宛先に連携されていることを確認できました。変更日付を見るとおよそ3分弱で宛先側に連携されていることが確認できます。
おわりに
異なるAzure Entra IDテナント間でのオブジェクト レプリケーションを組むことができました。
途中にも記載しましたが、フィルタールールなども合わせて設定可能のため、本手順を参考にしていただければと思います。