Amazon S3 のセキュリティをガチガチに考えてみる

ブロックパブリックアクセスを確認する

Amazon S3 ブロックパブリックアクセスの使用

Amazon S3 には、バケットとアカウント用のブロックパブリックアクセス設定があり、Amazon S3 リソースへのパブリックアクセスを管理するのに役立ちます。デフォルトでは、新しいバケットとオブジェクトはパブリックアクセスを許可しませんが、ユーザーはパブリックアクセスを許可するようにバケットポリシーまたはオブジェクトのアクセス許可を変更できます。Amazon S3 ブロックパブリックアクセス設定は、これらのポリシーとアクセス許可をオーバーライドするため、これらのリソースへのパブリックアクセスを制限できます。Amazon S3 ブロックパブリックアクセスを使用すると、アカウント管理者とバケット所有者は、リソースの作成方法に関係なく、強制される Amazon S3 リソースへのパブリックアクセスを制限するために集中管理を簡単に設定できます。

あらゆるルールより優先されるパブリックアクセスブロック制御ポリシーデフォルトでは有効可されている

データの保存先として S3 を利用するのであればこれだけでも十分な気がするけど
もう少し考えてみる

VPC S3 エンドポイントの作成

VPC エンドポイント

サービスの選択

利用する 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 の優先順位って結構強いんだね

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)
Share Comments
comments powered by Disqus