#1.バケットポリシー#
バケット単位で誰がアクセスできるかを制御する。
勿論、アクセスできない。(AccessDenied)
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>F7D8AC35B037C93B</RequestId>
<HostId>
Vv44X6WjZKKZUMU4B+VJNY0cpvav4Fa9+oYxiHG/GUNZxjQ2wfo2/K++I4enksB7bsFDDkstYY8=
</HostId>
</Error>
[アクセス許可]-[バケットポリシー]より定義するとアクセス可能となる。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1554707441515",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3::: /*"
}
]
}
#2.IAMポリシー#
IAMポリシーによって、S3を操作できるユーザーを制限する。
#3.ACL#
オブジェクト単位でアクセス制御する時に向いている。
- バケットポリシーやIAMポリシーが優先される。
- 通常はバケットポリシーを使う。(AWS Black1 Belt より)
#4.パブリックアクセス設定#
参考:S3で誤ったデータの公開を防ぐパブリックアクセス設定機能が追加されました
誤ってバケット、オブジェクトを公開してしまうという危険性があります。
例えば、ACLで意図しないオブジェクトが公開状態になっているケースを考えたとします。
管理者は気づきづらい状態ですが、この設定を有効にしておくことで非公開にできます。
パブリックアクセス設定 | 説明 |
---|---|
新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする | パブリックなACL設定、オブジェクトのアップロードをさせない。 |
任意のアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする | パブリックなACL設定をしていても、それを無力化する。 |
新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする | パブリックなバケットポリシーの設定をさせない。 |
任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする | パブリックなアクセス設定をもつバケットに対して、パブリックなアクセス、クロスアカウントでのアクセスを無力化する。 |
例えば、[新規のパブリックバケットポリシーをブロックする (推奨)]のチェックを外さないと、
「1.バケットポリシー」を設定しても以下のとおり、アクセス拒否となるので焦らないように。
#5.AWSアカウントレベルとIAMユーザーレベル#
アクセスコントロールタイプ | AWSアカウントレベルの制御 | IAMユーザレベルの制御 |
---|---|---|
ACL | ○ | ☓ |
バケットポリシー | ○ | ○ |
IAMポリシー | ☓ | ○ |