Azure Policy を使用した Azure SignalR Service リソースのコンプライアンスの監査

Azure Policy は、ポリシーの作成、割り当て、管理に使用する Azure のサービスです。 これらのポリシーは、リソースにさまざまなルールと効果を適用して、それらのリソースが会社の標準とサービス レベル アグリーメントに準拠した状態に保たれるようにします。

この記事では、Azure SignalR Service の組み込みポリシー (プレビュー) について説明します。 これらのポリシーを使用し、コンプライアンスについて新規および既存の SignalR リソースを監査します。

Azure Policy を使用するのに料金は一切かかりません。

組み込みのポリシー定義

次の組み込みポリシー定義は Azure SignalR Service に固有のものです。

名前
(Azure portal)
説明 効果 Version
(GitHub)
Azure SignalR Service では公衆ネットワーク アクセスを無効にする必要がある Azure SignalR Service リソースのセキュリティを強化するには、これがパブリック インターネットに公開されておらず、プライベート エンドポイントからのみアクセスできるようにします。 https://aka.ms/asrs/networkacls の説明に従って、公衆ネットワーク アクセス プロパティを無効にします。 このオプションにより、Azure IP 範囲外のパブリック アドレス空間からのアクセスが無効になり、IP または仮想ネットワークベースのファイアウォール規則に一致するすべてのログインが拒否されます。 これにより、データ漏洩のリスクが軽減されます。 Audit、Deny、Disabled 1.0.0
Azure SignalR Service では、ローカル認証方法を無効にする必要がある ローカル認証方法を無効にすると、Azure SignalR Service の認証で Azure Active Directory ID のみを要求することにより、セキュリティが向上します。 Audit、Deny、Disabled 1.0.0
Azure SignalR Service では Private Link 対応の SKU を使用する必要がある Azure Private Link を使用すると、ソースやターゲットでパブリック IP アドレスを指定せずに、仮想ネットワークを Azure サービスに接続できます。これにより、データがパブリックに漏洩するリスクからリソースを保護できます。 このポリシーにより、Azure SignalR Service の利用が Private Link 対応の SKU に限定されます。 プライベート リンクの詳細については、https://aka.ms/asrs/privatelink を参照してください。 Audit、Deny、Disabled 1.0.0
Azure SignalR Service ではプライベート リンクを使用する必要がある Azure Private Link を使用すると、接続元または接続先にパブリック IP アドレスを使用せずに、仮想ネットワークを Azure サービスに接続できます。 プライベート リンク プラットフォームでは、Azure のバックボーン ネットワークを介してコンシューマーとサービスの間の接続が処理されます。 サービス全体ではなく、Azure SignalR Service リソースにプライベート エンドポイントをマッピングすることで、データ漏えいのリスクが減ります。 プライベート リンクの詳細については、https://aka.ms/asrs/privatelink を参照してください。 Audit、Deny、Disabled 1.0.1
ローカル認証を無効にするように Azure SignalR Service を構成する ローカル認証方法を無効にして、Azure SignalR Service の認証で Azure Active Directory の ID のみを要求するようにします。 Modify、Disabled 1.0.0
Azure SignalR Service に対してプライベート エンドポイントを構成する プライベート エンドポイントを使用すると、接続元または接続先にパブリック IP アドレスを使用せずに、仮想ネットワークが Azure サービスに接続されます。 Azure SignalR Service リソースにプライベート エンドポイントをマッピングすると、データ漏洩のリスクを軽減できます。 詳細については、https://aka.ms/asrs/privatelink をご覧ください。 DeployIfNotExists、Disabled 1.0.0
デプロイ - Azure SignalR Service に接続するプライベート エンドポイントに対してプライベート DNS ゾーンを構成する プライベート DNS ゾーンを使用して、プライベート エンドポイントの DNS 解決をオーバーライドします。 プライベート DNS ゾーンは、Azure SignalR Service リソースを解決するために、仮想ネットワークにリンクします。 詳細については、https://aka.ms/asrs/privatelink を参照してください。 DeployIfNotExists、Disabled 1.0.0
公衆ネットワーク アクセスを無効にするように Azure SignalR Service リソースを変更する Azure SignalR Service リソースのセキュリティを強化するには、これがパブリック インターネットに公開されておらず、プライベート エンドポイントからのみアクセスできるようにします。 https://aka.ms/asrs/networkacls の説明に従って、公衆ネットワーク アクセス プロパティを無効にします。 このオプションにより、Azure IP 範囲外のパブリック アドレス空間からのアクセスが無効になり、IP または仮想ネットワークベースのファイアウォール規則に一致するすべてのログインが拒否されます。 これにより、データ漏洩のリスクが軽減されます。 Modify、Disabled 1.0.0

ポリシー定義を割り当てる

  • Azure portalAzure CLIResource Manager テンプレート、または Azure Policy SDK を使用してポリシー定義を割り当てます。
  • ポリシーの割り当て範囲をリソース グループ、サブスクリプション、または Azure 管理グループに設定します。 SignalR のポリシー割り当ては、スコープ内の既存および新規の SignalR リソースに適用されます。
  • ポリシー適用の有効と無効はいつでも切り替えられます。

注意

ポリシーを割り当てるか、更新した後、定義されている範囲内のリソースに割り当てが適用されるまで少し時間がかかります。 詳細は、ポリシー評価トリガーを参照してください。

ポリシーのコンプライアンスを確認する

Azure portal、Azure コマンドライン ツール、または Azure Policy SDK を使用し、ポリシー割り当てによって生成されたコンプライアンス情報にアクセスします。 詳細については、「Azure リソースのコンプライアンス データを取得する」を参照してください。

リソースのコンプライアンス違反には多くの理由が考えられます。 理由や原因となった変更を特定する方法については、「コンプライアンス違反の原因の特定」をご覧ください。

ポータルのポリシー コンプライアンス:

  1. [すべてのサービス] を選択し、ポリシー を検索します。

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

  3. フィルターを使用し、コンプライアンスの状態を限定するか、ポリシーを検索します。

    ポータルでのポリシーのコンプライアンス

  4. ポリシーを選択し、集約コンプライアンスの詳細とイベントを確認します。 必要であれば、リソース コンプライアンスに対して特定の SignalR を選択します。

Azure CLI のポリシー コンプライアンス

Azure CLI を利用してコンプライアンス データを取得することもできます。 たとえば、CLI で az policy assignment list コマンドを使用し、適用されている Azure SignalR Service ポリシーのポリシー ID を取得します。

az policy assignment list --query "[?contains(displayName,'SignalR')].{name:displayName, ID:id}" --output table

サンプル出力:

Name                                                                                   ID
-------------------------------------------------------------------------------------  --------------------------------------------------------------------------------------------------------------------------------
[Preview]: Azure SignalR Service should use private links  /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/policyAssignments/<assignmentId>

次に、特定のリソース グループの下にあるリソースすべてのコンプライアンスの状態を JSON 形式で返すために、az policy state list を実行します。

az policy state list --g <resourceGroup>

または、特定の SignalR リソースのコンプライアンスの状態を JSON 形式で返すために、az policy state list を実行します。

az policy state list \
 --resource /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.SignalRService/SignalR/<resourceName> \
 --namespace Microsoft.SignalRService \
 --resource-group <resourceGroup>

次のステップ