サービスコントロールポリシー (SCP) の文字数制限を増やしたり、AWS Organization 内のエンティティにさらに SCP をアタッチしたりしたいと考えています。
解決策
AWS Organizations サービスには、アカウントあたり 5 つの SCP というハードリミットがあります。アカウント、OU、またはルートにアタッチした SCP の数が多すぎると、ConstraintViolationException エラーが発生することがあります。
SCP の最大サイズは、追加のスペースや改行を含めて 5,120 文字です。詳細については、「AWS Organizations でのクォータとサービス制限」を参照してください。
アカウントに直接アタッチされる SCP の数を減らし、組織内に制限を追加できるようにする方法を次に示します。
- 複数の SCP を 1 つの SCP に統合する
- 組織単位 (OU) の階層で SCP 継承を使用する
複数の SCP を 1 つの SCP に統合する
SCP のサイズがポリシーのサイズ制限である 5,120 バイト未満の場合は、この方法を使用します。
SCP のサイズ制限を減らすには、次の推奨事項に従ってください。
-
SCP を確認して、重複するアクセス許可を削除します。たとえば、同じ Effect 要素と Resource 要素を持つすべてのアクションを、複数のステートメントではなく 1 つのステートメントに配置します。
-
ステートメント ID (Sid) などの不要な要素は、許容される合計文字数にカウントされるため、削除します。
-
同じサフィックスまたはプレフィックスを持つアクションには、ワイルドカードを使用します。たとえば、ec2:DescribeInstance、ec2:DescribeTags、ec2:DescribeSubnets というアクションは、ec2:Describe* と記述することでまとめられます。
重要: ワイルドカードを使用すると、組織内にさらなるセキュリティリスクが生じる可能性があります。ワイルドカードは、多くの場合、複数のリソースに対して幅広いアクセス許可を付与することになります。ワイルドカードにより、組織内の AWS Identity and Access Management (IAM) ID (ユーザー、グループ、ロール) に意図しないアクセス許可が与えられる可能性があります。AWS Lambda 関数に対しては、この方法でアクセス許可を適用しないでください。ワイルドカードは、デューデリジェンスを実行した後にのみ使用するようにしてください。IAM ポリシーでは、ワイルドカードによるアクセス許可を付与しないのがベストプラクティスです。
OU 階層で SCP 継承を使用する
5 つの SCP の制限には、親から継承された SCP は含まれません。OU とメンバーアカウントの SCP の継承構造を使用することで、SCP を複数の OU に分散できます。たとえば、組織のメンバーアカウントを持つ IAM ユーザーまたはロールが AWS サービスにアクセスすることを拒否するには、組織構造を次のように設定します。
Root <--- 1 full access SCP (1 directly attached) |
OU1 <--- 1 full access, 4 deny SCPs (5 directly attached, 1 inherited)
|
OU2 <--- 1 full access, 4 deny SCPs (5 directly attached, 6 inherited)
|
Account <--- 1 full access, 4 deny SCPs (5 directly attached, 11 inherited)
|
Bob
組織階層の各ノードで SCP によってフィルター処理されるアクセス許可において、直接接続された SCP と継承された SCP を混在させます。この例では、メンバーアカウント内の IAM ユーザー Bob は、12 の deny に基づく SCP によって拒否されるサービスを除き、フルアクセスが可能です。このアプローチは、組織階層内に配置できるネストされた OU の最大数が 5 つであるため、スケーラブルです。
詳細については、「SCP の評価」を参照してください。
関連情報
マルチアカウント環境でサービスコントロールポリシーをさらに活用する