オブジェクト レプリケーションは、あるストレージ アカウント内のコンテナーから別のストレージ アカウント内のコンテナーにブロック BLOB を非同期的にコピーします。 オブジェクト レプリケーション ポリシーを構成するときは、ソース アカウントとコンテナー、および移行先アカウントとコンテナーを指定します。 ポリシーが構成されると、Azure Storage は、ソース オブジェクトに対する作成、更新、および削除操作の結果をコピー先オブジェクトに自動的にコピーします。 Azure Storage でのオブジェクト レプリケーションの詳細については、「 ブロック BLOB のオブジェクト レプリケーション」を参照してください。
承認されたユーザーは、ソース アカウントが 1 つの Microsoft Entra テナントにあり、Microsoft Entra テナント間でテナント間レプリケーションが許可されている場合、移行先アカウントが別のテナントにあるオブジェクト レプリケーション ポリシーを構成できます。 セキュリティ ポリシーで、同じテナント内にのみ存在するストレージ アカウントへのオブジェクト レプリケーションを制限する必要がある場合は、ソース アカウントと移行先アカウントが異なるテナントにあるポリシーの作成を禁止できます。 既定では、明示的に許可しない限り、2023 年 12 月 15 日以降に作成されたすべての新しいストレージ アカウントに対してクロステナント オブジェクト レプリケーションは無効になります。
この記事では、ストレージ アカウントのテナント間オブジェクト レプリケーションを修復する方法について説明します。 また、新規および既存のストレージ アカウントのテナント間オブジェクト レプリケーションを禁止するポリシーを作成する方法についても説明します。
クロステナント ポリシーを含むオブジェクト レプリケーション ポリシーを構成する方法の詳細については、「 ブロック BLOB のオブジェクト レプリケーションを構成する」を参照してください。
テナント間オブジェクト レプリケーションの修正
Microsoft Entra テナント間でのオブジェクト レプリケーションを防ぐには、ストレージ アカウントの AllowCrossTenantReplication プロパティを false に設定 します。 ストレージ アカウントが現在テナント間オブジェクト レプリケーション ポリシーに参加していない場合は、 AllowCrossTenantReplication プロパティを false に設定すると、このストレージ アカウントをソースまたは宛先として使用するクロステナント オブジェクト レプリケーション ポリシーの将来の構成が防止されます。 ただし、ストレージ アカウントが現在 1 つ以上のテナント間オブジェクト レプリケーション ポリシーに参加している場合、既存のクロステナント ポリシーを削除するまで 、AllowCrossTenantReplication プロパティを false に設定することはできません。
テナント間ポリシーは、2023 年 12 月 15 日以降に作成されたストレージ アカウントでは、既定では許可されません。 ただし、 AllowCrossTenantReplication プロパティは、2023 年 12 月 15 日より前に作成された既存のストレージ アカウントに対して既定で設定されておらず、明示的に設定されるまで値を返しません。 2023 年 Dev 15 より前に作成されたアカウントのプロパティ値が null または true の場合、ストレージ アカウントはテナント間のオブジェクト レプリケーション ポリシーに参加できます。 その後に作成されたアカウントの場合、プロパティを true に設定する必要があります。 AllowCrossTenantReplication プロパティを設定しても、ストレージ アカウントにダウンタイムは発生しません。
新しいアカウントのテナント間レプリケーションを修復する
新しいストレージ アカウントのテナント間レプリケーションを禁止するには、Azure portal、PowerShell、または Azure CLI を使用します。 このプロパティは、明示的に設定されていない場合でも、2023 年 12 月 15 日以降に作成された新しいアカウントの既定値は false になります。
ストレージ アカウントのテナント間オブジェクト レプリケーションを禁止するには、次の手順に従います。
Azure portal で、[ ストレージ アカウント ] ページに移動し、[ 作成] を選択します。
新しいストレージ アカウントの [ 基本 ] タブに入力します。
[ 詳細設定 ] タブの [BLOB ストレージ ] セクションで、[ テナント間レプリケーションを許可する ] 設定を見つけて、チェック ボックスをオフにします。
アカウントを作成するプロセスを完了します。
既存のアカウントのテナント間レプリケーションを修復する
既存のストレージ アカウントのテナント間レプリケーションを禁止するには、Azure portal、PowerShell、または Azure CLI を使用します。
現在テナント間ポリシーに参加していない既存のストレージ アカウントのテナント間オブジェクト レプリケーションを禁止するには、次の手順に従います。
Azure Portal のストレージ アカウントに移動します。
[ データ管理] で、[ オブジェクト レプリケーション] を選択します。
[詳細設定] を選択します。
[ テナント間レプリケーションを許可する] チェック ボックスをオフにします。 明示的に許可しない限り、ストレージ アカウントに対してクロステナント オブジェクト レプリケーションが許可されるため、既定ではこのボックスがオンになっています。
[OK] を選択して変更を保存します。
ストレージ アカウントが現在 1 つ以上のテナント間レプリケーション ポリシーに参加している場合、それらのポリシーを削除するまで、テナント間オブジェクト レプリケーションを禁止することはできません。 このシナリオでは、次の図に示すように、Azure portal で設定を使用できません。
テナント間レプリケーションを禁止した後、ソースまたは宛先としてストレージ アカウントを使用してクロステナント ポリシーを構成しようとすると失敗します。 Azure Storage は、ストレージ アカウントに対してテナント間オブジェクトレプリケーションが許可されていないことを示すエラーを返します。
ストレージ アカウントに対してテナント間オブジェクト レプリケーションが禁止されている場合、そのアカウントで作成する新しいオブジェクト レプリケーション ポリシーには、ソース アカウントと移行先アカウントの完全な Azure Resource Manager ID が含まれている必要があります。 Azure Storage では、ソース アカウントと移行先アカウントが同じテナント内に存在するかどうかを確認するために、完全なリソース ID が必要です。 詳細については、「 ソース アカウントと移行先アカウントの完全なリソース ID を指定する」を参照してください。
AllowCrossTenantReplication プロパティは、Azure Resource Manager デプロイ モデルのみを使用するストレージ アカウントでサポートされています。 Azure Resource Manager デプロイ モデルを使用するストレージ アカウントの詳細については、「 ストレージ アカウントの種類」を参照してください。
テナント間レプリケーションを許可または禁止するためのアクセス許可
ストレージ アカウントの AllowCrossTenantReplication プロパティを設定するには、ユーザーがストレージ アカウントを作成および管理するためのアクセス許可を持っている必要があります。 これらのアクセス許可を提供する Azure ロールベースのアクセス制御 (Azure RBAC) ロールには、Microsoft.Storage/storageAccounts/write または Microsoft.Storage/storageAccounts/* アクションが含まれます。 このアクションの組み込みロールには、次のようなロールがあります。
- Azure Resource Manager の所有者ロール
- Azure Resource Manager の共同作成者ロール
- Storage Account の共同作成者ロール
これらのロールは、Microsoft Entra ID を介したストレージ アカウント内のデータへのアクセスを提供しません。 ただし、アカウント アクセス キーへのアクセスを許可する Microsoft.Storage/storageAccounts/listkeys/action が含まれています。 このアクセス許可では、ユーザーがアカウント アクセス キーを使用して、ストレージ アカウント内のすべてのデータにアクセスできます。
ロールの割り当ては、ユーザーがストレージ アカウントのテナント間オブジェクト レプリケーションを許可または禁止できるようにするために、ストレージ アカウント以上のレベルにスコープを設定する必要があります。 ロール スコープの詳細については、「Azure RBAC のスコープについて」をご覧ください。
これらのロールを割り当てる際には、ストレージ アカウントを作成したり、そのプロパティを更新したりする機能を必要とするユーザーにのみ割り当てるように、注意してください。 最小限の特権の原則を使用して、ユーザーに、それぞれのタスクを実行するのに必要な最小限のアクセス許可を割り当てるようにします。 Azure RBAC でアクセスを管理する方法の詳細については、「Azure RBAC のベスト プラクティス」を参照してください。
注
従来のサブスクリプション管理者ロールであるサービス管理者と共同管理者には、Azure Resource Manager の所有者ロールと同等のものが含まれています。 所有者ロールにはすべてのアクションが含まれているため、これらの管理者ロールのいずれかを持つユーザーも、ストレージ アカウントを作成および管理できます。 詳細については、「Azure ロール、Microsoft Entra ロール、従来のサブスクリプション管理者ロール」を参照してください。
Azure Policy を使用してコンプライアンスを監査する
多数のストレージ アカウントがある場合は、監査を実行して、テナント間オブジェクトのレプリケーションを防ぐためにそれらのアカウントが構成されていることを確認できます。 一連のストレージ アカウントのコンプライアンスを監査するには、Azure Policy を使用します。 Azure Policy は、Azure リソースにルールを適用するポリシーの作成、割り当て、管理に使用できるサービスです。 Azure Policy を使用すると、それらのリソースが会社の標準やサービス レベル アグリーメントに準拠した状態を維持するのに役立ちます。 詳細については、Azure Policy の概要に関するページを参照してください。
Audit 効果を持つポリシーを作成する
Azure Policy では、ポリシー規則がリソースに対して評価されたときに実行される動作を決定する効果がサポートされています。 監査効果は、リソースが準拠していないが要求を停止しない場合に警告を作成します。 効果の詳細については、「Azure Policy の効果について」を参照してください。
Azure portal でストレージ アカウントのテナント間オブジェクト レプリケーション設定の監査効果を持つポリシーを作成するには、次の手順に従います。
Azure portal で、Azure Policy サービスに移動します。
[作成] セクションで [定義] を選択します。
[ポリシー定義の追加] を選択して、新しいポリシー定義を作成します。
[定義の場所] フィールドで、 [More](詳細) ボタンを選択して、監査ポリシーのリソースがある場所を指定します。
ポリシーの名前を指定します。 必要に応じて説明およびカテゴリを指定することもできます。
[ポリシー規則] で、次のポリシー定義を policyRule セクションに追加します。
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "not": { "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication", "equals": "false" } } ] }, "then": { "effect": "audit" } }ポリシーを保存します。
ポリシーを割り当てる
次に、ポリシーをリソースに割り当てます。 ポリシーのスコープは、そのリソースとその下にあるすべてのリソースに対応します。 ポリシー割り当ての詳細については、「Azure Policy の割り当ての構造」を参照してください。
Azure portal でポリシーを割り当てるには、次の手順を実行します。
- Azure portal で、Azure Policy サービスに移動します。
- [作成] セクションで [割り当て] を選択します。
- 新しいポリシー割り当てを作成するために、 [ポリシーの割り当て] を選択します。
- [スコープ] フィールドで、ポリシー割り当てのスコープを選択します。
- [ポリシー定義] フィールドで、 [More](詳細) ボタンを選択して、前のセクションで定義したポリシーを一覧から選択します。
- ポリシー割り当て用の名前 を入力します。 説明は省略できます。
- [ポリシーの適用] を "有効" のままに設定しておきます。 この設定は、監査ポリシーには影響しません。
- [確認および作成] を選択して割り当てを作成します。
コンプライアンス レポートを表示する
ポリシーを割り当てたら、コンプライアンス レポートを表示できます。 監査ポリシーのコンプライアンス レポートには、テナント間オブジェクト レプリケーション ポリシーが引き続き許可されているストレージ アカウントに関する情報が表示されます。 詳細については、ポリシーのコンプライアンス データを取得することに関する記事を参照してください。
ポリシー割り当てが作成された後、コンプライアンス レポートが使用可能になるまで数分かかる場合があります。
Azure portal でコンプライアンス レポートを表示するには、次の手順を実行します。
Azure portal で、Azure Policy サービスに移動します。
[コンプライアンス] を選択します。
前の手順で作成したポリシー割り当ての名前の結果をフィルター処理します。 レポートには、ポリシーに準拠していないリソースが表示されます。
レポートにドリルダウンして、コンプライアンスに準拠していないストレージ アカウントの一覧など、追加の詳細を確認できます。
Azure Policy を使用して同じテナント レプリケーション ポリシーを適用する
Azure Policy では、Azure リソースが要件と標準に準拠していることを確認することで、クラウド ガバナンスがサポートされます。 組織内のストレージ アカウントでテナント間レプリケーションが禁止されるようにするには、テナント間オブジェクト レプリケーション ポリシーを許可する新しいストレージ アカウントの作成を禁止するポリシーを作成します。 適用ポリシーでは、拒否効果を使用して、テナント間オブジェクトレプリケーションを許可するようにストレージ アカウントを作成または変更する要求を防ぎます。 また、拒否ポリシーは、そのアカウントのクロステナント オブジェクト レプリケーション設定がポリシーに準拠していない場合に、既存のアカウントに対するすべての構成変更を防止します。 拒否効果の詳細については、「 Azure Policy の効果について」を参照してください。
テナント間オブジェクト レプリケーションの拒否効果を持つポリシーを作成するには、「 Azure Policy を使用してコンプライアンスを監査する」で説明されているのと同じ手順に従いますが、ポリシー定義の policyRule セクションに次の JSON を指定します。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"not": {
"field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
"equals": "false"
}
}
]
},
"then": {
"effect": "deny"
}
}
拒否効果を使用してポリシーを作成し、それをスコープに割り当てた後、ユーザーはテナント間オブジェクト レプリケーションを許可するストレージ アカウントを作成できません。 また、ユーザーは、現在テナント間オブジェクト レプリケーションを許可している既存のストレージ アカウントに対して構成を変更することもできません。 この操作を行おうとすると、エラーが発生します。 ポリシーに従ってアカウントの作成または構成の更新を続行するには、ストレージ アカウントの AllowCrossTenantReplication プロパティを false に設定する必要があります。
次の図は、拒否効果を持つポリシーでテナント間オブジェクト レプリケーションが禁止されている必要がある場合に、テナント間オブジェクト レプリケーションを許可するストレージ アカウント (新しいアカウントの既定値) を作成しようとした場合に発生するエラーを示しています。