これらを同時に利用することができないか調査してみました。 まずは、バケットポリシーで制限をかけた状態で、Pre-signed URLを利用して
時限式のURLを生成します。
しかし、正しくアクセス制限が効かない状態になってしまいました。
これは、Pre-signed URLを生成した場合には、Pre-signed URLを生成したアカウントのポリシーで、
バケットポリシーを上書きしてしまう為のようです。
その為、Pre-signed URLを使用してアクセス制限を行う場合には、IAMでアカウントを作成して、
そのアカウントのポリシーで、S3へのアクセス制限を行えば良いとのことです。
{
"Statement": [{
"Effect": "Allow",
"Action": [ "s3:GetObject" ],
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringEquals": { "aws:SourceIp": "198.51.100.0/24" }}
}]
}
この場合、対象のバケットの設定はデフォルトのままで良く、このユーザのアクセスキーIDを使って、Pre-signed URLを生成します。
これにより、特定のIPアドレスからのみアクセス可能かつ、期間限定のURLとなります。
Pre-signed URLには、当該ユーザのアクセスキーIDが含まれるので、そのユーザのポリシーになる
ということのようです。
こちらの記事はなかの人(muramasa64)監修のもと掲載しています。
元記事は、こちら

0 コメント:
コメントを投稿