AWS:S3におけるアクセス許可設定が覚えられないので改めてまとめ
目次
デフォルト設定
まずは、デフォルトの設定を確認します。 デフォルトでは
- すべてのリソースがプライベート=作成者(AWS アカウント)のみがアクセス可能
となっています。 IAMユーザやIAMロールを使用してバケットの作成やオブジェクトのアップロードをした場合は、そのユーザ・ロールが所属するAWSアカウントが「作成者」になります。
以下は、開発者ガイドの抜粋です。
デフォルトでは、Amazon S3 のすべてのリソース — バケット、オブジェクト、関連サブリソース (lifecycle 設定や website 設定など) — はプライベートであり、リソースの所有者、すなわちそのリソースを作成した AWS アカウントだけがリソースにアクセスできます。 リソースの所有者は、アクセスポリシーを作成することにより、他のユーザーにアクセス許可を付与することもできます。
アクセス許可の設定
アクセス許可については、以下を決定します。
- ユーザ : 許可を取得するユーザー
- リソース : 許可の対象S3リソース
- アクション: 許可するアクション
つまりは、「誰に」「何を」「どうする」許可をあたえるのか、を決定するのがアクセス許可ということですね。 そしてどのようなアクセス許可を設定するのかを記述したものを「アクセスポリシー」と呼びます。
アクセスポリシー
どのようなアクセス許可を設定するのかを記述したものになります。 アクセスポリシーとしてアクセス許可の内容を記述し、それらを
- リソース(バケットやオブジェクト)
- ユーザー(IAMユーザー・グループ・ロール)
に関連付けることができます。 アクセスポリシーは関連付ける対象に応じて、リソースベースのポリシーとユーザベースのポリシーに分類されます。
リソースベースのポリシー
リソースベースのポリシーには、以下の2種類があります。
ユーザベースのポリシー
リソースベースの時と同様にまとめると、上記の通りになります。 アクセスポリシーを作成して、それをIAMユーザ/IAMグループ/IAMロールに割り当てます。基本的にはIAMを用いた各種リソースへのアクセス許可・制限にのっとったもので、特別なことはありません。
ACLによるアクセス許可
各リソース内のサブリソースとしてACLがアタッチされており、
- ユーザ
- アクション
を指定することで、アクセスコントロールを行います。上で述べたアクセス許可にて3つの内2つのみで、残りの1つリソースがありませんが、リソースは実質どのリソースにアタッチするかという時点で決定しています。
「ユーザ」および「アクション」が書かれたACLを基にして、
という動作をします。
バケットまたはオブジェクトを作成した際には、デフォルトのACLが作成されます。デフォルトのACLは、リソース所有者に対してすべてのアクションを許可する内容となっています。
「ユーザ」として選択できるのは、
のいずれかです。 また、AWSアカウントの代わりにAmazonS3の定義済みグループを許可付与者として設定することができます。AmazonS3の定義済みグループは下記の3つのいずれかになります。
- Authenticated Users グループ(すべてのAWSアカウント)
- All Users グループ (すべてのインターネットユーザ)
- Log Delivery グループ(サーバアクセスログを記録するための特殊なグループ)
「アクション」として選択できるのは、下記の5つです。ポリシーでのアクセスコントロールに比べて、ACLの場合はあまりアクションを細かく設定することはできません。
- READ
- WRITE
- READ_ACP
- WRITE_ACP
- FULL_CONTROL
各アクションの内容はこちらの「付与できるアクセス許可」にあるので、ご参照ください。
バケットポリシーによるアクセス許可
ポリシーには、
- プリンシパル(ユーザ)
- リソース
- アクション
の3つに加えて、さらに細かくアクセスをコントロールするために、
- エフェクト
- 条件
を指定します。「エフェクト」は「許可」または「拒否」の選択です。ACLは「許可」のみでしたが、ポリシーでは「拒否」も設定できます。「条件」は「使用しているソースIP」といった追加要素を指定して、アクセス許可(及び拒否)をする対象をより限定的にすることができます。
各項目の詳細は以下にまとまっているので、省略します。
全体的にポリシーのほうがACLよりも詳細なアクセスコントロールができるようです。
参考
- Amazon S3 での Identity and Access Management - Amazon Simple Storage Service
- アクセス管理の概要 - Amazon Simple Storage Service
- S3のアクセスコントロールまとめ - Qiita
- アクセスコントロールリスト (ACL) の概要 - Amazon Simple Storage Service
- Amazon S3 サーバーアクセスのログ記録 - Amazon Simple Storage Service
- Amazon S3 条件キー - Amazon Simple Storage Service