Azure Private Link サービスとは

Azure Private Link サービスは、Azure Private Link を使用する独自のサービスに対する参照です。 Azure Standard Load Balancer の背後で実行されている自分のサービスで Private Link アクセスを有効にすると、自分のサービスのコンシューマーがそのサービスに対して独自の VNet からプライベートにアクセスできるようになります。 顧客は、自分の VNet 内にプライベート エンドポイントを作成し、それをこのサービスにマッピングすることができます。 この記事では、サービス プロバイダー側に関連する概念について説明します。

Private link service workflow

図:Azure Private Link サービス。

ワークフロー

Private Link service workflow

図:Azure 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 ロールベースのアクセス制御 (Azure RBAC) アクセス許可を持つサブスクリプション、制限されたサブスクリプションのセット、またはすべての 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 トラフィックで宛先側のネットワーク アドレス変換を実行します。 これにより、ソース (コンシューマー側) と宛先 (サービス プロバイダー) のアドレス空間の間に IP の競合がないことが保証されます。 宛先側 (サービス プロバイダー側) では、NAT IP アドレスは、対象のサービスで受信されたすべてのパケットのソース IP および対象のサービスで送信されたすべてのパケットの宛先 IP として表示されます。
プライベート エンドポイント接続 (privateEndpointConnections) このプロパティでは、Private Link サービスに接続しているプライベート エンドポイントが一覧表示されます。 同じ Private Link サービスに複数のプライベート エンドポイントを接続することができます。サービス プロバイダーは、個々のプライベート エンドポイントの状態を制御できます。
TCP プロキシ v2 (EnableProxyProtocol) このプロパティを使用すると、サービス プロバイダーは TCP プロキシ v2 を使用して、サービス コンシューマーに関する接続情報を取得できます。 サービス プロバイダーは、プロキシ プロトコル v2 ヘッダーを解析できるように受信者構成を設定します。

詳細

  • Private Link サービスには、任意のパブリック リージョン内の承認されたプライベート エンドポイントからアクセスできます。 プライベート エンドポイントには、プライベート VPN または ExpressRoute 接続を使用して、同じ仮想ネットワーク、各リージョンでピアリングされた VNet、グローバルにピアリングされた VNet、およびオンプレミスから到達できます。

  • Private Link サービスを作成すると、リソースのライフサイクルにわたってネットワーク インターフェイスが作成されます。 このインターフェイスは、顧客が管理することはできません。

  • Private Link サービスは、仮想ネットワークおよび Standard Load Balancer と同じリージョンにデプロイする必要があります。

  • 単一の Private Link サービスに対して、異なる VNet、サブスクリプション、または 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 アドレスを追加した後で NAT IP アドレスを削除することはできません。 これは、NAT IP アドレスの削除時にアクティブな接続が影響を受けないようにするためです。

エイリアス

別名は、対象のサービスのグローバルに一意の名前です。 これは、対象のサービスの顧客データをマスクすると同時に、容易に共有できるサービス名を作成するのに役立ちます。 Private Link サービスを作成すると、対象のサービスの別名が Azure によって生成されます。この別名は、顧客と共有することができます。 顧客は、この別名を使用して、対象のサービスへの接続を要求できます。

別名は、3 つの部分から構成されます: <プレフィックス> .GUID. <サフィックス>

  • プレフィックスはサービス名です。 独自のプレフィックスを選択できます。 "別名" は、作成後に変更することはできないため、適切なプレフィックスを選択してください。
  • GUID は、プラットフォームによって提供されます。 これは、名前をグローバルに一意なものにするのに役立ちます。
  • サフィックスは、Azure によって追加されます: <リージョン>.azure.privatelinkservice

完全な別名: プレフィックス。 {GUID}.<リージョン>.azure.privatelinkservice

サービスの公開を制御する

Private Link サービスでは、サービスの公開を制御する可視性の設定に 3 つのオプションが用意されています。 可視性の設定により、コンシューマーが対象のサービスに接続できるかどうかが決まります。 次に、制限の最も厳しいオプションから順に可視性の設定オプションを示します。

  • ロールベースのアクセス制御のみ: ご自身が所有する異なる VNet からプライベートに利用することを目的としたサービスである場合、同じ Active Directory テナントに関連付けられたサブスクリプション内のアクセスの制御メカニズムとして RBAC を使用できます。 注: テナント間の可視性は、RBAC を介して許可されます。
  • サブスクリプションによる制限: 複数のテナント間で横断的に利用されるサービスの場合、信頼の置ける限られたサブスクリプションに公開を制限することができます。 承認は、事前承認することができます。
  • お客様のエイリアスを持つすべてのユーザー: サービスをパブリックとし、Private Link サービスのエイリアスを持つユーザーであればだれでも接続を要求できるようにしたい場合は、このオプションを選択してください。

サービス アクセスを制御する

Private Link サービスの公開対象 (可視性設定により制御) のコンシューマーは、自分の VNet にプライベート エンドポイントを作成し、対象の 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 Services API に関するページを参照してください。

制限事項

Private Link サービスを使用する場合の既知の制限事項は次のとおりです。

  • Standard Load Balancer でのみサポートされる。 Basic Load Balancer ではサポートされない。
  • VM/VMSS を使用するときに NIC によってバックエンド プールが構成されている Standard Load Balancer でのみサポートされる。
  • IPv4 トラフィックのみがサポートされる
  • TCP および UDP トラフィックのみがサポートされる

次のステップ