web-dev-qa-db-ja.com

サーバーレスアプリケーションをVPCに配置すると、より安全になりますか?

計算にはラムダコンテナとファーゲート(タスク)コンテナ、通信にはEventBridge、ストレージにはS3とDynamoDBを使用し、APIゲートウェイ経由でデータを公開するアプリケーションがあります。

私の読書から、PrivateLinkなどを使用してこれらの各サービスをVPCに公開できることがわかります。ただし、すべてのドキュメントは、これがVPCでliveであるEC2およびRDSインスタンスにアクセスするのに役立つことを示唆しているようです。サービス(Lambda、S3、DynamoDBなど)の通信をVPC経由でルーティングすることには、VPCに実際にliveが存在しない場合や、不必要なレベルの複雑さを追加するだけの場合に利点がありますか?応用?

ありがとう

2
Andrew Stock

いずれにしても、AWS LambdaからAWSへのサービス呼び出しはすべてHTTPSであることを念頭に置くと、インターネットがどれほど怖いかによって異なります。

デフォルトでは、すべてのAWS API(SDKが使用するものなど)はインターネット上に存在します。 VPCエンドポイントを使用することで、これらの呼び出しをAWSバックボーンネットワーク経由で強制的に実行し、インターネットを一斉に回避できます。 VPCエンドポイントでは、特定のVPCから特定のサービス(例: VPCに接続されたLambdaは、VPCエンドポイントを使用して、インターネットを経由せずにDynamoDBを呼び出します。

AWSサービスへのアクセスを許可するIAMロールを作成できますが、トラフィックが特定のVPCから送信されている場合にのみ有効です。これはしないでくださいインターネット上のAWS APIをオフにします。役割がVPCを指定していない場合、呼び出されるAWSサービスへのアクセスを許可するIAM役割でインターネット経由でアクセスするユーザーを停止することはできません。

S3バケットポリシーは個々のVPCへのアクセスを制限できるため、インターネット経由で入ってくる誰かが(IAMの役割に関係なく)S3バケットのコンテンツにアクセスできない可能性がありますが、それでも削除できます(IAMへのアクセス権がある場合)このようなアクションを許可する役割)。

最後に、Lambdaからすべてのインターネットアクセスを削除すると、多くの場合、Lambdaにインターネットから任意のコードをダウンロード(および実行)するよう強制するため、Lambdaからインジェクション攻撃を実行することがより困難になります。

1
K Mo