web-dev-qa-db-ja.com

VPCのHTTPエンドポイントをAWSAPI Gatewayのリソースとして指定できますか?

私の製品(一部のWeb API)がVPCの内部にある、つまり外部アクセスがないという状況があります。このAPIの一部(いくつかのHTTPメソッド)をインターネットからアクセスできるように公開したいと思います。 AWS API Gatewayを使用してこれを達成しようとしていますが、内部ELBエンドポイントをAPIGatewayリソースにすることができないようです。どうすればこれを行うことができますか?

ありがとう、-Vovan

8
Vovan Kuznetsov

これは元々不可能でしたが、APIGatewayがサービスに対して自身を認証するために使用できるクライアント証明書のサポートによって解決されました。これは優れたソリューションであり、引き続き利用可能ですが、サービスをインターネットに公開する必要がありました(少なくともある意味では)。

2017年11月、AWSは、APIGatewayと内部サービス間のネットワークパスを実際にプロビジョニングできる新機能をリリースしました。

Amazon Virtual Private Cloud(VPC)内のHTTP(S)リソースへのアクセスを、パブリックインターネットに直接公開せずに提供できるようになりました。 API Gatewayを使用して、VPCと統合されたAPIエンドポイントを作成できます。 VPCとElasticLoad Balancingによって提供されるネットワークロードバランサー(NLB)の間にVPCリンクを設定することにより、VPCへのエンドポイントを作成します。

https://aws.Amazon.com/about-aws/whats-new/2017/11/Amazon-api-gateway-supports-endpoint-integrations-with-private-vpcs/

歴史的背景は次のとおりです。


現在のところ、これを行うための簡単で確実な方法はありません。APIGatewayにアクセスできるサービスは、パブリックインターネットを介して/公開されている必要があり、このようなリクエストが実際にanyAPI Gatewayデプロイメントから発信されたものであり、yourであることが保証される組み込みの信頼メカニズムはありません。 APIゲートウェイの展開。

Amazonは、API Gatewayからだけでなく、yourAPI Gatewayインスタンスからも確実に送信されたため、バックエンドサービスへのリクエストの認証の問題を解決したようです。以前と同様に、送信元IPアドレスは予測できないため、エンドポイントをインターネットに公開する必要がありますが、APIゲートウェイはクライアントSSL証明書をサポートするようになりました。これは、APIゲートウェイの裏側が自身の表側を認証するために使用します。そのAPIゲートウェイが呼び出しているバックエンドサービス。

Q:Amazon APIGatewayはAmazonVPC内で機能しますか?

いいえ。AmazonAPIGatewayエンドポイントは常にインターネットに公開されています。バックエンド操作へのプロキシ要求も、インターネット上で公的にアクセス可能である必要があります。ただし、Amazon API Gatewayでクライアント側SSL証明書を生成して、バックエンドシステムへのリクエストが証明書の公開鍵を使用してAPIGatewayによって送信されたことを確認できます。

Q:バックエンドを呼び出しているのがAPI Gatewayであることを確認できますか?

はい。 Amazon API Gatewayは、クライアント側のSSL証明書を生成し、その証明書の公開鍵を利用できるようにすることができます。バックエンドへの呼び出しは、生成された証明書を使用して行うことができ、証明書の公開鍵を使用してAmazon APIGatewayから発信された呼び出しを確認できます。

https://aws.Amazon.com/api-gateway/faqs/#security

API Gatewayコンソールでクライアント証明書を生成すると、その証明書の公開鍵が提供されます。セキュリティのため、秘密鍵はAPI Gatewayによって保持され、アクセスできません。 API Gatewayは、SSLをネゴシエートするときに、バックエンドに公開鍵を提示します。同じ公開鍵を提示しないピアはAPIゲートウェイではないため、バックエンドはSSLネゴシエーションを拒否する必要があります。

悪意のあるアクターが公開鍵を所有するようになった場合でも、API Gatewayにのみ知られている結合された秘密鍵がないため、SSLを介してバックエンドと通信することはできません。 (相互作用のあなたの側はあなたのSSL証明書を使用して暗号化され、それはあなただけが知っているもちろん、交配された秘密鍵です。)

この機能は、API GatewayのHTTPプロキシ機能のユーティリティの重要な制限であると以前は思われていたものに対処します...実際、上記の改訂された情報を発見したとき、私は自分自身を疑うようになりました。ずっとそこにいました、そして私はどういうわけかそれを見落とすことができましたか? Wayback Machineはノーと言っています、それは新しいです。 この情報は2015年9月に追加されました。

11

これはやや遠回りですが、Lambda関数を介してVPC内にあるWebサービスエンドポイントをプロキシできます。そのLambda関数は、APIGatewayから直接呼び出すことができます。このブログ post は、その方法の詳細を示しています。

3
occasl