🧰

S3のアクセス制御についてメモ

2022/11/23に公開

はじめに

「AWS Certified Solutions Architect - Associate」の取得に向けて勉強中です。
S3に関するアクセス制御は、自分の中で整理しきれていない部分があるので
参考書などを見ながらメモ。

前提

まず、アクセス制御の方法として3種類ある。

  • バケットポリシー
  • ACL
  • IAM

基本的に、いずれかの制御で1つでも明示的にアクセス拒否の設定をしていた場合は、
拒否の設定が優先される。
許可も拒否もされていなければ、拒否の設定と同義となる。

概要

バケットポリシー

バケット単位で制御を設定する。
バケットに入っているすべてのオブジェクトに適用されるので、
公開/非公開のアクセス制御を全体的に行いたいときに使う。

ACL(アクセスコントロールリスト)

上記のバケットポリシーよりも細かく、オブジェクト単位でアクセス制御が出来る。
ACLでは人為的に「許可」の設定しかできない。(デフォルトは拒否)
基本的にはバケットポリシーで事足りるし、AWS公式もACLの無効を推奨している。

Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなり、オブジェクトごとに個別にアクセスを制御する必要がある異常な状況を除き、ACL を無効にすることをお勧めします。

IAM

他のAWSサービスと同様に、ユーザ/ロール単位で制御が可能。

機能比較

制御方法 バケットポリシー ACL IAM
AWSアカウント単位 ×
IAMユーザ/ロール単位 ×
バケット単位
オブジェクト単位
IP/ドメイン単位 ×

おまけ

署名付きURL

特定のオブジェクトに対し、一時的にアクセスを許可したい場合に利用。
オブジェクトにアクセスするURLを知っていれば、良くも悪くも誰でもアクセスできる。

参考

Discussion