AWS IAM のポリシーをアカウントにアタッチする
こんにちは、TypeScript と VS Code、 AWS が好きな bokken (@bokken_) です。
AWS CLI を使っているときに、下記のように AccessDenied エラーが出る事があります。
$ aws iam create-policy --policy-name test1 --policy-document file://policy.json An error occurred (AccessDenied) when calling the CreatePolicy operation: User: arn:aws:iam::000000000000:user/bokken is not authorized to perform: iam:CreatePolicy on resource: policy test1
このエラーは自分のアカウントに権限が無いから起こっています。
AWS は権限周りの設定がやや手間になっているので、以降ではどうやって自分のアカウントに権限を付加するのかを紹介していきます。
目次
全体の流れ
- ポリシーの作成
- アカウントへのポリシーのアタッチ
ポリシーの作成
AWS コンソールにログインして IAM にアクセスします。
そして、下図のポリシーをクリックします。
それからポリシーの作成をクリックします。
独自のポリシーの作成をクリックします。
すると、ポリシードキュメントという権限についての定義を入力する画面が出てきます。
今回は CloudFormation 関係のすべての権限を付加することを考えます。
CloudFormation を扱えるようにするためには、ポリシー名を設定し(今回はCloudFormationAllとします)、下記のJSON形式のポリシードキュメントを設定します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
このとき、Action
の cloudformation:*
の :*
より前の部分を自分が扱いたいサービスにすれば、対象のサービスの権限を付与することができます。
各サービスごとにどういった権限があるかはこちらのAWS のドキュメントから確認できます。
各サービスごとにサービスの名称そのままではないケースがあるので、注意してください。(CloudWatch Logsは cloudwatch
ではなく logs
である、など)
ポリシーの定義ができれば、あとは下図のようにポリシーの作成をクリックすればOKです。
ポリシーのアタッチ
ポリシーを作成した後で今度はユーザーにその権限を付与する必要があります。
ポリシーの作成を終えたあとの画面は下図のようになっているので、ユーザーをクリックします。
対象のユーザー名をクリックします。
そこでアクセス権限の追加をクリックします。
それから既存のポリシーを直接アタッチをクリックします。
そこで検索バーに CloudFormationAll
を入力して CloudFormationAll
にチェックを入れます。
そして管理ポリシーが間違っていなければアクセス権限の追加をクリックします。
すると下図のようにアタッチされたポリシーの一覧に CloudFormationAll
が追加されているはずです。
以上の手順で、AWS CLI から CloudFormation を扱えるようになりました。
まとめ
今回は、CLoudFormation を扱うための IAM を定義しユーザーにアタッチする方法を紹介しました。
この方法で様々な権限を付与できるので必要な権限を設定して適宜アタッチしてください。
良かったら TypeScript 関連や AWS 関連のつぶやきをしているので @bokken_ をフォローしてみてください。
それではより良い AWS ライフを!