API を使用して Azure リソースを管理するためのプライベート リンクを作成する
この記事では、Azure Private Link を使用して、サブスクリプション内のリソースを管理するためのアクセスを制限する方法について説明します。
Private Link を使用すると、仮想ネットワーク内のプライベート エンドポイント経由で、Azure サービスにアクセスできます。 プライベート リンクを Azure Resource Manager の操作と組み合わせると、特定のエンドポイントに存在しないユーザーがリソースを管理するのをブロックします。 悪意のあるユーザーがサブスクリプション内のアカウントに対する資格情報を取得した場合、そのユーザーは特定のエンドポイントにいないとリソースを管理できません。
プライベート リンクのセキュリティ上の利点を次に示します。
- プライベート アクセス - ユーザーは、プライベート ネットワークからプライベート エンドポイントを経由してリソースを管理できます。
注意
現在、Azure Kubernetes Service (AKS) は ARM プライベート エンドポイント実装をサポートしていません。
Azure Bastion はプライベート リンクをサポートしていません。 リソース管理のプライベート リンクのプライベート エンドポイント構成にはプライベート DNS ゾーンを使用することをお勧めしますが、management.azure.com の名前と重複しているため、Bastion インスタンスは動作しなくなります。 詳細については、「Azure Bastion に関する FAQ」を参照してください。
アーキテクチャについての理解
重要
このリリースでは、ルート管理グループのレベルでのみプライベート リンク管理アクセスを適用できます。 この制限は、プライベート リンク アクセスがテナント全体に適用されるという意味です。
プライベート リンクによる管理を実装するときに使用するリソースの種類は 2 つあります。
- リソース管理のプライベート リンク (Microsoft.Authorization/resourceManagementPrivateLinks)
- プライベート リンクの関連付け (Microsoft.Authorization/privateLinkAssociations)
次の図は、リソースを管理するためのアクセスを制限するソリューションの構築方法を示しています。
プライベート リンクの関連付けにより、ルート管理グループが拡張されます。 プライベート リンクの関連付けとプライベート エンドポイントは、リソース管理のプライベート リンクを参照します。
重要
マルチテナント アカウントは現在、プライベート リンクを使用したリソースの管理をサポートしていません。 異なるテナントのプライベート リンクの関連付けを、1 つのリソース管理プライベート リンクに接続することはできません。
アカウントが複数のテナントにアクセスする場合は、そのうちの 1 つにのみ、プライベート リンクを定義します。
ワークフロー
リソースのプライベート リンクを設定するには、次の手順に従います。 この手順については、この記事の後半で詳しく説明します。
- リソース管理のプライベート リンクを作成します。
- プライベート リンクの関連付けを作成します。 プライベート リンクの関連付けにより、ルート管理グループが拡張されます。 また、リソース管理のプライベート リンクのリソース ID も参照します。
- このリソース管理のプライベート リンクを参照するプライベート エンドポイントを追加します。
これらの手順を完了すると、スコープの階層内にある Azure リソースを管理できるようになります。 サブネットに接続されているプライベート エンドポイントを使用します。
プライベート リンクへのアクセスを監視できます。 詳細については、「ログ記録と監視」を参照してください。
必要なアクセス許可
重要
このリリースでは、ルート管理グループのレベルでのみプライベート リンク管理アクセスを適用できます。 この制限は、プライベート リンク アクセスがテナント全体に適用されるという意味です。
リソース管理のプライベート リンクを設定するには、次のアクセス権が必要です。
- サブスクリプションでの所有者。 このアクセス権は、リソース管理プライベート リンク リソースを作成する際必要です。
- ルート管理グループで所有者または共同作成者。 このアクセス権限は、プライベート リンクの関連付けリソースを作成する際に必要です。
- Microsoft Entra ID の全体管理者には、ルート管理グループでロールを割り当てるアクセス許可が自動的に付与されるわけではありません。 リソース管理プライベート リンクの作成を有効にするには、グローバル管理者が、ルート管理グループを読み取ってアクセス権を昇格し、テナント内のすべてのサブスクリプションと管理グループに対するユーザー アクセス管理者アクセス許可を持つアクセス許可を持つ必要があります。 ユーザー アクセス管理者のアクセス権を取得した後、グローバル管理者は、プライベート リンクの関連付けを作成するユーザーに、ルート管理グループの所有者または共同作成者のアクセス権を付与する必要があります。
リソース管理のプライベート リンクを作成する
リソース管理のプライベート リンクを作成するには、次の要求を送信します。
例
# Login first with az login if not using Cloud Shell
az resourcemanagement private-link create --location WestUS --resource-group PrivateLinkTestRG --name NewRMPL
新しいリソース管理のプライベート リンクに対して返される ID をメモしておきます。 これは、プライベート リンクの関連付けを作成するために使用します。
プライベート リンクの関連付けを作成する
プライベート リンク関連付けリソースのリソース名は GUID である必要があり、publicNetworkAccess フィールドを無効にすることはまだサポートされていません。
プライベート リンクの関連付けを作成するには、次を使用します。
例
# Login first with az login if not using Cloud Shell
az private-link association create --management-group-id fc096d27-0434-4460-a3ea-110df0422a2d --name 1d7942d1-288b-48de-8d0f-2d2aa8e03ad4 --privatelink "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/PrivateLinkTestRG/providers/Microsoft.Authorization/resourceManagementPrivateLinks/newRMPL"
プライベート エンドポイントの追加
この記事では、既に仮想ネットワークがあることを前提としています。 プライベート エンドポイントに使用するサブネットで、プライベート エンドポイントのネットワーク ポリシーをオフにする必要があります。 プライベート エンドポイントのネットワーク ポリシーをオフにしていない場合は、プライベート エンドポイントのネットワーク ポリシーを無効にする方法に関するページを参照してください。
プライベート エンドポイントを作成するには、ポータル、PowerShell、CLI、Bicep、またはテンプレートを使用して作成するためのプライベート エンドポイントのドキュメントを参照してください。
要求本文で、privateServiceLinkId
をリソース管理のプライベート リンクの ID に設定します。 groupIds
には ResourceManagement
が含まれている必要があります。 プライベート エンドポイントの場所は、サブネットの場所と同じである必要があります。
{
"location": "westus2",
"properties": {
"privateLinkServiceConnections": [
{
"name": "{connection-name}",
"properties": {
"privateLinkServiceId": "/subscriptions/{subID}/resourceGroups/{rgName}/providers/Microsoft.Authorization/resourceManagementPrivateLinks/{name}",
"groupIds": [
"ResourceManagement"
]
}
}
],
"subnet": {
"id": "/subscriptions/{subID}/resourceGroups/{rgName}/providers/Microsoft.Network/virtualNetworks/{vnet-name}/subnets/{subnet-name}"
}
}
}
次に行う手順は、自動承認と手動承認のどちらを使用しているかによって異なります。 承認の詳細については、「承認ワークフローを使用したプライベート リンク リソースへのアクセス」を参照してください。
応答には承認状態が含まれます。
"privateLinkServiceConnectionState": {
"actionsRequired": "None",
"description": "",
"status": "Approved"
},
要求が自動的に承認される場合は、次のセクションに進むことができます。 要求が手動の承認を必要としている場合は、ネットワーク管理者によってプライベート エンドポイント接続が承認されるのを待ちます。
次のステップ
プライベート リンクの詳細については、Azure Private Link に関するページを参照してください。