【AWS】aws-cliでIAMの管理ポリシー・インラインポリシーを操作する

2015.04.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは植木和樹です。本日はaws-cliを用いたIAMのポリシーの操作コマンドがとても多くて戸惑ってしまったので、作業時にメモした内容を備忘録として掲載しました。

今年(2015年)の初めにIAMに管理ポリシー(Managed Policy)という新しい機能が追加されました。

これまでのポリシーはインラインポリシー(Inline Policy)と呼ばれ、これに管理ポリシーが加わったわけです。これに伴いaws-cliのIAM関係のサブコマンドが大幅に追加されました。追加されたコマンドでどのような操作ができるか把握するために表にまとめて整理してみました。

IAMポリシー操作コマンド

操作 インラインポリシー 管理ポリシー
(カスタマー管理)ポリシーを作成する - create-policy
(カスタマー管理)ポリシーを削除する - delete-policy
管理ポリシーの一覧を取得する - list-policies
管理ポリシーの概要を取得する - get-policy
管理ポリシーの内容を取得する - get-policy-version
Roleに適用されたポリシーの一覧を取得する list-role-policies list-attached-role-policies
Roleに適用されたポリシーの内容を表示する get-role-policy get-policy / get-policy-version
Roleにポリシーの適用する put-role-policy attach-role-policy
Roleからポリシーを削除する delete-role-policy detach-role-policy

今回インラインポリシーの適用対象をRoleにしたので、適用されたポリシー一覧はlist-role-policiesで取得できます。適用先がIAM Userであればlist-user-policiesになり、IAM Groupであればlist-group-policiesになります。同様にattach-role-policyは、IAM Userだとattach-user-policy、IAM Groupだとにattach-group-policyなります。コマンド名を類推しやすい命名規則ですね。

(おまけ)aws-cliでAWS管理ポリシーやカスタマー管理ポリシーのみ表示する

管理ポリシーの一覧を取得するlist-policiesコマンドはデフォルトではすべての管理ポリシーを一覧表示します。ただAWS管理ポリシーの数はとても多いため、自分が作成したポリシーを一覧から探すのが大変です。そんな時は--scopeオプションをつけるとAWS管理ポリシーのみ、またはカスタマー管理ポリシーを表示することができます。

カスタマー管理ポリシーのみ表示する

$ aws iam list-policies --scope Local

AWS管理ポリシーのみ表示する

$ aws iam list-policies --scope AWS

まとめ

AWSのサービスは日々増えていくため、ユーザーに適切な権限を与えようとすると頻繁にポリシー修正が必要になります。作成したポリシーはぜひgitなどで更新理由とともに管理しておきたいところです。そのためにも手元で修正→適用→テストがしやすいようaws-cliでのポリシー操作を身につけておきたいですね。