«前の日記(2012-01-01 (Sun)) 最新 次の日記(2012-01-31 (Tue))» 編集

雑記帳


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が含まれるので、そのユーザのポリシーになる、ということのようだ。