特権 Azure ロールの割り当てに関するアラートを出す

共同作成者、所有者、ユーザー アクセス管理者などの特権 Azure ロールは、強力なロールであるためにシステムにリスクをもたらす可能性があります。 このようなロールが割り当てられたときに、電子メールやテキスト メッセージで通知を受け取ることができます。 この記事では、Azure Monitor を使用してアラート ルールを作成することで、サブスクリプション スコープで特権ロールの割り当てが通知されるようにする方法について説明します。

前提条件

アラート ルールを作成するには以下が必要です。

  • Azure サブスクリプションへのアクセス
  • サブスクリプション内でリソース グループとリソースを作成するための権限
  • AzureActivity テーブルにアクセスできるように設定された Log Analytics

Azure Monitor を使用する前にコストを見積もる

Azure Monitor とアラート ルールの使用にはコストがかかります。 このコストは、クエリの実行頻度と選択された通知によって変わります。 詳細については、「Azure Monitor の価格」を参照してください。

アラート ルールを作成する

特権ロールの割り当ての通知を受け取るには、Azure Monitor でアラート ルールを作成します。

  1. Azure portal にサインインします。

  2. [Monitor](モニター) に移動します。

  3. 左側のナビゲーションで、[アラート] をクリックします。

  4. [作成]>[アラート ルール] をクリックします。 [アラート ルールの作成] ページが開きます。

  5. [スコープ] タブでサブスクリプションを選択します。

  6. [条件] タブで、[カスタム ログ検索] シグナル名を選択します。

  7. [ログ クエリ] ボックスで、サブスクリプションのログで実行されてアラートをトリガーする次の 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
    

    Screenshot of Create an alert rule condition tab in Azure Monitor.

  8. [測定] セクションで次の値を設定します。

    • 測定: テーブルの行
    • 集計の種類: カウント
    • 集計の細分性: 5 分

    [集計の細分性] では、既定値を必要な頻度に変更できます。

  9. [ディメンションで分割] セクションで、[リソース ID] 列を [分割しない] に設定します。

  10. [アラート ロジック] セクションで次の値を設定します。

    • 演算子: より大きい
    • しきい値: 0
    • 評価の頻度: 5 分

    [評価の頻度] では、既定値を必要な頻度に変更できます。

  11. [アクション] タブで、アクション グループを作成するか、既存のアクション グループを選択します。

    アクション グループは、アラートがトリガーされたときに実行されるアクションと通知を定義します。

    アクション グループを作成するときは、アクション グループを配置するリソース グループを指定する必要があります。 次に、アラート ルールがトリガーされたときに呼び出す通知 (電子メール/SMS メッセージ/プッシュ/音声アクション) を選択します。 [アクション] タブと [タグ] タブはスキップできます。 詳細については、「Azure Portal でのアクション グループの作成および管理」を参照してください。

  12. [詳細] タブで、アラート ルールを保存するリソース グループを選択します。

  13. [アラート ルールの詳細] セクションで、[重大度] を選択し、[アラート ルール名] を指定します。

  14. [リージョン] では、Azure アクティビティ ログがグローバルであるため、任意のリージョンを選択できます。

  15. [タグ] タブはスキップします。

  16. [確認と作成] タブで、[作成] をクリックしてアラート ルールを作成します。

アラート ルールをテストする

アラート ルールを作成したら、アラート ルールが実行されることをテストできます。

  1. サブスクリプションのスコープで、共同作成者、所有者、ユーザー アクセス管理者のいずれかのロールを割り当てます。 詳細については、Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。

  2. ログ クエリの集計の細分性と評価頻度によっては、アラートを受け取るまで数分かかります。

  3. [アラート] ページで、アクション グループで指定したアラートを監視します。

    Screenshot of the Alerts page showing that role assignment alert fired.

    次の図は電子メール アラートの例を示しています。

    Screenshot of an email alert for a role assignment.

アラート ルールを削除する

ロールの割り当てのアラート ルールを削除して追加コストが発生しないようにするには、次の手順に従います。

  1. [Monitor](モニター) で、[アラート] に移動します。

  2. バーの [アラート ルール] をクリックします。

  3. 削除するアラート ルールの横にチェックマークを付けます。

  4. [削除] をクリックしてアラートを削除します。

次のステップ