IAM グループのインラインポリシーには気をつけよう
最近、CloudFormation というか JSON しか触ってないことに気がついた那須です。
諸事情によりベストプラクティスから離れて、IAM インラインポリシーを使って権限制御していたんですが、 その時によくわからない事象に遭遇したのでご紹介します。
IAM グループでインラインポリシー名を変更したい
そう、グループのインラインポリシー名を変更したいだけなんです。 でもそう簡単には変更させてもらえませんでした…
どういうことが起こったのか?
AWS 管理コンソールからグループのインラインポリシーを編集します。
で、名前を変えてポリシーの適用をすると、
エラーが発生しました: Maximum policy size of 5120 bytes exceeded for group test
え?
ポリシー名も文字数にカウントされるのか…と思って、ポリシー名を短くしても結果は同じでした。 ちなみに、このインラインポリシーの文字数をカウントすると 3913 文字でした。むしろあと 1000 文字くらいはいけるはず。
試しに、アクションを 1 つ増やして文字数を増やすと、今度は適用できてしまいました。
いや、マジで意味わからん…
整理してみた
発生してる事象
- グループインラインポリシー名を変更しようとすると文字数制限にひっかかる
条件
- インラインポリシー名を長くしても短くしても文字だけ変えて文字数同じでも事象発生
- ポリシー内容の文字数が増えても事象は発生しない
- ポリシー内容の文字数は 3913 文字
うーん、インラインポリシー名が原因か。
ふとひらめいた
これもしかして裏で新規作成されてる?
と思って、試しに文字数 100 字程度のインラインポリシーを作って同じグループに適用し、このポリシー名を変更したら問題なく変更できました。 でもポリシー量が多いインラインポリシー名は変更できないままです。
ポリシー内容の変更は直接そのポリシーを変更してくれるんですが、
ポリシー名変更をすると、裏でポリシーを新規作成し、元のポリシーを削除する動きをしているように見えます。
そして、ポリシーが新規作成されたタイミングで文字数制限にひっかかているようです。
(AWS さんには確認をとっておりません。CLI ならできるかもしれませんがまだ確認してません
まとめ
IAM ベストプラクティスに従って管理ポリシーを使いましょう。
インラインポリシーを使う場合は、1 つのポリシーにいろんな内容を詰め込まずにできる限り小さい単位で分けましょう。
クラウド、面白いよ?
日々新しいことにチャレンジできるし、今やれば先頭集団にも交じることができる。 仕事なので大変な部分もあるけど、新しいことが好きな人ならクラウドエンジニアになるのはメリットの方が多いと思います。 というわけで、BeeX ではいつでもクラウドエンジニアを募集しております! 採用ページの写真はほぼスーツですが、お客様と会う時以外は私服ですし、勤務地も東京以外も ok ですよー www.beex-inc.com