c2.5 SCP と RCP でガードレールを設定する
Service Control Policies(アイデンティティ側)と Resource Control Policies(リソース側)でアカウント内の最大権限を制限し、セキュリティ不変条件(個々の IAM ポリシーに関わらず決して許可しないこと)を強制します。
実装ガイダンス
Service Control Policies(SCP)
Service Control Policies は、AWS IAM がアカウントで付与できる最大権限を制限します。アクセスを付与するのではなく、上限を設定します。組織・組織単位(OU)・アカウントの各レベルで適用し、セキュリティ不変条件(一度設定したらほとんど変更しないルール)を強制します。
SCP はメンバーアカウントの root ユーザーにも適用されますが、管理(組織ルート)アカウントには適用されません。機微なワークロードは管理アカウントに置かないでください。
例: メンバーアカウントの組織離脱の防止、セキュリティサービスの無効化のブロック、インスタンスタイプの制限など。ドキュメントの SCP 例と SCP 例のリポジトリを参照してください。
Resource Control Policies(RCP)
Resource Control Policies はリソース中心の対になる仕組みです。組織全体でリソースへの最大アクセスを設定します。たとえば、自組織のアイデンティティのみが自社の Amazon S3 バケットや SQS キューにアクセスできるよう要求します。SCP と同様に RCP は何も付与せず、制限のみを行います。RCP 例のリポジトリを参照してください。
アカウントで決して起こしたくないことをすべて洗い出し、SCP と RCP で強制します。広すぎる deny は正当な操作をブロックしうるため、まず本番外の OU でテストしてください。
RCP の例: 自組織のみが自社の S3 にアクセスできる
この Resource Control Policy は、呼び出し元プリンシパルが自組織に属さない限り S3 アクセスを拒否します(バケットポリシーの設定ミスがあっても外部 ID をブロックします):
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "EnforceOrgIdentitiesOnS3",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"StringNotEqualsIfExists": { "aws:PrincipalOrgID": "o-example12345" },
"BoolIfExists": { "aws:PrincipalIsAWSService": "false" }
}
}]
}How to validate
- セキュリティ不変条件を強制するために SCP と RCP を使っていますか?
- 望ましくない操作をブロックしていますか(組織からのアカウント離脱、メンバーアカウントでの root 使用、セキュリティサービスの無効化、不要なリージョンやインスタンスタイプなど)?
- 自組織に適用できるものを確認するため、SCP と RCP の例をレビューしましたか?
Threats addressed
- 権限の上限がないと、過剰な権限を持つ、あるいは侵害された単一のアイデンティティがアカウント全体で操作を実行できてしまいます。ガードレールはその影響範囲を抑えます。
AWS サービス
料金
AWS Organizations、SCP、RCP はいずれも無料です。
Framework mappings
AWS CAF
Well-Architected
- waf-security-foundations Security foundations
- waf-identity-and-access-management Identity and access management
Cloud Security Maturity Model