S3オブジェクトにアクセス制限を行う方法は、以下4つありますが・・

  • バケットポリシー
  • IAMポリシー
  • ACL
  • クエリ文字列認証



(本文とは関係ありません。LoggaWigglerさん撮影)

弊社では基本的にはバケットポリシーとIAMを常用しています。

稼働後はバケットポリシーだけでも十分運用できるのですが、
セキュリティ上の理由や人為的なミスを抑えるために
開発者ごとに権限を制限すること、ありますよね。
そういうときはIAM。さいこー

(ところでIAMもすっごくよくできてはいるんですが、
 バケットポリシー様におかれましては
 あまりに柔軟堅牢で、感動の涙がでるレベルです。
 なのでいずれバケットポリシーだけの記事を立て、
 弊社の実例をもとにポリシーファイルのサンプルを載せつつ
 どういうケースでどう役立つかをご紹介します)

 

さてでは、これら4つはどう使い分けるのがいいのか。
僕はこうしています。

  • IAMポリシー
    サービス関係各位のアクセス制御を行いたいとき
     
  • クエリ文字列認証
    失効日付のある一時的なアクセスを許可したいとき
    または、一時的に関係者にのみ公開したいとき
     
  • ACL
    閲覧制限のあるバケットの中で、
    「このオブジェクトだけ全員に共有したい!」があるとき
     
  • バケットポリシー
    それ以外すべてのアクセス制御

 

なぜこのように使っているかは、今後書くそれぞれの記事で。。

 

とはいえ、

最初に知っておくべきアクセス制御に関する情報がふたつ。

 

・デフォルトでは外部からの公開は一切許可されていない

・4つのうち、1つでも「アクセス許可」されていれば、アクセスできる

アクセス制御っていうくらいなので
取り急ぎは秘密にしておきたい情報を扱いますよね。
意図しない外部公開が起こらないよう気をつけましょう!

 

-- 

公式のドキュメントとS3の基本がわかる@shot6さんの素敵スライドはこちら

アクセスコントロール - Amazon Simple Storage Service
S3 -ほぼ週刊AWSマイスターシリーズ第2回-