プライベート リンクを構成する
Azure Private Link のインスタンスを構成するには、次の作業が必要です。
- Azure Monitor Private Link Scope (AMPLS) の作成と関連リソースの選択
- ネットワークでのプライベート エンドポイントの作成と、スコープへのその接続
- Azure Monitor リソースでの必要なアクセス権の構成
この記事では、Azure portal を使用して構成を行う方法について説明します。 また、プロセスを自動化するための Azure Resource Manager テンプレート (ARM テンプレート) の例を示します。
Azure portal を使用してプライベート リンク接続を作成する
このセクションでは、Azure portal を介してプライベート リンクを設定するプロセスを、ステップごとに確認します。 コマンド ラインまたは ARM テンプレートを使用してプライベート リンクを作成および管理するには、「API とコマンド ラインの使用」を参照してください。
Azure Monitor Private Link スコープを作成する
Azure portal で [リソースの作成] に移動して、「Azure Monitor Private Link Scope」を検索します。
[作成] を選択します
サブスクリプションとリソース グループを選択します。
AMPLS に名前を付けます。 AppServerProdTelem など、意味のある明確な名前を使用します。
[Review + create](レビュー + 作成) を選択します。
検証をパスしたら、[作成] を選択します。
Azure Monitor リソースの接続
Azure Monitor リソース (Log Analytics ワークスペース、Application Insights コンポーネント、データ収集エンドポイント) を Azure Monitor Private Link スコープ (AMPLS) に接続します。
AMPLS で、左側のメニューの [Azure Monitor リソース] を選択します。 [追加] を選択します。
ワークスペースまたはコンポーネントを追加します。 [追加] を選択するとダイアログが表示され、Azure Monitor リソースを選択できます。 サブスクリプションとリソース グループを参照するか、 名前を入力してフィルターを適用することもできます。 ワークスペースまたはコンポーネントを選択し、 [適用] を選択してスコープに追加します。
Note
Azure Monitor リソースを削除するには、まず接続先の AMPLS オブジェクトから切断する必要があります。 AMPLS に接続されているリソースを削除することはできません。
プライベート エンドポイントへの接続
これで、AMPLS にリソースを接続できたので、ネットワークを接続するためのプライベート エンドポイントを作成します。 このタスクは、この例のように、Azure portal Private Link センター、または Azure Monitor Private Link Scope 内で実行できます。
スコープ リソースで、左側のリソース メニューの [プライベート エンドポイント接続] を選択します。 [プライベート エンドポイント] を選択して、エンドポイント作成プロセスを開始します。 Private Link センターで開始された接続をここで承認するには、そのリンクを選択し、[承認] を選択します。
[基本] タブで、[サブスクリプション] と [リソース グループ] を選択します
エンドポイントの名前とネットワーク インターフェイス名を入力します
プライベート エンドポイントを配置するリージョンを選択します。 リージョンは、接続先の仮想ネットワークと同じにする必要があります。
[Next:リソース] を選択します。
[リソース] タブで、Azure Monitor Private Link スコープ リソースを含む "サブスクリプション" を選択します。
[リソースの種類] には、Microsoft.insights/privateLinkScopes を選択してください。
[リソース] ドロップダウンから、前に作成したプライベート リンク スコープを選択します。
[次へ: 仮想ネットワーク] を選択します。
[仮想ネットワーク] タブで、Azure Monitor リソースに接続する仮想ネットワークとサブネットを選択します。
[プライベート エンドポイントのネットワーク ポリシー] で、プライベート エンドポイントを含むサブネットにネットワーク セキュリティ グループまたはルート テーブルを適用する場合は、[編集] を選択します。
[サブネット ネットワーク ポリシーの編集] で、[ネットワーク セキュリティ グループ] と [ルート テーブル] の横にあるチェック ボックスをオンにして、[保存] を選択します。 詳細については、「プライベート エンドポイントのネットワーク ポリシーを管理する」を参照してください。
[プライベート IP 構成] は、既定で [IP アドレスを動的に割り当てる] オプションが選択されています。 静的 IP アドレスを割り当てる場合は、[IP アドレスを静的に割り当てる] を選択します。 次に、名前とプライベート IP を入力します。
必要に応じて、[アプリケーション セキュリティ グループ] を選択または作成します。 アプリケーション セキュリティ グループを使うと、仮想マシンをグループ化し、それらのグループに基づいてネットワーク セキュリティ ポリシーを定義できます。[次: DNS] を選びます。
[DNS] タブで、[プライベート DNS ゾーンとの統合] で [はい] を選択して、新しいプライベート DNS ゾーンが自動で作成されるようにします。 実際の DNS ゾーンは、次のスクリーンショットに示されているものとは異なる場合があります。
Note
[いいえ] を選択して DNS レコードを手動で管理する場合は、まずプライベート リンクの設定を完了させます。 これにはプライベート エンドポイントと AMPLS の構成も含まれます。 次に、「Azure プライベート エンドポイントの DNS 構成」の手順に従って、DNS を構成します。 プライベート リンクの設定の準備で、空のレコードを作成しないようにしてください。 作成する DNS レコードによって、既存の設定がオーバーライドされ、Azure Monitor との接続が影響を受ける可能性があります。
さらに、[はい] または [いいえ] を選び、独自のカスタム DNS サーバーを使っている場合は、Azure プライベート エンドポイント DNS 構成に関する記事で説明されているパブリック DNS ゾーン フォワーダー用に、条件付きフォワーダーを設定する必要があります。 条件付きフォワーダーでは、DNS クエリを Azure DNS に転送する必要があります。
[次へ: タグ]、[確認と作成] の順に選択します。
[確認と作成] ページで、検証に問題がなければ、[作成] を選択します。
これで、この AMPLS に接続された新しいプライベート エンドポイントが作成されました。
リソースへのアクセスを構成する
ここまでは、ネットワークの構成について説明しましたが、 監視対象リソース (Log Analytics ワークスペース、Application Insights コンポーネント、データ収集エンドポイント) へのネットワーク アクセスを構成する方法についても検討する必要があります。
Azure Portal にアクセスします。 リソースのメニューの左側に、[ネットワークの分離] というメニュー項目があります。 このページで、プライベート リンクを介してリソースに接続できるネットワークと、他のネットワークがそれに接続できるかどうかの両方を制御します。
接続されている Azure Monitor Private Link Scope
ここでは、AMPLS へのリソースの接続を確認して構成できます。 AMPLS に接続すると、各 AMPLS に接続されている仮想ネットワークからのトラフィックがリソースに到達できます。 接続の確立は、Azure Monitor リソースの接続の場合と同じように、スコープから接続するのと同じ効果があります。
新しい接続を追加するには、[追加] を選択し、AMPLS を選択します。 [適用] を選択して接続します。 「AMPLS の制限を考慮する」で説明されているように、リソースは 5 つの AMPLS オブジェクトに接続できます。
仮想ネットワークのアクセスの構成: プライベート リンク スコープの外部からのアクセスの管理
このページの下部にある設定では、パブリック ネットワーク (つまり示されたスコープには接続されていないネットワーク) からのアクセスを制御します。
[プライベート リンク スコープを通じて接続されていないパブリック ネットワークからのデータ インジェストを受け入れる] を [いいえ] に設定した場合、接続されたスコープ外のクライアント (マシン、SDK など) は、リソースへのデータのアップロードやログの送信はできません。
[プライベート リンク スコープを通じて接続されていないパブリック ネットワークからのクエリを受け入れる] を [いいえ] に設定した場合、接続されたスコープ外のクライアント (マシン、SDK など) は、リソース内のデータのクエリを実行できません。
このデータには、ログ、メトリック、およびライブ メトリック ストリームへのアクセスが含まれます。 また、ブック、ダッシュボード、クエリ API ベースのクライアント エクスペリエンス、Azure portal の分析情報などの上に構築されたエクスペリエンスも含まれます。 Azure portal の外部で実行され、Log Analytics データにクエリを発行するエクスペリエンスも、プライベート リンクの仮想ネットワーク 内で実行する必要があります。
API とコマンド ラインの使用
前に説明したプロセスは、ARM テンプレート、REST、コマンド ライン インターフェイスを使用して自動化できます。
プライベート リンク スコープを作成および管理する
プライベート リンク スコープを作成して管理するには、REST API または Azure CLI (az monitor private-link-scope) を使用します。
オープン アクセス モードで AMPLS を作成する: CLI の例
次の CLI コマンドを実行すると、クエリとインジェストのアクセス モードの両方が Open
に設定された、"my-scope"
という名前の新しい AMPLS リソースが作成されます。
az resource create -g "my-resource-group" --name "my-scope" -l global --api-version "2021-07-01-preview" --resource-type Microsoft.Insights/privateLinkScopes --properties "{\"accessModeSettings\":{\"queryAccessMode\":\"Open\", \"ingestionAccessMode\":\"Open\"}}"
混合アクセス モードで AMPLS を作成する: PowerShell の例
次の PowerShell スクリプトを実行すると、クエリ アクセス モードが Open
でインジェスト アクセス モードが PrivateOnly
に設定された、"my-scope"
という名前の新しい AMPLS リソースが作成されます。 つまり、AMPLS 内のリソースへのインジェストのみを許可するという設定です。
# scope details
$scopeSubscriptionId = "ab1800bd-ceac-48cd-...-..."
$scopeResourceGroup = "my-resource-group"
$scopeName = "my-scope"
$scopeProperties = @{
accessModeSettings = @{
queryAccessMode = "Open";
ingestionAccessMode = "PrivateOnly"
}
}
# login
Connect-AzAccount
# select subscription
Select-AzSubscription -SubscriptionId $scopeSubscriptionId
# create private link scope resource
$scope = New-AzResource -Location "Global" -Properties $scopeProperties -ResourceName $scopeName -ResourceType "Microsoft.Insights/privateLinkScopes" -ResourceGroupName $scopeResourceGroup -ApiVersion "2021-07-01-preview" -Force
AMPLS の作成: ARM テンプレート
次の ARM テンプレートでは、以下のものが作成されます。
- クエリとインジェストのアクセス モードが
Open
に設定された、"my-scope"
という名前の AMPLS。 "my-workspace"
という名前の Log Analytics ワークスペース。"my-workspace-connection"
という名前のスコープ付きリソースの"my-scope"
AMPLS への追加。
Note
AMPLS オブジェクトの作成には、新しい API バージョン (2021-07-01-preview 以降) を使用してください (下記の type microsoft.insights/privatelinkscopes
)。 過去に説明した ARM テンプレートでは古い API バージョンが使用され、その結果、AMPLS が QueryAccessMode="Open"
と IngestionAccessMode="PrivateOnly"
に設定されていました。
{
"$schema": https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#,
"contentVersion": "1.0.0.0",
"parameters": {
"private_link_scope_name": {
"defaultValue": "my-scope",
"type": "String"
},
"workspace_name": {
"defaultValue": "my-workspace",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "microsoft.insights/privatelinkscopes",
"apiVersion": "2021-07-01-preview",
"name": "[parameters('private_link_scope_name')]",
"location": "global",
"properties": {
"accessModeSettings":{
"queryAccessMode":"Open",
"ingestionAccessMode":"Open"
}
}
},
{
"type": "microsoft.operationalinsights/workspaces",
"apiVersion": "2020-10-01",
"name": "[parameters('workspace_name')]",
"location": "westeurope",
"properties": {
"sku": {
"name": "pergb2018"
},
"publicNetworkAccessForIngestion": "Enabled",
"publicNetworkAccessForQuery": "Enabled"
}
},
{
"type": "microsoft.insights/privatelinkscopes/scopedresources",
"apiVersion": "2019-10-17-preview",
"name": "[concat(parameters('private_link_scope_name'), '/', concat(parameters('workspace_name'), '-connection'))]",
"dependsOn": [
"[resourceId('microsoft.insights/privatelinkscopes', parameters('private_link_scope_name'))]",
"[resourceId('microsoft.operationalinsights/workspaces', parameters('workspace_name'))]"
],
"properties": {
"linkedResourceId": "[resourceId('microsoft.operationalinsights/workspaces', parameters('workspace_name'))]"
}
}
]
}
AMPLS のアクセス モードの設定: PowerShell の例
AMPLS でアクセス モード フラグを設定するには、次の PowerShell スクリプトを使用できます。 次のスクリプトを実行すると、フラグが Open
に設定されます。 プライベート専用モードを使用するには、値 "PrivateOnly"
を使用します。
AMPLS アクセス モードの更新が有効になるまでに、最大 10 分かかります。
# scope details
$scopeSubscriptionId = "ab1800bd-ceac-48cd-...-..."
$scopeResourceGroup = "my-resource-group-name"
$scopeName = "my-scope"
# login
Connect-AzAccount
# select subscription
Select-AzSubscription -SubscriptionId $scopeSubscriptionId
# get private link scope resource
$scope = Get-AzResource -ResourceType Microsoft.Insights/privateLinkScopes -ResourceGroupName $scopeResourceGroup -ResourceName $scopeName -ApiVersion "2021-07-01-preview"
# set access mode settings
$scope.Properties.AccessModeSettings.QueryAccessMode = "Open";
$scope.Properties.AccessModeSettings.IngestionAccessMode = "Open";
$scope | Set-AzResource -Force
リソース アクセス フラグを設定する
ワークスペースまたはコンポーネント アクセス フラグを管理するには、log-analytics ワークスペースまたは az monitor app-insights コンポーネントでフラグ [--ingestion-access {Disabled, Enabled}]
と [--query-access {Disabled, Enabled}]
を使用します。
自分のプライベート リンク セットアップを確認および検証する
このセクションの手順に従って、プライベート リンクのセットアップを確認し、検証します。
エンドポイントの DNS 設定の確認
作成したプライベート エンドポイントには今、次の 5 つの DNS ゾーンが構成されているはずです。
privatelink.monitor.azure.com
privatelink.oms.opinsights.azure.com
privatelink.ods.opinsights.azure.com
privatelink.agentsvc.azure-automation.net
privatelink.blob.core.windows.net
これらのゾーンのそれぞれで、特定の Azure Monitor エンドポイントが仮想ネットワークの IP プールからのプライベート IP にマップされます。 以下の画像に示されている IP アドレスは単なる例です。 実際の構成では、代わりに、独自のネットワークからのプライベート IP が表示されるはずです。
重要
2021 年 12 月 1 日以降に作成された AMPLS とプライベート エンドポイント リソースでは、エンドポイント圧縮と呼ばれるメカニズムを使用します。 つまり、リソース固有のエンドポイント (OMS、ODS、AgentSVC エンドポイントなど) は、リージョンごと、DNS ゾーンごとに同じ IP アドレスを共有します。 このメカニズムは、仮想ネットワークの IP プールから取得される IP が少なく、さらに多くのリソースを AMPLS に追加できるという意味です。
Privatelink-monitor-azure-com
このゾーンは、Azure Monitor によって使用されるグローバル エンドポイントを対象とします。つまり、リソース固有の要求ではなく、グローバルまたはリージョンに要求を提供するエンドポイントです。 このゾーンには、次のようにマップされたエンドポイントが必要です。
- in.ai: Application Insights インジェスト エンドポイント (グローバルおよびリージョン両方のエントリ)
- api: Application Insights と Log Analytics API エンドポイント
- live: Application Insights ライブ メトリクス エンドポイント
- profiler: Application Insights Profiler エンドポイント
- snapshot: Application Insights スナップショット エンドポイント
- diagservices-query: Application Insights Profiler とスナップショット デバッガー (Azure portal でプロファイラー/デバッガーの結果にアクセスするときに使用)
このゾーンでは、データ収集エンドポイント (DCE) の次のリソース固有のエンドポイントも対象とします。
<unique-dce-identifier>.<regionname>.handler.control
: プライベート構成エンドポイント (DCE リソースの一部)<unique-dce-identifier>.<regionname>.ingest
: プライベート インジェスト エンドポイント (DCE リソースの一部)
Log Analytics エンドポイント
重要
2021 年 12 月 1 日以降に作成された AMPLS とプライベート エンドポイントでは、エンドポイント圧縮と呼ばれるメカニズムを使用します。 つまり、各リソース固有のエンドポイント (OMS、ODS、AgentSVC など) では、リージョンごと、DNS ゾーンごとに、そのリージョン内のすべてのワークスペースに対して 1 つの IP アドレスが使用されます。 このメカニズムは、仮想ネットワークの IP プールから取得される IP が少なく、さらに多くのリソースを AMPLS に追加できるという意味です。
Log Analytics では、次の 4 つの DNS ゾーンが使用されます。
- privatelink-oms-opinsights-azure-com: OMS エンドポイントへのワークスペース固有のマッピングに対応します。 このプライベート エンドポイントに接続されている AMPLS にリンクされた各ワークスペースのエントリが表示されます。
- privatelink-ods-opinsights-azure-com: ODS エンドポイント (Log Analytics の取り込みエンドポイント) へのワークスペース固有のマッピングに対応します。 このプライベート エンドポイントに接続されている AMPLS にリンクされた各ワークスペースのエントリが表示されます。
- privatelink-agentsvc-azure-automation-net: エージェント サービス オートメーション エンドポイントへのワークスペース固有のマッピングに対応します。 このプライベート エンドポイントに接続されている AMPLS にリンクされた各ワークスペースのエントリが表示されます。
- privatelink-blob-core-windows-net: グローバル エージェントのソリューション パックのストレージ アカウントへの接続を構成します。 これにより、エージェントは、新規または更新されたソリューション パック (管理パックとも呼ばれます) をダウンロードできます。 使用するワークスペースの数に関係なく、全ての Log Analytics エージェントを処理するのに必要なエントリは 1 つだけです。 このエントリは、2021 年 4 月 19 日以降 (または、Azure ソブリン クラウドでは 2021 年 6 月以降) に作成されたプライベート リンク セットアップにのみ追加されます。
次のスクリーンショットは、米国東部に 2 つのワークスペースを持ち、西ヨーロッパに 1 つのワークスペースを持つ AMPLS にマップされたエンドポイントを示しています。 米国東部のワークスペースが IP アドレスを共有していることに注意してください。 西ヨーロッパのワークスペース エンドポイントは別の IP アドレスにマップされています。 BLOB エンドポイントはこのイメージには表示されませんが、構成されています。
プライベート リンク経由で通信していることの検証
プライベート リンクが正常に動作していることを確認します。
自分の要求がプライベート エンドポイントを介して送信されたことを検証するために、ネットワーク追跡ツールまたはご利用のブラウザーを使用してそれらを確認できます。 たとえば、ご利用のワークスペースまたはアプリケーションに対してクエリを試みる場合は、API エンドポイントにマップされたプライベート IP に要求が送信されることを確認します。 この例では、172.17.0.9 です。
Note
ブラウザーによっては、他の DNS 設定が使用されます。 詳細については、「ブラウザーの DNS 設定」を参照してください。 目的の DNS 設定が適用されていることを確認します。
(AMPLS 経由で接続されていない) パブリック ネットワークからの要求がワークスペースまたはコンポーネントによって受信されていないことを確認するには、「リソースへのアクセスを構成する」で説明されているように、リソースのパブリック インジェストとクエリ フラグを [いいえ] に設定します。
ご利用の保護されたネットワーク上のクライアントから、
nslookup
を、ご利用の DNS ゾーンに一覧表示されている任意のエンドポイントに対して使用します。 それは、既定で使用されるパブリック IP ではなく、マップされたプライベート IP に、DNS サーバーによって解決される必要があります。
次のステップ
- カスタム ログとカスタマー マネージド キーのプライベート ストレージについて確認する
- Azure Automation 用のプライベート リンクについて確認する
- 新しいデータ収集エンドポイントについて確認する