cloudpackの開発パートナーさんやプログラム(API/SDK)で、S3(CloudFront)にファイルのアップロードなどの操作を行うことが多々あると思いますが、AWSをフルコントロールできるキーを使う(渡す)のはセキュリティ上よくないので、S3の決まったバケットのみ操作できるIAMアカウントのポリシーを作ってみました。
※今までIAMに関しては、以下にいろいろ書いています。
▼ IAM Command Line Toolkitを使ってELBで利用したSSL証明書の確認
▼ IAMでユーザを作成しAWS Management ConsoleでS3を利用
▼ AWS Management Console (S3)を制限付きで利用
▼ IAMでアカウントを作成するときの流れ
対象バケットをsuz-lab、対象グループもsuz-labとすると、
下記のコマンドで上記のポリシーが作成できます。
▼ バケット一覧の表示
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy01 > -a s3:ListAllMyBuckets > -e Allow > -r arn:aws:s3:::*
▼ バケットの中身を表示
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy02 > -a s3:ListBucket > -e Allow > -r arn:aws:s3:::suz-lab $ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy03 > -a s3:GetBucketLocation > -e Allow > -r arn:aws:s3:::suz-lab
▼ ファイルの取得
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy04 > -a s3:GetObject > -e Allow > -r arn:aws:s3:::suz-lab/*
▼ ファイル/フォルダの削除
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy05 > -a s3:DeleteObject > -e Allow > -r arn:aws:s3:::suz-lab/*
▼ ファイルのアップロード/フォルダの作成
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy06 > -a s3:PutObject > -e Allow > -r arn:aws:s3:::suz-lab/*
▼ パーミッションの取得
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy07 > -a s3:GetObjectAcl > -e Allow > -r arn:aws:s3:::suz-lab/*
▼ パーミッションの設定
$ iam-groupaddpolicy --aws-credential-file credentials.txt > -g suz-lab > -p policy08 > -a s3:PutObjectAcl > -e Allow > -r arn:aws:s3:::suz-lab/*
他にもいろいろとアクションはありますが、こんな感じで問題ないと思います。
詳しくはこちらのAWS Policy Generatorでどうぞ。
これからは、API利用するときも専用の制限付きユーザ作って、
そのキーを使おうと思います。