本記事では、Azure Policyの機能である修復タスクを利用し、Azureリソースをポリシーに準拠した設定に変更させてみようと思います。
修復タスクとは
修復タスクはAzure Policyの機能の1つです。
Azure Policyで適用したポリシーに違反している未準拠リソースを修復し、自動でポリシーに準拠させます。
修復タスクを実行することにより、Azure内に存在するリソースをログ管理やセキュリティ管理、コスト管理などの観点から組織上のコンプライアンスに準拠させ、一括管理することが可能です。
今回のシナリオ
今回は事前にAzureのビルドインポリシーの「ストレージ アカウントの診断設定を Log Analytics ワークスペースに構成する」を適用します。
ポリシー適用後、違反している未準拠リソースを確認したため、修復タスクを実行してみます。
修復タスクを実行すると、対象のストレージアカウントの診断設定がLog Analyticsを利用する形に自動設定される想定です。
Log Analytics ワークスペースにログが収集され、Log Analytics上でストレージアカウントのログ管理が可能となっていることが、本シナリオのゴールです。
修復タスク実行時の考慮事項
修復可能なAzure リソース
修復タスクが実行可能なAzureリソースは、適用されているAzure Policyの効果によって異なります。
Azure Policyの効果の詳細は本記事では割愛します。詳しくは以下Microsoftサイトをご参照ください。
deployIfNotExsts、modifyの効果ポリシーに対して未準拠のAzureリソースは、修復タスクを実行することが可能です。
その他効果ポリシーに対して未準拠のAzure リソースは、修復タスクを実行することが不可ですので注意が必要です。
必要なAzure RBACの権限
修復タスクを実行するためには、以下2つのアカウント(ID)に対して、適切な権限が付与されていることを確認する必要があります。
- ポリシー or イニシアティブ定義*1に割り当てられたマネージドID
- 修復タスクを実行するユーザーアカウント
マネージドID
マネージドIDは修復タスクを実行する際に使用されます。
本マネージドIDはポリシーまたはイニシアティブ定義割り当て時に自動で作成することが可能です。その際に、マネージドIDがポリシーを修復するために必要な権限が自動的に付与されます。
ただし、ユーザーアクセス管理者のロールを持つユーザーアカウントで割り当て操作を行う必要があります。ユーザーアクセス管理者の権限がない場合、マネージドIDに権限付与出来ないので注意が必要です。
※所有者のロールがあれば不要です。
ユーザーアカウント
ユーザーアカウントには修復タスクの処理を実行するための権限が必要となります。
ビルドインのロールでは「リソースポリシーの共同作成者権限」が最低限必要ですので、事前に付与してください。
修復タスクの実行タイミング
修復タスクは以下2つの実行タイミングが考えられます。
- ポリシー or イニシアティブ定義適用時
- ポリシー or イニシアティブ定義適用後
ポリシー or イニシアティブ定義 適用時
ポリシーまたはイニシアティブ定義を適用時に修復タスクを実施することが可能です。
ポリシー適用時に未準拠リソースに対して一括で修復タスクを実施するため、適用後には未準拠リソースは修復済みとなります。
ですので、適用後の修復タスク実行は不要です。
ポリシー or イニシアティブ定義 適用後
ポリシーまたはイニシアティブ定義を適用後、未準拠リソースを確認して修復タスクを実行することも可能です。
この場合は未準拠リソースの対象を指定して修復タスクを実行します。
修復タスク実行手順
事前準備
今回対象ポリシー「ストレージ アカウントの診断設定を Log Analytics ワークスペースに構成する」が適用されると、診断設定で取得したログをLogAnalytics ワークスペースに収集するように構成されます。
そのため、事前にLog Analyticsワークスペースを作成し、ポリシー割り当て時に指定する必要があります。
Log Analyticsワークスペースの作成
ポリシー割り当て時の指定
修復タスクの実行
ポリシー割り当て後、修復タスクを実行していきます。
Azure Policyの画面から修復タスクを選択する
修復画面の[修復するポリシー]タブから対象のポリシーを選択します。
※deployIfNotExists または modify 効果を含む割り当てられたポリシーの一覧が表示されます。
修復時の動作や修復対象のリソース数などを考慮しパラメータを指定します。
各パラメータの概要は以下です。
失敗のしきい値 | 修復タスクを停止するしきい値 ※失敗した修復操作の%がしきい値を超えた場合修復は停止する |
リソースの数 | 修復する非準拠リソース数 |
並行デプロイ | 特定の時点での同時修復デプロイ数 |
スコープとリソースの場所を指定すると自動で対象リソースが指定されます。
※スコープは管理グループ、サブスクリプション、リソースグループ、リソース単位と詳細に絞ることが可能です。
パラメータと修復リソースが問題ないことを確認し、[修復]を選択します。
通知欄から修復タスクが正常に作成されたことを確認します。
実行結果の確認
修復画面の[修復タスク]タブから実行した修復タスクの状態が確認出来ます。
問題なく修復された場合、修復状態は完了と表示されます。
※修復状態が変更されるまではポリシーによって異なると思いますが、本ポリシーは2~3分ほどで状態が完了と表示されました。
※失敗した場合、選択すると詳細なエラー情報が確認できますので、トラブルシューティングを実施してください。
修復したリソースを確認します。
今回は対象ストレージアカウントに対して、診断設定が設定されていることが確認出来ました。
※診断設定の保存先として、ポリシー割り当て時に指定したLogAnalytics ワークスペースが設定されています。
終わりに
本シナリオから修復タスクを利用することで、Azureリソースをポリシーに準拠した設定に更新可能なことがイメージ出来たと思います。
また、自動で準拠済みに更新可能なため、ポリシー管理者がユーザーにアナウンスして未準拠リソースの設定変更を促す等の運用簡略化にも繋がるのではないでしょうか。
Azure Policyを適用した場合は、修復タスクの機能を是非利用してみてください。
※本記事作成時点(2023年6月)での情報であり、内容は変動する可能性がございます。
*1:複数のポリシー定義をまとめた定義。