AWS PrivateLinkとVPCエンドポイントの整理

PrivateLink についてドキュメントを読んだので、自分用にメモをまとめました。

概要

AWS PrivateLinkは、VPC 間、オンプレミス環境からの接続、または AWS サービスへのプライベート接続を提供します。これにより、パブリックインターネットを介さずに、安全にサービスにアクセスすることが可能です。

用語の定義

  • Service Providers
    サービスの所有者であり、サービスを提供する主体です。AWS 自身、AWS パートナー、その他の AWS アカウントなどが該当します。

  • Service Consumers
    サービスの利用者であり、エンドポイントサービスにアクセスする人やシステムのことです。

VPC エンドポイントとエンドポイントサービスの違い

AWS の VPC には、以下の 2 種類のサービスがあります:

  1. エンドポイントサービス (Endpoint Services)
    Service Providers が、サービスコンシューマに向けて提供するものです。

  2. VPC エンドポイント (VPC Endpoints)
    サービスコンシューマが、Service Providers の提供するサービスに接続するために使用します。VPC エンドポイントには、以下の 3 つの種類があります。

Endpoint Services

  • ロードバランサーの指定
    Service Providers は、エンドポイントサービスを作成する際に特定のロードバランサーを指定する必要があります。

  • リクエストのルーティング
    ロードバランサーは、サービスコンシューマから受け取ったリクエストを、目的のサービスへルーティングします。

  • アクセス許可の設定
    デフォルトでは、エンドポイントサービスはサービスコンシューマに対して利用可能ではありません。特定の AWS プリンシパルに接続を許可する権限を追加する必要があります。

  • サービス名の管理
    各エンドポイントサービスは、一意のサービス名で識別されます。サービスコンシューマは VPC エンドポイントを作成する際に、このサービス名を指定する必要があります。Service Providers は、サービス名をサービスコンシューマと共有する必要があります。

VPC Endpoints

VPC エンドポイントは、サービスコンシューマがエンドポイントサービスに接続するために作成します。

VPC エンドポイントの種類

  1. Interface Endpoints (インターフェースエンドポイント)
    エンドポイントサービスに向けて TCP トラフィックを流すためのものです。DNS を使用して、エンドポイントサービスの宛先を解決します。

  2. Gateway Load Balancer Endpoints (ゲートウェイロードバランサーエンドポイント)
    プライベート IP アドレスを使用し、レイヤー 3 またはレイヤー 4 で動作します。受信したトラフィックを複数のアベイラビリティーゾーン内のターゲットに送信し、負荷分散します。

  3. Gateway Endpoints (ゲートウェイエンドポイント)
    Amazon S3 や DynamoDB へのトラフィックを流すために使用します。ゲートウェイエンドポイントは AWS PrivateLink を使用せず、ルートテーブルを介してトラフィックを送ります。

エンドポイントネットワークインターフェース

エンドポイントネットワークインターフェースは、リクエスターが管理するネットワークインターフェースです。エンドポイントサービスへのトラフィックのエントリポイントとして機能し、以下の特徴があります:

  • IPv4/IPv6 サポート
    IPv4 アドレスと IPv6 アドレスの両方をサポートしています。ただし、IPv6 アドレスを持つ場合、denyAllIgwTraffic設定が自動的に有効になり、インターネットからのアクセスはできません。ただし、AWS 内部ネットワーク内からのアクセスは可能です。

  • IP アドレスの固定
    一度設定されると、エンドポイントネットワークインターフェースの IP アドレスはエンドポイントのライフタイム中、変更されることはありません。

AWS PrivateLinkは、VPC エンドポイント(サービスコンシューマ側)とエンドポイントサービス(Service Providers 側)をプライベートに接続する仕組みです。VPC エンドポイントからエンドポイントサービスへのトラフィックはすべて AWS の内部ネットワークを通じて通信され、パブリックインターネットは経由しません。

  • パブリックホストゾーン
    パブリックホストゾーン内のレコードは、インターネット上でのトラフィックを制御します。

  • プライベートホストゾーン
    プライベートホストゾーン内のレコードは、特定の VPC 内のみでトラフィックをルーティングします。

スプリットホライズン DNS

スプリットホライズン DNSとは、同じドメイン名を使って、パブリックウェブサイトとプライベートな VPC 内のエンドポイントサービスの両方に異なる解決結果を返す方法です。具体的には:

  • VPC 内の DNS リクエスト
    VPC エンドポイントのプライベート IP アドレスに解決されます。

  • 外部からのリクエスト
    パブリックエンドポイントに解決されます。

この仕組みにより、同じドメイン名でパブリックとプライベートのサービスを共存させることが可能です。

VPC エンドポイントとエンドポイントサービスの組み合わせ

VPC エンドポイントとエンドポイントサービスを組み合わせて使用することで、以下のようなメリットがあります:

  • プライベート接続の確立
    別の VPC や別の AWS アカウントから、インターネットを介さずにプライベートにサービスを利用できます。

  • マルチアカウント構成や異なる VPC 間での接続
    特に、マルチアカウント環境や異なる VPC 間での安全な接続が必要な場合に有効です。

具体的な利用例

ある VPC にホストされた社内 API に対して、他の VPC からアクセスする場合の設定手順:

  1. サービス提供 VPCにエンドポイントサービスを作成し、他の VPC に対してそのサービスを公開します。
  2. アクセス側 VPCでインターフェースエンドポイントを作成し、エンドポイントサービスに接続します。

参考サイト

関連記事