特権 Azure ロールの割り当てに関するアラートを出す
共同作成者、所有者、ユーザー アクセス管理者などの特権 Azure ロールは、強力なロールであるためにシステムにリスクをもたらす可能性があります。 このようなロールが割り当てられたときに、電子メールやテキスト メッセージで通知を受け取ることができます。 この記事では、Azure Monitor を使用してアラート ルールを作成することで、サブスクリプション スコープで特権ロールの割り当てが通知されるようにする方法について説明します。
前提条件
アラート ルールを作成するには以下が必要です。
- Azure サブスクリプションへのアクセス
- サブスクリプション内でリソース グループとリソースを作成するための権限
- AzureActivity テーブルにアクセスできるように設定された Log Analytics
Azure Monitor を使用する前にコストを見積もる
Azure Monitor とアラート ルールの使用にはコストがかかります。 このコストは、クエリの実行頻度と選択された通知によって変わります。 詳細については、「Azure Monitor の価格」を参照してください。
アラート ルールを作成する
特権ロールの割り当ての通知を受け取るには、Azure Monitor でアラート ルールを作成します。
Azure portal にサインインします。
[Monitor](モニター) に移動します。
左側のナビゲーションで、[アラート] をクリックします。
[作成] > [アラート ルール] をクリックします。 [アラート ルールの作成] ページが開きます。
[スコープ] タブでサブスクリプションを選択します。
[条件] タブで、[カスタム ログ検索] シグナル名を選択します。
[ログ クエリ] ボックスで、サブスクリプションのログで実行されてアラートをトリガーする次の Kusto クエリを追加します。
このクエリでは、選択したサブスクリプションのスコープで共同作成者、所有者、ユーザー アクセス管理者 のいずれかのロールを割り当てる操作がフィルター選択されます。
AzureActivity | where CategoryValue =~ "Administrative" and OperationNameValue =~ "Microsoft.Authorization/roleAssignments/write" and (ActivityStatusValue =~ "Start" or ActivityStatus =~ "Started") | extend Properties_d = todynamic(Properties) | extend RoleDefinition = extractjson("$.Properties.RoleDefinitionId",tostring(Properties_d.requestbody),typeof(string)) | extend PrincipalId = extractjson("$.Properties.PrincipalId",tostring(Properties_d.requestbody),typeof(string)) | extend PrincipalType = extractjson("$.Properties.PrincipalType",tostring(Properties_d.requestbody),typeof(string)) | extend Scope = extractjson("$.Properties.Scope",tostring(Properties_d.requestbody),typeof(string)) | where Scope !contains "resourcegroups" | extend RoleId = split(RoleDefinition,'/')[-1] | extend RoleDisplayName = case( RoleId =~ 'b24988ac-6180-42a0-ab88-20f7382dd24c', "Contributor", RoleId =~ '8e3af657-a8ff-443c-a75c-2fe8c4bcb635', "Owner", RoleId =~ '18d7d88d-d35e-4fb5-a5c3-7773c20a72d9', "User Access Administrator", "Irrelevant") | where RoleDisplayName != "Irrelevant" | project TimeGenerated,Scope, PrincipalId,PrincipalType,RoleDisplayName
[測定] セクションで次の値を設定します。
- 測定: テーブルの行
- 集計の種類: カウント
- 集計の細分性: 5 分
[集計の細分性] では、既定値を必要な頻度に変更できます。
[ディメンションで分割] セクションで、[リソース ID] 列を [分割しない] に設定します。
[アラート ロジック] セクションで次の値を設定します。
- 演算子: より大きい
- しきい値: 0
- 評価の頻度: 5 分
[評価の頻度] では、既定値を必要な頻度に変更できます。
[アクション] タブで、アクション グループを作成するか、既存のアクション グループを選択します。
アクション グループは、アラートがトリガーされたときに実行されるアクションと通知を定義します。
アクション グループを作成するときは、アクション グループを配置するリソース グループを指定する必要があります。 次に、アラート ルールがトリガーされたときに呼び出す通知 (電子メール/SMS メッセージ/プッシュ/音声アクション) を選択します。 [アクション] タブと [タグ] タブはスキップできます。 詳細については、「Azure Portal でのアクション グループの作成および管理」を参照してください。
[詳細] タブで、アラート ルールを保存するリソース グループを選択します。
[アラート ルールの詳細] セクションで、[重大度] を選択し、[アラート ルール名] を指定します。
[リージョン] では、Azure アクティビティ ログがグローバルであるため、任意のリージョンを選択できます。
[タグ] タブはスキップします。
[確認と作成] タブで、[作成] をクリックしてアラート ルールを作成します。
アラート ルールをテストする
アラート ルールを作成したら、アラート ルールが実行されることをテストできます。
サブスクリプションのスコープで、共同作成者、所有者、ユーザー アクセス管理者のいずれかのロールを割り当てます。 詳細については、Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。
ログ クエリの集計の細分性と評価頻度によっては、アラートを受け取るまで数分かかります。
[アラート] ページで、アクション グループで指定したアラートを監視します。
次の図は電子メール アラートの例を示しています。
アラート ルールを削除する
ロールの割り当てのアラート ルールを削除して追加コストが発生しないようにするには、次の手順に従います。
[Monitor](モニター) で、[アラート] に移動します。
バーの [アラート ルール] をクリックします。
削除するアラート ルールの横にチェックマークを付けます。
[削除] をクリックしてアラートを削除します。