Azure Active Microsoft Entra テナント間でのオブジェクト レプリケーションを禁止する

オブジェクト レプリケーションを使用すると、ブロック BLOB が 1 つのストレージ アカウントのコンテナーから別のストレージ アカウントのコンテナーに非同期でコピーされます。 オブジェクト レプリケーション ポリシーを構成するときは、ソース アカウントとコンテナー、ならびにコピー先のアカウントとコンテナーを指定します。 ポリシーを構成すると、Azure Storage によってソース オブジェクトに対する作成、更新、および削除操作の結果が、コピー先のオブジェクトに自動的にコピーされます。 Azure Storage でのオブジェクト レプリケーションの詳細については、「ブロック BLOB のオブジェクト レプリケーション」を参照してください。

Microsoft Entra テナント間でテナント間レプリケーションが許可されている場合、許可されているユーザーは、ソース アカウントが 1 つの Microsoft Entra テナント内にあり、コピー先のアカウントが異なるテナント内にあるオブジェクト レプリケーション ポリシーを構成できます。 セキュリティ ポリシーにより、オブジェクト レプリケーションを同じテナント内に存在するストレージ アカウントのみに制限する必要がある場合は、ソースおよびコピー先のアカウントが異なるテナントに存在するポリシーの作成を禁止することができます。 既定では、明示的に許可しない限り、2023 年 12 月 15 日以降に作成されたすべての新しいストレージ アカウントのテナント間オブジェクト レプリケーションは無効になります。

この記事では、ストレージ アカウントのテナント間オブジェクト レプリケーションを修復する方法について説明します。 また、新規および既存のストレージ アカウントに対してテナント間オブジェクト レプリケーションを禁止するポリシーを作成する方法も説明します。

テナント間ポリシーを含む、オブジェクト レプリケーション ポリシーを構成する方法の詳細については、「ブロック BLOB のオブジェクト レプリケーションを構成する」を参照してください。

テナント間オブジェクト レプリケーションを修復する

Microsoft Entra テナント間でのオブジェクト レプリケーションを禁止するには、ストレージ アカウントの AllowCrossTenantReplication プロパティを false に設定します。 現在、テナント間オブジェクト レプリケーション ポリシーに含まれていないストレージ アカウントがある場合は、AllowCrossTenantReplication プロパティを false に設定すると、今後、テナント間オブジェクト レプリケーション ポリシーでこのストレージ アカウントをソースまたはコピー先として使用するよう構成することができなくなります。 ただし、ストレージ アカウントが現在 1 つ以上のテナント間オブジェクト レプリケーション ポリシーに含まれている場合、既存のテナント間ポリシーを削除するまで AllowCrossTenantReplication プロパティを false に設定することはできません。

2023 年 12 月 15 日以降に作成されたストレージ アカウントでは、テナント間ポリシーは既定では許可されません。 ただし、2023 年 12 月 15 日より前に作成された既存のストレージ アカウントでは AllowCrossTenantReplication プロパティは既定で設定されておらず、明示的に設定するまで値は返されません。 2023 年 12 月 15 日より前に作成されたストレージ アカウントは、プロパティ値が null または true の場合、テナント間オブジェクト レプリケーション ポリシーに含めることができます。 これ以降に作成されたアカウントの場合、プロパティを true に設定する必要があります。 AllowCrossTenantReplication プロパティを設定しても、ストレージ アカウントのダウンタイムは発生しません。

新しいアカウントのテナント間レプリケーションを修復する

新しいストレージ アカウントのテナント間レプリケーションを禁止するには、Azure portal、PowerShell、または Azure CLI を使用します。 2023 年 12 月 15 日以降に作成された新しいアカウントについては、明示的に設定されていない場合でも、このプロパティの既定値は false になります。

ストレージ アカウントでテナント間オブジェクト レプリケーションを禁止するには、次の手順に従います。

  1. Azure portal で、 [ストレージ アカウント] ページに移動し、 [作成] を選択します。

  2. [基本] タブに新しいストレージ アカウントの情報を記入します。

  3. [詳細設定] タブの [BLOB ストレージ] セクションで、 [Allow cross-tenant replication](テナント間レプリケーションを許可する) 設定を見つけて、チェックボックスをオフにします。

    Screenshot showing how to disallow cross-tenant object replication for a new storage account

  4. アカウントを作成するプロセスを完了します。

既存のアカウントのテナント間レプリケーションを修復する

