Azure Policy イニシアチブ定義 を使って環境内でパブリックアクセス可能なリソースを検出する

Azure Policy イニシアチブ定義 を使って環境内でパブリックアクセス可能なリソースを検出する

2025.08.15

はじめに

Azureにおいて各リソースのパブリックアクセスは基本的に推奨されません。
この記事ではAzure Policyをグループ化したイニシアチブ定義を使って、環境内に存在するパブリックアクセス可能なリソースを「コンプライアンス非対応」として検出してみます。

Azure Policy とは

Azure Policyは、Azureリソースの統制・管理を行うサービスです。
Policyを管理グループ、サブスクリプション、リソースグループに適用することができ、その効果は下位の管理グループ、サブスクリプション、リソースグループに継承されます。

Azure Policyの効果 (effect) は下記の通りです。

Azure Policyはカスタムで作成することもできますが、すでに用意された組み込みポリシーを使うこともできます。

イニシアチブ定義とは

Azureでは、複数のAzure Policyをグループ化し、1つのイニシアチブ定義として作成・管理できます。
https://learn.microsoft.com/ja-jp/azure/governance/policy/concepts/initiative-definition-structure

イニシアチブ定義もAzure Policyと同様に、カスタムで作成することもできますがすでに用意された組み込みのイニシアチブ定義を使うこともできます。
組み込みのイニシアチブ定義を使うことで、個別にAzure Policyを作成する場合に比べて実装・管理の工数の削減が見込めます。

Audit Public Network Access

この記事ではAudit Public Network Accessという組み込みのイニシアチブを使って、環境内でパブリックアクセス可能なリソースを検出します。

このイニシアチブでは以下のリソースに対してAudit,Denyの設定が可能です。

  • Microsoft.Automation/automationAccounts
  • Microsoft.Batch/batchAccounts
  • Microsoft.BotService/botServices
  • Microsoft.Cache/Redis
  • Microsoft.CognitiveServices/accounts
  • Microsoft.Compute/disks
  • Microsoft.ContainerRegistry/registries
  • Microsoft.DataFactory/factories
  • Microsoft.DBforMariaDB/servers
  • Microsoft.DBforMySQL/flexibleServers
  • Microsoft.DBforMySQL/servers
  • Microsoft.DBforPostgreSQL/flexibleServers
  • Microsoft.DBforPostgreSQL/servers
  • Microsoft.Databricks/workspaces
  • Microsoft.Devices/IotHubs
  • Microsoft.Devices/provisioningServices
  • Microsoft.KeyVault/vaults
  • Microsoft.DocumentDB/databaseAccounts
  • Microsoft.EventGrid/domains
  • Microsoft.EventGrid/topics
  • Microsoft.HybridCompute/privateLinkScopes
  • Microsoft.Insights/components
  • Microsoft.Insights/privateLinkScopes
  • Microsoft.MachineLearningServices/workspaces
  • Microsoft.Media/mediaservices
  • Microsoft.OperationalInsights/workspaces
  • Microsoft.Search/searchServices
  • Microsoft.ServiceBus/namespaces
  • Microsoft.SignalRService/SignalR
  • Microsoft.SignalRService/webPubSub
  • Microsoft.SQL/servers
  • Microsoft.Storage/storageAccounts
  • Microsoft.Synapse/workspaces
  • Microsoft.AppConfiguration/configurationStores
  • Microsoft.Web/hostingEnvironments
  • Microsoft.Attestation/attestationProviders

やってみる

この検証では以下の管理グループ、サブスクリプションを使用します。

  • Tenant Root Group
    • wada-management-group ←ここにイニシアチブを割り当て
      • sandbox-01
      • sandbox-02

イニシアチブ定義の割り当て

管理グループに対してイニシアチブ定義を割り当てを行います。
主要なパラメータは以下の通り設定します。

項目 設定値 備考
スコープ wada-management-group 割り当てる管理グループ,サブスクリプション,リソースグループを指定可能
除外 - 割り当てから除外するリソースを定義できる
ポリシー定義 パブリック ネットワーク アクセスの監査
割り当て名 パブリック ネットワーク アクセスの監査
ポリシーの適用 有効
マネージド ID を作成します - 修復アクションを実行するロールを作成する
マネージド ID の種類 -
システム割り当て ID の場所 -
コンプライアンス非対応のメッセージ - Azure ポリシーによってアクションが拒否された時のメッセージを指定

Azure ポータルからポリシーのページを開きます。
スクリーンショット 2025-08-14 11.42.04.png

サイドタブから「割り当て」をクリックします。
スクリーンショット 2025-08-14 11.56.22.png

「イニシアティブの割り当て」をクリックします。
スクリーンショット 2025-08-15 17.49.06.png

スコープの「・・・」をクリックし、割り当て先を選択します。
スクリーンショット 2025-08-15 17.51.07.png

今回は「wada-management-group」の管理グループを選択し、「Select」をクリックします。
スクリーンショット 2025-08-15 17.51.39.png

イニシアティブ定義の「・・・」をクリックし、割り当てたいポリシーを選択します。
スクリーンショット 2025-08-15 17.52.32.png

「Audit Public Network Access」を検索・選択し「追加」をクリックします。
スクリーンショット 2025-08-15 17.53.40.png

設定を確認し「次へ」をクリックします。
スクリーンショット 2025-08-15 17.56.14.png

パラメータはAudit,Deny,Disabledが選べますが、今回はデフォルトのAuditのままで「次へ」をクリックします。
スクリーンショット 2025-08-15 17.57.21.png

リソースに対して修正アクションは実行しないので、何も選択しないで「次へ」をクリックします。
スクリーンショット 2025-08-15 18.00.50.png

コンプライアンス非対応は何も設定せず「次へ」をクリックします。
※ここでは、ポリシーによってアクションが拒否(Deny)された時に表示されるメッセージを定義できます
スクリーンショット 2025-08-15 18.01.34.png

設定値を確認して「作成」をクリックします。
スクリーンショット 2025-08-15 18.02.18.png

これでイニシアチブの割り当ては完了です。
ポップの通り、検証は15分ほど時間をおいてから行うことを推奨します。
スクリーンショット 2025-08-15 18.03.46.png

リソースの確認

Azure Policyの割り当ての画面から、先ほど実施した割り当てをクリックします。
スクリーンショット 2025-08-15 18.12.46.png

管理グループの配下にパブリックアクセス可能なリソースが5つ存在することがわかりました。
必要に応じて確認・修正を行いましょう。
スクリーンショット 2025-08-15 18.10.55.png

最後に

この記事ではAudit Public Network Accessという組み込みのイニシアチブを使って、環境内でパブリックアクセス可能なリソースを検出してみました。

どなたかの参考になればと思います。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.