次のような AWS Identity and Access Management (IAM) のエラーメッセージが表示されました。
「Maximum policy size of xxxxx bytes exceeded for the user or role. (ユーザーまたはロールの最大ポリシーサイズの xxxxx バイトを超えました。) 」
IAM ロールまたはユーザーのデフォルトの管理ポリシーを増やしたり、文字サイズ制限を引き上げたりするにはどうすればよいですか?
簡単な説明
IAM ロールまたはユーザーにアタッチできるマネージドポリシーの上限は 20 です。管理ポリシーの最大文字サイズ制限は 6,144 です。詳細については、IAM オブジェクトクォータ、IAM クォータおよび AWS STS クォータ、名前の要件、および文字の制限を参照してください。
注: マネージドポリシーのデフォルトの制限は 10 です。デフォルトの制限を 10 から 20 まで引き上げるには、サービスクォータの引き上げのリクエストを送信する必要があります。
解決方法
IAM グループ、ユーザー、ロール、またはポリシーのマネージドポリシーまたは文字サイズの制限に達した場合は、シナリオに応じて次の回避策を実行してください。
IAM グループ
別の IAM グループを作成します。アカウントごとに最大 300 の IAM グループを持つことができます。マネージドポリシーを IAM グループではなく IAM ユーザーにアタッチします。最大 20 個のマネージドポリシーを IAM ロールとユーザーにアタッチできます。
IAM ユーザー
IAM グループをさらに作成し、マネージドポリシーをグループにアタッチします。IAM ユーザーを最大 10 のグループに割り当てることができます。また、各グループには最大 10 個のマネージドポリシー、つまり最大 120 個のポリシー (IAM ユーザーにアタッチされる 20 のマネージドポリシー + 10 の IAM グループ × それぞれのグループに割り当てられる 10 のポリシー) をアタッチできます。
マネージドポリシーを結合する
複数のマネージドポリシーを 1 つのポリシーに結合します。マネージドポリシーごとに最大 6,144 文字を追加できます。
マネージドポリシーの文字サイズを縮小する
同じ Effect を持つすべてのアクションを組み合わせて、重複した許可を削除します。リソースステートメントと条件ステートメントを組み合わせます。Sid などの不要なステートメントを削除します。同じサフィックスまたはプレフィックスを持つアクションにはワイルドカード (*) を使用します。
マネージドポリシーの代わりにインラインポリシーを使用する
インラインポリシーは必要なだけ使用できますが、ポリシーの合計サイズは文字クォータを超えることはできません。インラインポリシーの文字制限は、ユーザーが 2,048、ロールが 10,240、グループが 5,120 です。
重要: インラインポリシーではなく、カスタマーマネージドポリシーを使用することがベストプラクティスです。
関連情報
インラインポリシー
IAM でのセキュリティのベストプラクティス
CIS AWS Foundations ベンチマークコントロール