既存のストレージ アカウントのテナント間レプリケーションを禁止するには、Azure portal、PowerShell、または Azure CLI を使用します。

現在テナント間ポリシーに含まれていない既存のストレージ アカウントに対してテナント間オブジェクト レプリケーションを禁止するには、次の手順に従います。

  1. Azure Portal のストレージ アカウントに移動します。

  2. [データ管理] で、 [オブジェクト レプリケーション] を選択します。

  3. [詳細設定] を選択します。

  4. [Allow cross-tenant replication](テナント間レプリケーションを許可する) のチェックをオフにします。 このボックスは既定ではオンになっています。これは、明示的に禁止しない限り、ストレージ アカウントのテナント間オブジェクト レプリケーションは許可されているためです。

    Screenshot showing how to disallow cross-tenant object replication for an existing storage account

  5. [OK] を選択して変更を保存します。

ストレージ アカウントが現在、1 つ以上のテナント間レプリケーション ポリシーに含まれている場合、それらのポリシーを削除するまで、テナント間オブジェクト レプリケーションを禁止することはできません。 このシナリオでは、次の図に示すように、Azure portal ではこの設定を使用することはできません。

Screenshot

テナント間レプリケーションを禁止にした後に、ストレージ アカウントをソースまたはコピー先に設定したテナント間ポリシーを構成しようとすると失敗します。 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/* アクションが含まれます。 このアクションの組み込みロールには、次のようなロールがあります。

これらのロールは、Microsoft Entra ID を介したストレージ アカウント内のデータへのアクセスを提供しません。 ただし、アカウント アクセス キーへのアクセスを許可する Microsoft.Storage/storageAccounts/listkeys/action が含まれています。 このアクセス許可では、ユーザーがアカウント アクセス キーを使用して、ストレージ アカウント内のすべてのデータにアクセスできます。

ユーザーがストレージ アカウントに対するテナント間オブジェクト レプリケーションを許可または禁止できるようにするには、ロール割り当てのスコープをストレージ アカウント以上のレベルにする必要があります。 ロール スコープの詳細については、「Azure RBAC のスコープについて」を参照してください。

これらのロールを割り当てる際には、ストレージ アカウントを作成したり、そのプロパティを更新したりする機能を必要とするユーザーにのみ割り当てるように、注意してください。 最小限の特権の原則を使用して、ユーザーに、それぞれのタスクを実行するのに必要な最小限のアクセス許可を割り当てるようにします。 Azure RBAC でアクセスを管理する方法の詳細については、「Azure RBAC のベスト プラクティス」を参照してください。

Note

従来のサブスクリプション管理者ロールであるサービス管理者と共同管理者には、Azure Resource Manager の所有者ロールと同等のものが含まれています。 所有者ロールにはすべてのアクションが含まれているため、これらの管理者ロールのいずれかを持つユーザーも、ストレージ アカウントを作成および管理できます。 詳細については、「Azure ロール、Microsoft Entra ロール、従来のサブスクリプション管理者ロール」を参照してください。

Azure Policy を使用してコンプライアンスを監査する

多数のストレージ アカウントがある場合、監査を実行して、それらのアカウントがテナント間オブジェクト レプリケーションを防止するように構成されていることを確認したい場合があります。 一連のストレージ アカウントのコンプライアンスを監査するには、Azure Policy を使用します。 Azure Policy は、Azure リソースにルールを適用するポリシーの作成、割り当て、管理に使用できるサービスです。 Azure Policy を使用すると、それらのリソースが会社の標準やサービス レベル アグリーメントに準拠した状態を維持するのに役立ちます。 詳細については、Azure Policy の概要に関するページを参照してください。

Audit 効果を持つポリシーを作成する

Azure Policy では、ポリシー規則がリソースに対して評価されたときに実行される動作を決定する効果がサポートされています。 Audit 効果を使用すると、リソースが準拠していない場合に警告が生成されますが、要求は停止されません。 効果の詳細については、「Azure Policy の効果について」を参照してください。

Azure portal でストレージ アカウントのテナント間オブジェクト レプリケーション設定のために Audit 効果を持つポリシーを作成するには、次の手順を実行します。

  1. Azure portal で、Azure Policy サービスに移動します。

  2. [作成] セクションで [定義] を選択します。

  3. [ポリシー定義の追加] を選択して、新しいポリシー定義を作成します。

  4. [定義の場所] フィールドで、 [More](詳細) ボタンを選択して、監査ポリシーのリソースがある場所を指定します。

  5. ポリシーの名前を指定します。 必要に応じて説明およびカテゴリを指定することもできます。

  6. [ポリシー規則] で、次のポリシー定義を policyRule セクションに追加します。

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. ポリシーを保存します。

ポリシーを割り当てる

次に、ポリシーをリソースに割り当てます。 ポリシーのスコープは、そのリソースとその下にあるすべてのリソースに対応します。 ポリシー割り当ての詳細については、「Azure Policy の割り当ての構造」を参照してください。

Azure portal でポリシーを割り当てるには、次の手順を実行します。

  1. Azure portal で、Azure Policy サービスに移動します。
  2. [作成] セクションで [割り当て] を選択します。
  3. 新しいポリシー割り当てを作成するために、 [ポリシーの割り当て] を選択します。
  4. [スコープ] フィールドで、ポリシー割り当てのスコープを選択します。
  5. [ポリシー定義] フィールドで、 [More](詳細) ボタンを選択して、前のセクションで定義したポリシーを一覧から選択します。
  6. ポリシー割り当て用の名前 を入力します。 説明は省略できます。
  7. [ポリシーの適用] を "有効" のままに設定しておきます。 この設定は、監査ポリシーには影響しません。
  8. [確認および作成] を選択して割り当てを作成します。

コンプライアンス レポートを表示する

ポリシーを割り当てたら、コンプライアンス レポートを表示できます。 監査ポリシーのコンプライアンス レポートには、テナント間オブジェクト レプリケーション ポリシーがまだ許可されているストレージ アカウントに関する情報が表示されます。 詳細については、ポリシーのコンプライアンス データを取得することに関する記事を参照してください。

ポリシー割り当てが作成された後、コンプライアンス レポートが使用可能になるまで数分かかる場合があります。

Azure portal でコンプライアンス レポートを表示するには、次の手順を実行します。

  1. Azure portal で、Azure Policy サービスに移動します。

  2. [コンプライアンス] を選択します。

  3. 前の手順で作成したポリシー割り当ての名前の結果をフィルター処理します。 このレポートには、ポリシーに準拠していないリソースが表示されます。

  4. レポートをドリルダウンして、準拠していないストレージ アカウントの一覧などの詳細を表示できます。

    Screenshot showing compliance report for audit policy for blob cross-tenant object replication

Azure Policy を使用して同じテナント内のレプリケーション ポリシーを適用する

Azure Policy では、Azure リソースが要件と標準に準拠していることを確認することで、クラウド ガバナンスがサポートされます。 組織内のストレージ アカウントでテナント間レプリケーションが禁止されるようにするために、テナント間オブジェクト レプリケーション ポリシーを許可する新しいストレージ アカウントを作成できないようにするポリシーを作成します。 強制ポリシーでは、テナント間オブジェクト レプリケーションを許可するためにストレージ アカウントを作成または変更する要求を防ぐための Deny 効果が使用されます。 この Deny ポリシーでは、既存のアカウントに対するテナント間オブジェクト レプリケーションの設定がポリシーに準拠していない場合に、そのアカウントに対するすべての構成変更が禁止されます。 Deny 効果の詳細については、「Azure Policy の効果について」を参照してください。

テナント間オブジェクト レプリケーションに対して Deny 効果を持つポリシーを作成するには、「Azure Policy を使用してコンプライアンスを監査する」で説明されている手順に従います。この際、ポリシー定義の policyRule セクションでは次の JSON を指定します。

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

Deny 効果を持つポリシーを作成し、これをスコープに割り当てると、ユーザーはテナント間オブジェクト レプリケーションを許可するストレージ アカウントを作成できなくなります。 また、ユーザーは、現在テナント間オブジェクト レプリケーションを許可している既存のストレージ アカウントに対して構成変更を行うこともできません。 この操作を行おうとすると、エラーが発生します。 ポリシーに準拠してアカウントの作成や構成の更新を行うには、ストレージ アカウントの AllowCrossTenantReplication プロパティを false に設定する必要があります。

次の図は、Deny 効果を持つポリシーでテナント間オブジェクト レプリケーションが禁止されている場合に、テナント間オブジェクト レプリケーションを許可するストレージ アカウント (新しいアカウントの既定) を作成しようとした場合に発生するエラーを示しています。

Screenshot showing the error that occurs when creating a storage account in violation of policy

関連項目