PackedPolicyTooLarge エラーを発生させずに、AWS セキュリティトークンサービス (STS) を通じて、AWS ID およびアクセス管理 (IAM) ロールを引き受けたいと思っています。
簡単な説明
STS を通じてIAM ロールを引き受けると、次のいずれかの詳細を含む** PackedPolicyTooLarge **エラーメッセージが表示されることがあります。
- セッションタグのパックサイズは、割り当てられたスペースの n% を消費します。
- パックされたポリシーは、割り当てられたスペースの n% を消費します。小さいポリシーを使用してください。
**注:n は PackedPolicySize **の使用済みスペースの割合を表します。
STS では、次の種類のセッションタグを渡すことができます。
- インラインセッションポリシー
- 管理ポリシー Amazon リソースネーム (ARN)
- IAM ロールを引き受けると、カスタマー管理ポリシーの ARN が返されます。
STS は、タグ、ポリシー、 ARN に関連するデータを AWS セッショントークンに保存します。これらのデータはすべて、** PackedPolicySize **の制限にカウントされます。
**注:**顧客管理ポリシーは、想定している IAM ロールと同じ AWS アカウントにある必要があります。
セッションタグ、インラインセッションポリシー、管理ポリシー ARN を設定すると、AWS セッショントークンのサイズが大きくなります。ただし、使用されるセッションタグとセッションポリシークォータの数に関係なく、適用されるトークンのサイズ制限には限りがあります。有限制限を超えると、エラーが発生します。
インラインセッションポリシーとセッションタグは、セッショントークンでシリアル化および圧縮されます。そのため、STS に** AssumeRole を呼び出す前に、 PackedPolicySize** がどれだけ使用されているかを判断するのが難しくなります。
注:AssumeRole、 AssumeRoleWithSAML 、および AssumeRoleWithWebIdentity ** の AWS CloudTrail ログには、パックされたポリシーサイズが表示されます。また、レスポンスの一部として、AWS API はリクエストで使用されている PackedPolicySize **の割合を返します。
解決策
役割を引き受けるときに STS に渡すインラインセッションポリシーまたはセッションタグ (キーと値) の長さを減らしてください。以下のセクションでは、セッションタグとインラインセッションポリシーのデータを制限する方法について説明します。
セッションタグ
- セッションタグのキーまたは値を省略または短縮します。セッションタグは通常、属性ベースのアクセス制御 (ABAC) に使用されます。ABACのポリシースペースを効果的に活用するには、意思決定の承認に必要な情報のみをセッションタグに入れてください。
- 監査情報など、 ABAC 以外の目的のセッションタグについては、セッションタグ内のレコードを外部レコードシステムへの参照に置き換えてください。
- すべてのタグのキーと値には、小文字などの一貫した大文字と小文字を使用してください。AWS セッショントークンには圧縮されたタグのキーと値が格納されます。圧縮アルゴリズムは、大文字と小文字に一貫性がある場合に最も効果的です。
- ID 情報をセッションタグ内に配置する場合は、それを別のクォータを持つ SourceIdentity に移動するのがベストプラクティスです。
インラインセッションポリシー
- セッションポリシーからステートメント ID (Sid) 要素を削除します。Sid はセッションポリシーステートメントのオプション要素です。
- 必要に応じてワイルドカード文字を使用し、 IAM アクションとリソース ARN を短くしてください。
- ポリシードキュメントの代わりに管理ポリシー ARNを渡してください。管理ポリシーの ARN は単なるポリシーへの参照であり、トークン内のスペースをあまり必要としません。管理ポリシーとセッションポリシーの両方を渡すことができます。
- 条件付きでのみアクセスを許可するポリシーを作成するには、管理ポリシーまたはロールに添付されたインラインポリシーでセッションタグを使用してください。