S3アップロード専用のAWSアクセスキーを作成する

先日S3にブラウザから直接アップロードする機能を作成しましたがAWSアクセスキーが
クライアントに見えてしまうのはセキュリティ的に望ましくないのでS3アップロード専用の
アカウントを作成します。ここではIAMを使用する

IAMポリシーを作成する

AWS Policy Generator
こちらのジェネレータでS3のアップロードのみ可能なポリシーを作成する

Select Type of Policy IAM Policy
Effect Allow
AWS Service Amazon S3
Actions PutObject
ARN arn:aws:s3:::/

ARNではS3上のパスを指定する必要がある
特定のバケット配下にアップロードを許可する場合は以下のように指定する

arn:aws:s3:::【バケット名】/*

ここではS3アップロードのみを許可するため以下ポリシーとなる

{
  "Statement": [
    {
      "Sid": "Stmt1347416638923",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::【バケット名】/*"
    }
  ]
}

ManagementConsoleにも同様のジェネレータ機能があるのでそちらで作成してもよい。

IAMグループを作成する

ManagementConsoleの「IAM」->「Groups」->「Create New Group」から作成できる
前の手順で作成したIAMポリシーを設定します

IAMユーザを作成する

ManagementConsoleの「IAM」->「Users」->「Create New User」から作成できる
S3アップロード専用のユーザを作成します。ここでは名前を入れるだけ
f:id:yustam:20120912113522j:image
作成するとAWSアクセスキーとシークレットキーが表示されるのでメモする

IAMユーザをグループに所属させる

f:id:yustam:20120912113705j:image
作成したIAMユーザを選択しIAMグループに所属させる
f:id:yustam:20120912113741j:image

以上。