MNTSQ Techブログ

リーガルテック・カンパニー「MNTSQ(モンテスキュー)」のTechブログです。

【AWS】IAMインラインポリシーのサイズ制限でハマった話

MNTSQ Tech Blog TOP > 記事一覧 > 【AWS】IAMインラインポリシーのサイズ制限でハマった話

備忘録として残しておきます。

こんな感じで、IAMユーザーにStatement AとStatement Bを付与するインラインポリシーがあり、このインラインポリシーにStatement Cを追加しようとしました。

ところが、コードを変更してterraform applyをかけたところ、「LimitExceeded: Maximum policy size of 2048 bytes exceeded」と怒られてしまいました。

│ Error: putting IAM User (****) Policy (****): operation error IAM: PutUserPolicy, https response error StatusCode: 409, RequestID: ****, LimitExceeded: Maximum policy size of 2048 bytes exceeded for user ****

どうやらポリシーの合計が2048 bytesをオーバーしてしまったようです。 仕方ないのでインラインポリシーを2つに分けました。

怒られました。

│ Error: putting IAM User (****) Policy (****): operation error IAM: PutUserPolicy, https response error StatusCode: 409, RequestID: ****, LimitExceeded: Maximum policy size of 2048 bytes exceeded for user ****

「言いがかりをつけるな!」と言いたい気持ちをSlackに吐き出しながら調べてみると、こんなドキュメントを見つけました。

IAM ユーザー、ロール、またはグループに必要な数のインラインポリシーを追加できます。ただし、エンティティごとの総ポリシーサイズ (すべてのインラインポリシーの合計サイズ) は以下の制限を超えることはできません。
・ ユーザーポリシーサイズは 2,048 文字を超えることはできません。
・ロールポリシーサイズは 10,240 文字を超えることはできません。
・ グループポリシーサイズは 5,120 文字を超えることはできません。

どうやらインラインポリシーを分けたとしても、合算されて制限がかかるようです(どうして)
この方法では制限を回避することはできないようです。

結局それぞれを個別の管理ポリシーにし、IAMユーザーにアタッチすることによってこの問題を回避しました。

ユーザー、ロールに関わらず、インラインポリシーが太っていくような実装はしないほうが良さそうですね。

MNTSQ株式会社 SRE 西室