Azure Private Link サービスとは
Azure Private Link サービスは、Azure Private Link を使用する独自のサービスに対する参照です。 Azure Standard Load Balancer の背後で実行されている自分のサービスで Private Link アクセスを有効にすると、自分のサービスのコンシューマーがそのサービスに対して独自の VNet からプライベートにアクセスできるようになります。 顧客は、自分の仮想ネットワーク内にプライベート エンドポイントを作成し、それをこのサービスにマッピングすることができます。 この記事では、サービス プロバイダー側に関連する概念について説明します。
図:Azure Private Link サービス。
ワークフロー
図:Azure Private Link サービスのワークフロー。
Private Link サービスを作成する
自分の仮想ネットワーク内の標準ロード バランサーの背後で実行されるように、対象のアプリケーションを構成します。 自分のアプリケーションが標準のロード バランサーの背後で動作するように既に構成されている場合は、この手順をスキップしてかまいません。
上記のロード バランサーを参照する Private Link サービスを作成します。 ロード バランサーの選択プロセスで、トラフィックを受信するフロントエンド IP 構成を選択します。 Private Link サービスの NAT IP アドレスに対し、サブネットを選択します。 少なくとも 8 つの NAT IP アドレスをサブネットで使用できるようにすることをお勧めします。 すべてのコンシューマー トラフィックは、このプライベート IP アドレスのプールからサービス プロバイダーに発信されるように見えます。 Private Link サービスの適切なプロパティまたは設定を選択します。
注意
Azure Private Link サービスは、Standard Load Balancer でのみサポートされています。
サービスを共有する
自分の Private Link サービスを作成すると、そのサービスに指定した名前に基づいて、別名と呼ばれるグローバルに一意の名前付きモニカーが Azure によって生成されます。 自分のサービスの別名またはリソース URI は、オフラインで顧客と共有できます。 コンシューマーは、別名またはリソース URI を使用して、Private Link 接続を開始できます。
接続要求を管理する
コンシューマーが接続を開始した後、サービス プロバイダーは、接続要求を受け入れるか拒否することができます。 すべての接続要求は、Private Link サービスの privateendpointconnections プロパティの下に一覧表示されます。
サービスを削除する
Private Link サービスが使用されなくなった場合は、削除できます。 ただし、サービスを削除する前に、それに関連付けられているプライベート エンドポイント接続がないことを確認してください。 すべての接続を拒否したうえで、サービスを削除することができます。
Properties
Private Link サービスでは、次のプロパティを指定します。
プロパティ | 説明 |
---|---|
プロビジョニングの状態 (provisioningState) | Private Link サービスの現在のプロビジョニング状態を一覧表示する読み取り専用プロパティ。 適用可能なプロビジョニングの状態は次のとおりです: Deleting (削除中)、Failed (失敗)、Succeeded (成功)、*Updating (更新中)。 プロビジョニングの状態が Succeeded (成功) の場合、Private Link サービスは正常にプロビジョニングされています。 |
別名 (alias) | 別名は、対象のサービスのグローバルに一意の読み取り専用文字列です。 これは、対象のサービスの顧客データをマスクすると同時に、容易に共有できるサービス名を作成するのに役立ちます。 Private Link サービスを作成すると、対象のサービスの別名が Azure によって生成されます。この別名は、顧客と共有することができます。 顧客は、この別名を使用して、対象のサービスへの接続を要求できます。 |
可視性 (visibility) | 可視性は、自分の Private Link サービスの公開設定を制御するプロパティです。 サービス プロバイダーは、自社のサービスの公開対象を、Azure ロールベースのアクセス制御権限をもつサブスクリプションに制限することを選択できます。 制限付きサブスクリプションのセットを使用して、公開を制限することもできます。 |
自動承認 (autoApproval) | 自動承認は、Private Link サービスへの自動アクセスを制御するものです。 自動承認リストに指定されているサブスクリプションは、それらのサブスクリプションのプライベート エンドポイントから接続が要求されると、自動的に承認されます。 |
Load Balancer のフロントエンド IP 構成 (loadBalancerFrontendIpConfigurations) | Private Link サービスは、Standard Load Balancer のフロントエンド IP アドレスに関連付けられています。 サービス宛てのすべてのトラフィックは、SLB のフロントエンドに到達します。 対象のアプリケーションが実行されている適切なバックエンド プールにこのトラフィックが転送されるように、SLB 規則を構成できます。 ロード バランサーのフロントエンド IP 構成は、NAT IP 構成とは異なります。 |
NAT IP 構成 (ipConfigurations) | このプロパティは、Private Link サービスの NAT (ネットワーク アドレス変換) IP 構成を参照します。 NAT IP は、サービス プロバイダーの仮想ネットワーク内の任意のサブネットから選択できます。 Private Link サービスは、Private Link トラフィックで宛先側のネットワーク アドレス変換を実行します。 この NAT により、ソース (コンシューマー側) と宛先 (サービス プロバイダー) のアドレス空間の間に IP の競合がないことが保証されます。 宛先またはサービス プロバイダー側では、NAT IP アドレスは、サービスによって受信されたすべてのパケットの送信元 IP として表示されます。 宛先 IP は、サービスによって送信されるすべてのパケットに対して表示されます。 |
プライベート エンドポイント接続 (privateEndpointConnections) | このプロパティでは、Private Link サービスに接続しているプライベート エンドポイントが一覧表示されます。 同じ Private Link サービスに複数のプライベート エンドポイントを接続することができます。サービス プロバイダーは、個々のプライベート エンドポイントの状態を制御できます。 |
TCP プロキシ v2 (EnableProxyProtocol) | このプロパティを使用すると、サービス プロバイダーは TCP プロキシ v2 を使用して、サービス コンシューマーに関する接続情報を取得できます。 サービス プロバイダーは、プロキシ プロトコル v2 ヘッダーを解析できるように受信者構成を設定します。 |
詳細
Private Link サービスには、任意のパブリック リージョン内の承認されたプライベート エンドポイントからアクセスできます。 プライベート エンドポイントは、同じ仮想ネットワークとリージョン間でピアリングされた仮想ネットワークから到達できます。 プライベート エンドポイントには、プライベート VPN または ExpressRoute 接続を使用して、グローバルピアリングされた仮想ネットワーク、およびオンプレミスから到達できます。
Azure Private Link サービスを作成すると、リソースのライフサイクルにわたってネットワーク インターフェイスが作成されます。 このインターフェイスは、顧客が管理することはできません。
Private Link サービスは、仮想ネットワークおよび Standard Load Balancer と同じリージョンにデプロイする必要があります。
単一の Azure Private Link サービスに対して、異なる仮想ネットワーク、サブスクリプション、または Active Directory テナントに属する複数のプライベート エンドポイントからアクセスできます。 接続は、接続ワークフローを介して確立されます。
異なるフロントエンド IP 構成を使用して、同じ Standard Load Balancer 上に複数の Private Link サービスを作成できます。 Standard Load Balancer ごと、およびサブスクリプションごとに作成できる Private Link サービスの数には制限があります。 詳細については、Azure の制限 に関する記事をご覧ください。
Private Link サービスには、複数の NAT IP 構成をリンクすることができます。 複数の NAT IP 構成を選択すると、サービス プロバイダーをスケーリングするのに役立ちます。 現在、サービス プロバイダーは、Private Link サービスごとに最大 8 つの NAT IP アドレスを割り当てることができます。 各 NAT IP アドレスを使用して TCP 接続により多くのポートを割り当てることにより、スケールアウトすることができます。Private Link サービスには複数の NAT IP アドレスを追加できますが、構成後は少なくとも 1 つの NAT IP アドレスを保持する必要があります。 NAT IP アドレスが利用できない結果としてアクティブな接続が影響を受けることがないようにするため、残っている最後の NAT IP を削除することは制限されます。
エイリアス
別名は、対象のサービスのグローバルに一意の名前です。 これは、対象のサービスの顧客データをマスクすると同時に、容易に共有できるサービス名を作成するのに役立ちます。 Private Link サービスを作成すると、対象のサービスの別名が Azure によって生成されます。この別名は、顧客と共有することができます。 顧客は、この別名を使用して、対象のサービスへの接続を要求できます。
別名は、3 つの部分から構成されます: <プレフィックス> .GUID. <サフィックス>
プレフィックスはサービス名です。 独自のプレフィックスを選択できます。 "エイリアス" は、一度作成すると変更できないため、適切なプレフィックスを選択してください。
GUID は、プラットフォームによって提供されます。 この GUID は、名前をグローバルに一意にします。
サフィックスは、Azure によって追加されます: <リージョン>.azure.privatelinkservice
完全な別名: プレフィックス。 {GUID}.<リージョン>.azure.privatelinkservice
サービスの公開を制御する
Private Link サービスでは、サービスの公開を制御する可視性の設定に 3 つのオプションが用意されています。 可視性の設定により、コンシューマーが対象のサービスに接続できるかどうかが決まります。 次に、制限の最も厳しいオプションから順に可視性の設定オプションを示します。
ロールベースのアクセス制御のみ: ご自身が所有する異なる仮想ネットワークからプライベートに利用することを目的としたサービスである場合、同じ Active Directory テナントに関連付けられたサブスクリプション内のロールベースのアクセスの制御を使用します。 テナント間の可視性は、ロールベースのアクセス制御によって許可されます。
サブスクリプションによる制限: 複数のテナント間で横断的に利用されるサービスの場合、信頼の置ける限られたサブスクリプションに公開を制限することができます。 承認は、事前承認することができます。
お客様のエイリアスを持つすべてのユーザー: サービスをパブリックとし、Private Link サービスのエイリアスを持つユーザーであればだれでも接続を要求できるようにしたい場合は、このオプションを選択してください。
サービス アクセスを制御する
Private Link サービスの公開対象 (可視性設定により制御) のコンシューマーは、自分の仮想ネットワークにプライベート エンドポイントを作成し、対象の Private Link サービスへの接続を要求できます。 プライベート エンドポイント接続は、Private Link サービス オブジェクト上で Pending (保留中) 状態で作成されます。 接続要求の処理は、サービス プロバイダーが行います。 接続の承認、接続の拒否、または接続の削除を行えます。 承認された接続のみが、Private Link サービスにトラフィックを送信できます。
接続を承認するアクションは、Private Link サービスの自動承認プロパティを使用して自動化できます。 自動承認は、サービス プロバイダーがそのサービスへの自動アクセスのためにサブスクリプションのセットを事前に承認する機能です。 サービス プロバイダーが自動承認リストへの追加を行うには、顧客がそのサブスクリプションをオフラインで共有する必要があります。 自動承認は、可視性配列のサブセットです。
可視性は公開設定を制御し、自動承認はサービスの承認設定を制御するものです。 顧客が自動承認リスト内のサブスクリプションから接続を要求した場合、接続は自動的に承認され、確立されます。 サービス プロバイダーは、要求を手動で承認する必要はありません。 自動承認配列に含まれず可視性配列に含まれるサブスクリプションから顧客が接続を要求した場合、要求はサービス プロバイダーに到達します。 サービス プロバイダーは、接続を手動で承認する必要があります。
TCP プロキシ v2 を使用した接続情報の取得
プライベート リンク サービスでは、プライベート エンドポイントから送信されるパケットのソース IP アドレスは、プロバイダーの仮想ネットワークから割り当てられた NAT IP を使用して、サービス プロバイダー側でネットワーク アドレス変換 (NAT) されます。 アプリケーションでは、サービス コンシューマーの実際のソース IP アドレスではなく、割り当てられた NAT IP アドレスを受け取ります。 アプリケーションでコンシューマー側からの実際のソース IP アドレスが必要な場合は、サービスでプロキシ プロトコルを有効にし、プロキシ プロトコル ヘッダーから情報を取得することができます。 ソース IP アドレスに加えて、プロキシ プロトコル ヘッダーには、プライベート エンドポイントの LinkID も含まれます。 ソース IP アドレスと LinkID の組み合わせにより、サービス プロバイダーはコンシューマーを一意に識別できます。
プロキシ プロトコルの詳細については、こちらをご参照ください。
この情報は、次のようにカスタムの Type-Length-Value (TLV) ベクターを使用してエンコードされます。
カスタムの TLV の詳細:
フィールド | 長さ (オクテット) | 説明 |
---|---|---|
Type | 1 | PP2_TYPE_AZURE (0xEE) |
長さ | 2 | 値の長さ |
値 | 1 | PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID (0x01) |
4 | プライベート エンドポイントの LINKID を表す UINT32 (4 バイト)。 リトル エンディアン形式でエンコードされます。 |
注意
サービス プロバイダーは、プロキシ プロトコルが非公開リンク サービスで有効になっている場合 仕様 に従って、プロキシ プロトコル ヘッダーを解析するように、標準のロード バランサーの背後にあるサービスが構成されていることを確認します。 プロキシ プロトコル設定がプライベート リンク サービスで有効になっていても、サービス プロバイダーのサービスがヘッダーを解析するように構成されていない場合、要求は失敗します。 設定がプライベート リンク サービスで有効になっていない場合に、サービス プロバイダーのサービスがプロキシ プロトコル ヘッダーを必要とすると、要求は失敗します。 プロキシ プロトコル設定を有効にすると、プロキシ プロトコル ヘッダーは、ホストからバックエンド仮想マシンへの HTTP/TCP 正常性プローブにも含まれます。 クライアント情報は ヘッダーに含まれません。
PROXYv2 (TLV) プロトコルの一部である一致する LINKID
は、プロパティ linkIdentifier
として PrivateEndpointConnection
にあります。
詳細については、Private Link サービス API に関するページを参照してください。
制限事項
Private Link サービスを使用する場合の既知の制限事項は次のとおりです。
Standard Load Balancer でのみサポートされる。 Basic Load Balancer ではサポートされない。
NIC によってバックエンド プールが構成されている Standard Load Balancer でのみサポートされます。 IP アドレスによってバックエンド プールが構成されている Standard Load Balancer ではサポートされていません。
IPv4 トラフィックのみがサポートされる
TCP および UDP トラフィックのみがサポートされる
Private Link サービスのアイドル タイムアウトは最大 5 分 (300 秒) です。 この制限に達しないようにするには、Private Link サービス経由で接続するアプリケーションでは、その時間よりも低い TCP キープ アライブを使用する必要があります。
種類が "バックエンド プール" に設定されたインバウンド NAT 規則が Azure Private Link Service で機能するには、負荷分散規則を構成する必要があります。