ブロックパブリックアクセスを確認する
Amazon S3 には、バケットとアカウント用のブロックパブリックアクセス設定があり、Amazon S3 リソースへのパブリックアクセスを管理するのに役立ちます。デフォルトでは、新しいバケットとオブジェクトはパブリックアクセスを許可しませんが、ユーザーはパブリックアクセスを許可するようにバケットポリシーまたはオブジェクトのアクセス許可を変更できます。Amazon S3 ブロックパブリックアクセス設定は、これらのポリシーとアクセス許可をオーバーライドするため、これらのリソースへのパブリックアクセスを制限できます。Amazon S3 ブロックパブリックアクセスを使用すると、アカウント管理者とバケット所有者は、リソースの作成方法に関係なく、強制される Amazon S3 リソースへのパブリックアクセスを制限するために集中管理を簡単に設定できます。
あらゆるルールより優先されるパブリックアクセスブロック制御ポリシーデフォルトでは有効可されている
データの保存先として S3 を利用するのであればこれだけでも十分な気がするけど
もう少し考えてみる
VPC S3 エンドポイントの作成
サービスの選択
利用する VPC の指定
アクセスポリシーの設定
デフォルトだとフルアクセス
VPC単位でエンドポイント作成のためある程度は制限されるけど、
さらに制限したければアクセスするサーバの ローカル IP に絞るのもいいかも
エンドポイントを作成すればシステム上 VPC 内からリクエスト出す場合は外部に出ていかなくなる
S3 バケットポリシー
S3 のバケットポリシーを設定してアクセス許可を VPC 内の IP からのみに制限する
ポリシージェネレーターからポリシーを作成
作成したポリシーを貼り付けて保存
しかしこれでも IAM で許可権限を与えられているとアクセスは出来てしまう
IAM のアクセス拠点制限
IAM で許可されているユーザーのアクセス許可設定を S3 同様にカスタマイズする
IAM よりカスタムポリシーの作成
作成したポリシーを ロール、グループ、あるいは ユーザーに付与する
サーバ側からバケットにアクセスすると
[hogehoge@localhost ~]$ aws s3 ls s3://bucket-name/
2017-10-25 19:02:09 8 index.html
[hogehoge@localhost ~]$
ちゃんと見えるけど
その他の端末からアクセスしようとすると
PS C:\Users\user-name\Desktop> aws s3 ls s3://bucket-name/
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
アクセスが拒否されるようになった
バケットの公開・非公開、バケットポリシーだけではまだ IAM 経由で外部からアクセス出来てしまうため、
用途とアクセス元が決まっているのであればきちんとアクセス制御したほうがいいね
IAM の優先順位って結構強いんだね