Application Insights のリソース、ロール、アクセス制御

Application Insights では、Azure ロールベースのアクセス制御 (Azure RBAC) を利用し、データへのアクセス権を読み取りできる人と更新できる人を制御できます。

重要

リソース自体ではなく、アプリケーション リソースが属する リソース グループまたはサブスクリプション でユーザーにアクセスを割り当てます。 Application Insights コンポーネントの共同作成者ロールを割り当てます。 このロールにより、Web テストとアラート、アプリケーション リソースのアクセス制御が統一されます。 詳細については、こちらを参照してください

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

リソース、グループ、サブスクリプション

まず、いくつかの用語を定義しましょう。

  • リソース: Azure サービスのインスタンス。 Application Insights リソースはアプリケーションから送られてくる利用統計情報データを収集し、分析し、表示します。 その他の種類の Azure リソースには Web アプリ、データベース、VM があります。

    リソースを表示するには、Azure portal を開き、サインインし、[すべてのリソース] を選択します。 リソースを見つけるには、フィルター フィールドに名前の一部を入力します。

    Azure リソースを一覧表示する画面のスクリーンショット。

  • リソース グループ - すべてのリソースが 1 つのグループに属します。 関連リソースを管理するとき、特にアクセス制御の場合、グループは便利な方法です。 たとえば、1 つのリソース グループに Web アプリ、そのアプリを監視する Application Insights リソース、エクスポートされたデータを保持する Azure Storage リソースを配置できます。
  • サブスクリプション: Application Insights またはその他の Azure リソースを使用するには、Azure サブスクリプションにサインインします。 すべてのリソース グループは、価格パッケージを選択する場所である 1 つの Azure サブスクリプションに属しています。 組織のサブスクリプションの場合、所有者はメンバーとそのアクセス許可を選択できます。
  • Microsoft アカウント: Azure サブスクリプション、Xbox Live、Outlook.com、およびその他の Microsoft サービスへのサインインに使用するユーザー名とパスワード。

リソース グループのコントロール制御

アプリケーションに作成したリソースに加え、アラートと Web テストには非表示の個別リソースもあります。 これらはご利用の Application Insights リソースと同じリソース グループに関連付けられています。 Web サイトやストレージなど、他の Azure サービスをそこに配置することもあります。

別のユーザーにアクセス権を与える

サブスクリプションまたはリソース グループの所有者権限が必要です。

ユーザーは、Microsoft アカウントを持っているか、または所属する組織の Microsoft アカウントを使用できることが必要です。 アクセス権は個人に付与できるほか、Azure Active Directory に定義されているユーザー グループに付与することができます。

リソース グループに移動するか、リソース自体に直接移動する

Azure RBAC に共同作成者ロールを割り当てます。

詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

ロールを選択する

リンクになっている場合、そこから関連する公式のリファレンス ドキュメントにアクセスできます。

Role In the resource group
所有者 ユーザー アクセスを含め、あらゆるものを変更できます。
Contributor すべてのリソースを含め、あらゆるものを編集できます。
Application Insights Component Contributor Application Insights リソースを編集できます。
Reader 表示はできますが、何も変更することはできません。
Application Insights Snapshot Debugger Application Insights スナップショット デバッガー機能を使用するためのアクセス許可をユーザーに付与します。 このロールは、所有者ロールにも共同作成者ロールにも含まれていません。
Azure Service Deploy リリース管理の共同作成者 Azure Service Deploy を使用してデプロイするサービスの共同作成者ロール。
Data Purger 個人データを消去するための特殊なロール。 詳細については、Log Analytics および Application Insights 内の個人データの管理に関する記事を参照してください。
Azure ExpressRoute 管理者 Express Route を作成、削除、管理できます。
Log Analytics Contributor Log Analytics 共同作成者は、すべての監視データを読み取り、監視設定を編集できます。 監視設定の編集には、VM 拡張機能の VM への追加、Azure Storage からログの収集を設定できるようにするためのストレージ アカウント キーの読み取り、Automation アカウントの作成と構成、ソリューションの追加、すべての Azure リソースでの Azure Diagnostics の構成が含まれます。
Log Analytics Reader Log Analytics Reader は、すべての監視データの表示と検索、およびすべての Azure リソース上の Azure Diagnostics 構成の表示など、監視設定の表示を行うことができます。
masterreader ユーザーがあらゆるものを表示できるようにします。ただし、変更することはできません。
Monitoring Contributor すべての監視データを読み取り、監視設定を更新できます。
監視メトリック パブリッシャー Azure リソースに対するメトリックの公開を有効にします。
Monitoring Reader すべての監視データを読み取ることができます。
リソース ポリシーの共同作成者 (プレビュー) リソース ポリシーの作成/変更、サポート チケットの作成、リソース/階層の読み取りを実行する権限により、ユーザーを Enterprise Agreement からバックフィルしました。
ユーザー アクセス管理者 ユーザーが Azure リソースへの他のユーザーのアクセスを管理できるようにします。
Website Contributor (Web プランではなく) Web サイトを管理できます。ただし、Web サイトにアクセスすることはできません。

編集には、次のものを対象とした作成、削除、更新が含まれます。

  • リソース
  • Web テスト
  • 警告
  • 連続エクスポート

ユーザーを選択する

対象のユーザーがディレクトリにない場合、Microsoft アカウントを持つユーザーを招待できます。 Outlook.com、OneDrive、Windows Phone、XBox Live などのサービスを利用している場合、Microsoft アカウントを持っています。

Azure ロールベースのアクセス制御 (Azure RBAC) に関する記事を参照してください。

ロール メンバーシップを特定する PowerShell クエリ

特定のロールは通知や電子メール アラートにリンクされていることがあるため、特定のロールに属しているユーザーの一覧を生成できると便利です。 以下のサンプル クエリを必要に応じて調整し、そのような一覧の生成に役立ててください。

管理者ロール + 共同作成者ロールについてサブスクリプション全体にクエリを実行する

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

所有者と共同作成者について特定の Application Insights リソースのコンテキスト内でクエリを実行する

$resourceGroup = "RGNAME"
$resourceName = "AppInsightsName"
$resourceType = "microsoft.insights/components"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup -ResourceType $resourceType -ResourceName $resourceName | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

所有者と共同作成者について特定の Application Insights リソースのコンテキスト内でクエリを実行する

$resourceGroup = "RGNAME"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "