Endpoint小林陸2022.12.15この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。S3バケットポリシーを使用してEC2の持つグローバルIPで制御したことはあったのですが、VPC内のプライベートIPの場合はどうすればよいのだろうと思ったのでやってみました。今回はGateway型のVPCエンドポイントをS3へアクセスするEC2のプライベートIPアドレスで、S3のアクセスを制限する検証を行いました。グローバルIPアドレスで制御する場合グローバルIPアドレスで制御する場合は以下のようにaws:SourceIpを使用して制御できます。以下のバケットポリシーは特定のグローバルIPアドレス以外からのPutObject、GetObject、ListBucketを禁止するものになります。]}上記のポリシーの「X.X.X.X」をグローバルIPアドレスにすることで動作します。「X.X.X.X」をプライベートIPアドレスにしようとすると以下の画像のようにエラーが発生します。結論としてはドキュメントにも記載されている通りバケットポリシーの条件を「aws:VpcSourceIp」に変更し、VPCエンドポイントを使用してプライベートにアクセスさせることで解決できます。バケットポリシーは以下のようになります。]}上記のポリシーの「X.X.X.X」をプライベートIPアドレスにすることで動作します。マネジメントコンソールからS3のVPCエンドポイントを作成する場合は以下のドキュメントを参考にしてください。おけるエンドポイントVPCエンドポイントをCloudFormationで作成してみました。テンプレートは以下になります。CLIコマンドでCloudFormationを実行します。ParameterKey=VpcId,ParameterValue=VPCIDVPCエンドポイントとバケットポリシーを設定した状態で、該当のIPアドレスを持つEC2からS3バケット内を以下のコマンドで覗くと成功することが確認できます。該当のIPアドレスを持っていないEC2からはAccessDeniedで失敗します。s3://S3バケット名さいごに今回はIPアドレスでアクセスを制御するバケットポリシーの検証をやってみました。ポリシーの条件周りは使ったことの無いものも多くあるので今後も学習を続けていきたいと思います。