2011年3月11日金曜日

"AWS Management Console (S3)"を制限付きで利用

スズキです。

こちらでも紹介しましたが、IAMで作成したユーザーは、
最初ポリシーが何も定義されてないので、
"AWS Management Console (S3)"にログインしても、
以下のように、何も表示されません。


まず、バケット一覧を表示するには、下記コマンドで、
"s3:ListAllMyBuckets"アクションを"arn:aws:s3:::*"に許可します。

$ ./iam-useraddpolicy --aws-credential-file credentials.txt ¥
> -u suzuki ¥
> -p policy01 ¥
> -a s3:ListAllMyBuckets ¥
> -e Allow ¥
> -r arn:aws:s3:::*

これで、以下のようにバケット一覧が表示されます。


ただし、この状態では、以下のようにバケットの中身を閲覧することはできません。


バケットの中身も閲覧できるようにするには下記コマンドで、
"s3:ListBucket"アクションと"s3:GetBucketLocation"アクションを、
特定バケット(s3:::us-east-1.emr.suz-lab.com)に許可する必要があります。

※すべてのバケットを閲覧するには、リソースを"arn:aws:s3:::*"とすればOKです。


$ ./iam-useraddpolicy --aws-credential-file credentials.txt ¥
> -u suzuki ¥
> -a s3:ListBucket ¥
> -e Allow -p test11 ¥
> -r arn:aws:s3:::us-east-1.emr.suz-lab.com

$ ./iam-useraddpolicy --aws-credential-file credentials.txt ¥
> -u suzuki ¥
> -p test12 ¥
> -a s3:GetBucketLocation ¥
> -e Allow ¥
> -r arn:aws:s3:::us-east-1.emr.suz-lab.com

これで、以下のようにバケットの中身を閲覧することができるようになりました。
(上記コマンドでは他のバケットは閲覧できないままです)


バケット内のディレクトリも閲覧できます。


ただし、この状態だとファイルのダウンロードができません。
特定ディレクトリ(output)のファイルのみダウンロードしたい場合は、
下記のコマンドで、"s3:GetObject"を特定ディレクトリ内のファイル
(arn:aws:s3:::us-east-1.emr.suz-lab.com/output/*)に許可する必要があります。

$ ./iam-useraddpolicy --aws-credential-file credentials.txt ¥
> -u suzuki ¥
> -p test21 ¥
> -a s3:GetObject ¥
> -e Allow ¥
> -r arn:aws:s3:::us-east-1.emr.suz-lab.com/output/*

これで"AWS Management Console (S3)"で、
閲覧は"us-east-1.emr.suz-lab.com/"のみ、
ダウンロードは"us-east-1.emr.suz-lab.com/output/"のみ可能なように
設定することができました。

他の操作も同様の設定すれば大丈夫でしょう。
--------
http://www.suz-lab.com

0 コメント: