Azure Policyを使って共通キーでアクセス可能なストレージアカウントの作成を拒否する
はじめに
Azure環境において、ストレージアカウントに共有キーでアクセスすることは推奨されず、Entra IDによる認証が推奨されています。
このブログではAzure Policyを使って、環境内で共有キーでアクセス可能なストレージアカウントの作成を制限してみます。
Azure Policy とは
Azure Policyは、Azureリソースの統制・管理を行うサービスです。
Policyを管理グループ、サブスクリプション、リソースグループに適用することができ、その効果は下位の管理グループ、サブスクリプション、リソースグループに継承されます。
Azure Policyの効果 (effect) は下記の通りです。
- addToNetworkGroup
- append
- audit
- auditIfNotExists
- deny
- denyAction
- deployIfNotExists
- disabled
- manual
- modify
- mutate
Azure Policyはカスタムで作成することもできますが、すでに用意された組み込みポリシーを使うこともできます。
この記事では、組み込みのAzure Policyであるストレージ アカウントでは、共有キーのアクセスを禁止する必要があるを使ってみます。
ストレージ アカウントでは、共有キーのアクセスを禁止する必要がある
ストレージ アカウントでは、共有キーのアクセスを禁止する必要があるの効果 (effect) は Audit、Deny、Disabledが選択可能で、要約するとそれぞれ以下の仕様になっています。
- Audit
- 共有キーでアクセス可能なストレージアカウントをコンプライアンス非対応として検出
 
- Deny
- 共有キーでアクセス可能なストレージアカウントの新規作成を拒否
- 共有キーでアクセス可能な既存のストレージアカウントをコンプライアンス非対応として検出
 
- Disabled
- ポリシーの割り当てを無効にする
 
やってみる
この検証では以下の管理グループ、サブスクリプションを使用します。
sandbox-02には共有キーでアクセス可能なストレージアカウントがすでに存在します。
- Tenant Root Group
- wada-management-group ←ここにDenyポリシーをアタッチ
- sandbox-01
- sandbox-02
 
 
- wada-management-group ←ここにDenyポリシーをアタッチ
Azure Policy の割り当て
次にAzure Policyの割り当てを行います。
主要なパラメータは以下の通り設定します。
| 項目 | 設定値 | 備考 | 
|---|---|---|
| スコープ | wada-management-group | 割り当てる管理グループ,サブスクリプション,リソースグループを指定可能 | 
| 除外 | - | 割り当てから除外するリソースを定義できる | 
| ポリシー定義 | ストレージ アカウントでは、共有キーのアクセスを禁止する必要がある | 割り当てるAzure Policyを選択 | 
| 割り当て名 | ストレージ アカウントでは、共有キーのアクセスを禁止する必要がある | |
| ポリシーの適用 | 有効 | |
| マネージド ID を作成します | 無効 | 修復アクションを実行するロールを作成する場合に有効にする。 | 
| マネージド ID の種類 | - | |
| システム割り当て ID の場所 | - | |
| コンプライアンス非対応のメッセージ | 社内ポリシーで禁止されています。 | Azure ポリシーによってアクションが拒否された時のメッセージを指定 | 
Azure ポータルからポリシーのページを開きます。

サイドタブから「割り当て」をクリックします。

「ポリシーの割り当て」をクリックします。

スコープの「・・・」をクリックし、割り当て先を選択します。

今回は「wada-management-group」の管理グループを選択し、「Select」をクリックします。

ポリシー定義の「・・・」をクリックし、割り当てたいポリシーを選択します。

「Storage accounts should prevent shared key access」を検索・選択し「追加」をクリックします。

設定を確認し「次へ」をクリックします。

パラメータにDenyを設定し「次へ」をクリックします。

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

コンプライアンス非対応のメッセージに任意の文字列を入力して「次へ」をクリックします。
※ここでは、ポリシーによってアクションが拒否された時に表示されるメッセージを定義できます

設定値を確認して「作成」をクリックします。

これでAzure Policyの割り当ては完了です。
ポップアップの通り、検証は15分ほど時間をおいてから行うことを推奨します。

動作検証(既存リソースの確認)
Azure Policyの割り当ての画面から、先ほど実施した割り当てをクリックします。

sandbox-02にあらかじめ作成しておいたストレージアカウントが、コンプライアンス非対応として検出されていました。

動作検証(新規リソースの作成)
続いて、共有キーでアクセス可能なストレージアカウントの新規作成を試みます。
Azure ポータルからストレージアカウントのページを開きます。

ストレージ アカウント名を入力し、その他はデフォルトのまま「次へ」をクリックします。

先ほど設定したコンプライアンス非対応のメッセージが表示されました。

レビューと作成では検証が失敗し、リソースの作成が拒否されました。

終わりに
この記事では、組み込みのAzure Policyであるストレージ アカウントでは、共有キーのアクセスを禁止する必要があるを試してみました。
どなたかのお役に立てれば幸いです。











