IAMユーザーの権限にとりあえずFullAccessを付けていた人へ
IAMを最小権限の原則に従って付けるというのは周知の事実ですが、
権限が細かすぎて何つければいいか分からないですよね。
私もまったく分かっていなくてとりあえずAdministratorAccess権限で構築してました。
個人的に開発環境でやるのであればそれでもいいかもしれませんが、業務でとなるとやはりセキュリティ面でなるべく権限は抑えたいですよね。
調べてみるとどうやら「IAM Access Analyzer」というものを使用して必要な権限のみを洗い出してポリシー作成が出来るらしいです。
というわけで早速やってみます!!
やってみた
とりあえず検索で「IAM」見てみるか。
これか?
なんか監査的な感じでポリシーを作ってくれるわけじゃなさそう...
調べてみると、どうやらユーザーやロールの証跡を元にポリシーを作成してくれるみたいで、
対象のユーザーやロールの画面から作成するみたいです。
自分が使っているユーザー画面に推移したらありました!
※注意
CloudTrailの証跡を元にポリシーを作成するため、証跡を作成しておく必要があります。
デフォルトで3ヶ月間操作履歴を取ってくれますが、それとは別に証跡作成の必要があります。
(証跡作成に料金は掛かりませんが、証跡をS3に保存するため保存料金が掛かります。)
というわけで証跡を作成して、証跡を出力させるために一通り必要そうな行動をします!
(証跡作成の方法は割愛)
今回はCloudformationを使って、IAMやネットワーク周り、EC2、ALBを作成しました。
CloudTrailの証跡を見ると色々と記録されていますね!
このデータから適切なポリシーを作成してくれるっぽい。
では一通り構築作業など行ったので、AWSにIAMポリシーを作成してもらいましょう。
1日で作業したので、直近1日で取ります。(ここが長いほど作成に時間が掛かります)
作成した証跡を選んで、構築に使用したリージョンを選んで生成してみます。
数分待ったら作成されましたね。
いい感じに必要そうなポリシーが含まれてそうです!
そしてそのまま他に必要なポリシーを追加していけるみたいです。
次の画面に推移するとJSONでの設定画面となりますが、結構構文エラーとなってます。
どうやらResource部分が"${Variable}"となっててIAMでは対応していないみたいです。
ここは一旦全てアスタリスクに変えて反映します。
これでユーザーに対して適切なポリシーが付与出来ました!
あとはAdministratorAccessを削除して、足りない権限は随時増やしていくという運用になるのかなと思います。
リソース部分をどこまで絞るかは要件とかにもよるかと思いますが、個人的には操作権限の上にどれを触れるかまで絞るのはかなり手間がかかりそうでなるべくやりたくないですね(;^_^A
そこはそこでまた何か効率のいい方法があるかもしれません。
まとめ
作業した流れをここでまとめておきます。
1.CloudTrailで証跡作成を行う
2.ユーザーやロールなどで行いたい作業を事前に一度通して行う
3.対象ユーザーやロールの画面からCloudTrailを用いたポリシー作成を行う
4.構文エラーが出た場合は修正(今回はリソースをアスタリスクで許可)
あとは元々使用していたFullAccess系の権限を外して運用し、都度足りない権限を追加していくことで、1からポリシーを作成するよりだいぶ手間は減ると思います。
以上!!