目次
S3へのIAMポリシーとバケットポリシーのまとめ表
| No. | IAMポリシー | S3バケット ポリシー |
判断ロジック | 結果 |
|---|---|---|---|---|
| 1 | Allow | Allow | 両者一致 | アクセス許可 |
| 2 | Allow | Deny | 明示的な拒否が優先 | アクセス拒否 |
| 3 | Allow | バケットポリシー無 | 明示的な許可あり | アクセス許可 |
| 4 | Deny | Allow | 明示的な拒否が優先 | アクセス拒否 |
| 5 | Deny | Deny | 両者一致 | アクセス拒否 |
| 6 | Deny | バケットポリシー無 | 明示的な拒否が優先 | アクセス拒否 |
| 7 | IAMポリシー無/ 匿名アクセス |
Allow | 明示的な許可あり | アクセス許可 |
| 8 | IAMポリシー無/ 匿名アクセス |
Deny | 明示的な拒否が優先 | アクセス拒否 |
| 9 | IAMポリシー無/ 匿名アクセス |
バケットポリシー無 | 明示的に許可がないと拒否 | アクセス拒否 |
No.7:匿名アクセスが可能になるのは、明示的にパブリク設定がされている時のみ
匿名アクセス:認証情報(AWSアカウント・IAMユーザー・ロールなど)を一切提示せずにAWSリソースへアクセスすること
IAMポリシーの仕様
- デフォルト拒否: 何も許可されていない状態からスタート
- 明示的な許可が必要: Allowがないと操作不可
- 明示的な拒否が最優先: どんなAllowがあっても、Denyがあれば拒否される
S3バケットポリシーの評価方法
上から順に評価するわけではありません。
すべてのステートメントを評価します。Denyがあれば拒否されます。
EC2からS3へのアクセスとアカウント内外の関係
EC2からS3へアクセスする場合で
| 同一のアカウント内でのアクセスの場合 | IAMポリシーまたはS3バケットポリシーのどちらかで許可されていればアクセスできます(※)。 基本は、IAMポリシーに操作の許可を与えバケットポリシーの許可は不要です。 |
| 異なるアカウントでのアクセスの場合 | IAMポリシーとS3バケットポリシーの両方で許可されている必要があります。 |
※S3バケットポリシーに記載する場合、S3バケットポリシーにアクセスするIAMロールの記載は必要です。
許可されていない場合でEC2からS3へaws lsコマンドのでアクセスした場合以下のアクセスできないというメッセージが出ます。
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
関連の記事
