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

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

重要

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

注意

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

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

最初に、いくつかの定義を紹介します。

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

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

    Azure リソースの一覧

  • リソース グループ - すべてのリソースが 1 つのグループに属します。 関連リソースを管理するとき、特にアクセス制御の場合、グループは便利な方法です。 たとえば、1 つのリソース グループに Web アプリ、そのアプリを監視する Application Insights リソース、エクスポートされたデータを保持する Storage リソースを配置できます。

  • サブスクリプション - Application Insights またはその他の Azure リソースを使用するには、Azure サブスクリプションにサインインします。 すべてのリソース グループは 1 つの Azure サブスクリプションに属し、そこでは価格パッケージが選択されるほか、会社のサブスクリプションである場合にメンバーとそのアクセス許可が選択されます。

  • Microsoft アカウント - Microsoft Azure サブスクリプション、XBox Live、Outlook.com、およびその他の Microsoft サービスへのサインインに使用するユーザー名とパスワード。

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

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

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

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

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

左側のメニューから [アクセス制御 (IAM)] を選択します。

Azure portal のアクセス制御ボタンのスクリーンショット

[ロールの割り当ての追加] を選択します

[追加] ボタンが赤で強調表示されたアクセス制御メニューのスクリーンショット

下記の [アクセス許可の追加] ビューは、主に Application Insights リソースに固有のものです。リソース グループなどの上位レベルからアクセス制御のアクセス許可を表示すると、Application Insights 中心のロール以外のその他のロールが表示されます。

Azure のロールベースのアクセス制御のすべての組み込みロールについては、公式のリファレンス コンテンツをご覧ください。

アクセス制御のユーザー ロールの一覧のスクリーンショット

ロールを選択する

該当する場合は、関連する公式のリファレンス ドキュメントにリンクしています。

Role In the resource group
所有者 ユーザー アクセスを含め、あらゆるものを変更できます。
Contributor すべてのリソースを含め、あらゆるものを編集できます。
Application Insights コンポーネントの共同作成者 Application Insights リソースを編集できます。
Reader 表示はできますが、何も変更することはできません。
Application Insights Snapshot Debugger Application Insights スナップショット デバッガー機能を使用するためのアクセス許可をユーザーに付与します。 このロールは、所有者ロールにも共同作成者ロールにも含まれていないことに注意してください。
Azure Service Deploy リリース管理の共同作成者 Azure Service Deploy を使用してデプロイするサービスの共同作成者ロール。
Data Purger 個人データを消去するための特殊なロール。 詳細については、個人データに関するガイダンスについての記事をご覧ください。
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 すべての監視データを読み取ることができます。
リソース ポリシーの共同作成者 (プレビュー) リソース ポリシーの作成/変更、サポート チケットの作成、リソース/階層の読み取りを実行する権限により、ユーザーを EA からバックフィルしました。
User Access Administrator ユーザーが Azure リソースへの他のユーザーのアクセスを管理できるようにします。
Website Contributor (Web プランではなく) Web サイトを管理できます。ただし、Web サイトにアクセスすることはできません。

'Editing' includes creating, deleting and updating:

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

ユーザーを選択する

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

ロール メンバーシップを特定する 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 ", "