2019.07.31修正
Amazon S3の表記が変更されていたので、一部修正しました。
少し前にAmazon S3からの情報漏洩事故が世間を賑わしていました。
Yahoo! ニュース:相次ぐAmazon S3の設定ミスによる情報漏えい事故
https://news.yahoo.co.jp/byline/ohmototakashi/20171106-00077827/
Amazon S3に個人情報や社外秘情報などを保存する場合には、セキュリティの設定に注意が必要です。
S3上でのセキュリティ設定箇所は、2018年12月現在5カ所あります。
- アカウント全体のパブリックアクセス設定
- バケット毎のパブリックアクセス設定
- バケット毎のアクセスコントロールリスト
- バケット毎のバケットポリシー
- ファイル毎のパブリック設定
アカウント全体/バケット毎のパブリックアクセス設定
「アカウント全体のパブリックアクセス設定」と「バケット毎のパブリックアクセス設定」は2018年11月に追加されました。
相次ぐ事故を受けて追加された機能であり、現時点では最も強力なセキュリティ設定です。
設定元の差異はありますが、どちらも4つのセキュリティ設定機能があります。
- 新しいアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
- 任意のアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
- 新しいパブリックバケットポリシーを介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
- 任意のパブリックバケットポリシーを介して、バケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする
4つとも本機能が追加される前に作成されたバケットに対しては無効になっていますが、新規に作成する場合にはデフォルト値は有効になっています。
新しいアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
新規にファイルをアップロードする際に、公開状態でアップロードされるのを防止します。
任意のアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
バケットとファイルを非公開状態で上書きする機能です。
どれかのファイルが公開状態になっているため、とりあえず一括で非公開にしたいという場合に重宝しそうです。
新しいパブリックバケットポリシーを介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
後述の「バケットポリシー」の編集時に、公開状態になるのを防止する機能です。
任意のパブリックバケットポリシーを介して、バケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする
「バケットポリシー」で公開状態になっていたとしても、アクセスを禁止します。
また、他のアカウントからのアクセスも禁止します。
バケット毎のアクセスコントロールリスト
「バケットアクセス権限の読み取り」や「バケットアクセス権限の書き込み」は有効にすべきではないと感覚的にわかりますが、「オブジェクトの一覧」「オブジェクトの書き込み」については、有効化している場合もあるかもしれません。
オブジェクトの一覧やオブジェクトの書き込みを有効にした場合ですが、次のようなことが可能です。
- A社が作成した「バケットA」の一覧が、A社以外のアカウントで見える
- A社が作成した「バケットA」に、A社以外のアカウントでファイルのアップロードができる
これらはクロスアカウントによる脆弱性です。
一覧が取得できる場合、直接的にファイルの中身が見られないとしても、ファイル名から情報を推察することで、情報が漏洩するということもあるかもしれません。
例えば、「B社への卸値.xlsx」や「C社との協業プラン.pptx」のようなファイル名の場合、他社との取引有無や営業戦略などが競合会社に知られてしまうかもしれません。
バケット毎のバケットポリシー
バケットポリシーはバケットに対する操作権限の設定や、特定のIPやVPCからのみアクセスできるようにするなど、細かい制御が可能です。
例えば、ディレクトリ毎にバケット操作権限を変更するということや、社内からのみアクセス可能にするということが実現できます。
Amazon – バケットポリシーの例
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/example-bucket-policies.html
ファイル毎のバケットポリシー
「オブジェクトの読み取り」が有効な場合、ファイルにURLでアクセスできます。
バケット全体の「オブジェクトの一覧」のパブリックアクセスを無効にしている場合には、ファイルを入手するには適当なURLを叩いて探し当てる必要があるため、流出する可能性は低くなりますが、有効な場合にはファイル名が一覧に表示されているため、容易にファイルが取得されてしまいます。
まとめ
Amazon S3はURLでアクセス可能なクラウドストレージとして非常に便利です。
セキュリティの設定箇所が多く複雑ですが、完全非公開で利用するのであればひとまずパブリックアクセス設定を全て有効化にすることをお勧めします。