
S3 バケットとの直接的なやり取りを防止したいと考えています。S3 バケットは適切に設定されていますが、S3 からファイルを提供しつつ、単一の IP へのアクセスをロックダウンする (パフォーマンスの高い) 方法を見つけたいと思っています。
私が思い描いているアーキテクチャは次のようなものです。
user request -> proxy web application -> s3 bucket
ユーザーは S3 の使用にさらされたり、その使用を認識されたりすることはありません。私が回避策を探しているデメリットは、すべてのリクエストの CPU 負荷に対して料金を支払うことになり、そもそも S3 を使用する利点の多くが減ってしまうことです。この目標を達成するには、非常に高速で最小限の Web サービスが必要になると思います。
プロキシの利点を無駄にせずに、S3 をユーザーから隠す方法はありますか?
注意:
S3 が安全に構成されているかどうかは考慮したくありません。私の場合、さらなる安全手順を検討する組織上の理由があります。たとえそれが本当に間違った選択であったとしても、ここでの思考実験は楽しいと思います。
さらに、S3 の代わりにサービスを使用するというオプションはありません。ここでは S3 についてのみ説明します。
答え1
IP へのアクセスをロックしたい場合は、IAM 経由でその権限を設定できます。この方法では、リバース プロキシの無駄な操作を行う必要はありません。
グローバル読み取り S3 ポリシーを作成し、リクエストが特定の IP アドレスから送信される必要があるという条件を設定できます。
条件ステートメントの例は次のとおりです。
"Condition" : {
"IpAddress" : {
"aws:SourceIp" : ["192.0.2.0/24", "203.0.113.0/24"]
}
}