«前の日記(2011-11-04 (Fri)) 最新 次の日記(2011-11-14 (Mon))» 編集

雑記帳


2011-11-11 (Fri) [長年日記]

[AWS] IAMでアクセスキーを変更できるアカウントを作成する

SimpleDBやS3などは、AWSの管理者ではなく、実際の利用者にアクセスキーを渡して使ってもらうことが多い。

以前に書いたように、アクセスキーは90日ごとにに変更することが推奨されている。パスワードを定期的に変更するのと似たようなことなので、アカウントを使用している人が変更できたほうが良い。

ということで、アクセスキーを変更できるポリシーを作ってみた。

{
  "Statement": [
    {
      "Action": [
        "iam:CreateAccessKey",
        "iam:DeleteAccessKey",
        "iam:ListAccessKeys",
        "iam:UpdateAccessKey"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:iam::123456789012:user/user_name"
      ]
    }
  ]
}

アクセスキーに関するアクションは、作成(CreateAccessKey)、削除(DeleteAccessKey)、一覧(ListAccessKeys)、更新(UpdateAccessKey)となる。更新は、アクセスキーの置き換えではなく、ActiveとInactiveの状態を変更するためのアクション。これだけの権限があればアクセスキーの変更ができる。

アクセスキーの変更ができる対象として、user_nameという名前のIAMユーザを指定している。これを指定しない場合は、他のユーザのアクセスキーも変更可能になる。

AWSの各プロダクトごとのIAMのポリシー関連は、IAMのドキュメントのIntegrating with Other AWS Productsからすぐに参照できる。

[AWS] IAMで、S3のバケット内の特定のオブジェクト以下のみ許可する

※ 2013-04-18更新 誤りがあったので訂正。Policyのみの設定で問題なく、Permissionの設定は不要だった。

S3に、いろいろなユーザがアクセスする際に、あるユーザが、あるバケットの特定のオブジェクト以下のみアクセスを許可したい場合の権限を作成してみた。条件としては、以下のとおり。

  • バケット名: bucket_name
  • 許可したいオブジェクト: /path/to/dir
  • バケット名の一覧は見える
  • 対象のバケット以外は、中が見えない
  • 対象のディレクトリ以外は、一覧は見える
  • 対象のディレクトリ内は、自由に読み書きできる

で、なかなかうまく行かなかったので試行錯誤した結果できたのが、以下のポリシー。

{
    "Statement": [
        {
            "Action": "s3:ListAllMyBuckets",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": "s3:ListBuckets",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::backet_name"
        },
        {
            "Action": [
                "s3:*"
             ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::backet_name/path/to/dir/*"
        }
    ]
}

s3:ListAllMyBucketsで、すべてのバケットのリストが見られるように許可。s3:ListBucketsで、対象となるバケットのみ見られるように許可。 最後の部分は、特定のオブジェクトのみ許可、となっている。

これで、期待通り書き込みができるようになる。