雑記帳
2012-01-24 (Tue) [長年日記]
■ [AWS] Amazon S3でアクセス指定かつ期限付きURLの生成
以前に、S3でのアクセス制限と時限式のURLを生成する方法を書いた。
これらを同時に利用することができないかどうか試してみた。
まずは、バケットポリシーで制限をかけた状態で、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が含まれるので、そのユーザのポリシーになる、ということのようだ。