はじめに

2024年11月と12月に、AWS Organizations で新たに導入された統制機能である「Resource control policies (RCPs)」と「宣言型ポリシー(declarative policies)」について、これらを既存の「Service control policies (SCPs)」と合わせて比較していきます。

SCPs (Service control policies) とは

SCPs は、AWS Organizations 内のアカウント(IAMユーザーやロール)が実行できる API アクションの許可される最大範囲を設定するアイデンティティベースのポリシーです。

IAM ユーザーやロールにアタッチされているポリシーの権限と重なる部分のアクションを実行でき、重ならない部分( SCPs で禁止されている部分)は実行できません。

RCPs (Resource control policies)とは

RCPs は、組織内のリソースに対する API アクションの許可範囲を設定するリソースベースのポリシーです。
組織外のアカウントからリソースへのアクセスを一括で制限することが可能です。

対応しているサービス

Amazon S3、AWS STS、AWS KMS、Amazon SQS、AWS Secrets Manager

例:S3 バケットへのアクセスを、組織内のアカウントだけに制限する RCPs

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceOrgIdentities",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"StringNotEqualsIfExists": {
"aws:PrincipalOrgID": "[MY ORG ID]"
},
"BoolIfExists": {
"aws:PrincipalIsAWSService": "false"
}
}
}
]
}

出典:公式ブログ

宣言型ポリシーとは

宣言型ポリシーは、組織内のすべてのアカウントに対して、特定の AWS サービスに関するベースライン設定を強制するためのポリシーです。
組織内のすべてのアカウントに一貫した設定を適用し、設定に準拠しない操作を防ぐことができます。

サポート対象 AWS サービスとその属性

  • Amazon VPC
  • VPC Block Public Access
  • Amazon VPC やサブネットがインターネットゲートウェイ(IGW)を通じてインターネットにアクセスできるかどうかを制御します。
  • Amazon EC2
  • Serial Console Access
  • EC2 のシリアルコンソールへのアクセスを制御します。
  • Image Block Public Access
  • AMI(Amazon Machine Images)が公開されるかどうかを制御します。
  • Allowed Images Settings
  • EC2 で許可された AMI の使用と発見を制御します。
  • Instance Metadata Defaults
  • 新しい EC2 インスタンスのインスタンスメタデータオプション(IMDS)のデフォルト設定を制御します。
  • Amazon EBS
  • Snapshot Block Public Access
  • Amazon EBS スナップショットが公開されるかどうかを制御します。

カスタムエラーメッセージ

エラーが発生した場合のカスタムエラーメッセージを設定できます。

アカウントステータスレポート

アカウント間でポリシー属性の状態が一貫しているかを確認し、不一致な属性を特定できます。

出典:公式ドキュメント

例:Amazon マシンイメージ (AMI) の公開可否を制御する宣言型ポリシー

{
"ec2_attributes": {
"image_block_public_access": {
"state": {
"@@assign": "block_new_sharing"
}
}
}
}

宣言型ポリシーで定義された設定は、サービスコントロールポリシー(SCPs)やリソースコントロールポリシー(RCPs)とは異なり、API レベルでのアクセス制御ではなく、サービスレベルで設定を強制します。
そのため、サービスが新しい API や機能を追加した場合や、新しいアカウントが組織に追加されても、宣言型ポリシーで定義されたベースライン設定は常に適用されます。

ポリシーの使い分けについて

SCPs

組織内のユーザーやロールに許可できるアクセス権限の最大範囲を制限するために使用します。

RCPs

組織内のリソースに対して許可できるアクセス権限の最大範囲を制限するために使用します。

宣言型ポリシー

組織内のアカウントに対して、特定のサービスに関するベースライン設定を強制するために使用します。

共通点と違い

SCPs と RCPs の共通点

  • SCPsとRCPs は「許可を付与する」ものではなく、組織内で許可される最大範囲を設定するものです。
  • 適用対象はどちらも同じで、OU(組織単位)またはアカウントに適用されます。
  • 組織階層の上位(例:組織のルートOUや親OU)が優先されます。
  • SCPs と同様に、これらのポリシーは組織内のメンバーアカウントにのみ適用され、管理アカウントには適用されません(管理アカウント内のユーザー、ロール、リソースに対するアクションは制限できません)。

宣言型ポリシーと SCPs・RCPs の違い

  • SCPs と RCPs は、サービスリンクロールがユーザーに代わって他の AWS サービスを呼び出すために必要なアクセス許可や、サービスリンクロールを引き受けたAWSサービスの動作には制限をかけません。
  • 一方、宣言型ポリシーはこれらのサービスリンクロールの動作にも制限を加えます。
SCPs RCPs 宣言型ポリシー
目的 IAMユーザーやロールのアクセス制御を一元管理 リソースへのアクセス制御を一元管理 AWSサービスのベースラインを一元管理
仕組み APIレベルでプリンシパルの最大許可を制御 APIレベルでリソースの最大許可を制御 APIアクションを使用せず、サービスの設定を強制
サービスリンクロール 制限しない 制限しない 制限する
操作拒否メッセージのカスタマイズ可否 カスタマイズ不可の「アクセス拒否」エラーメッセージ カスタマイズ不可の「アクセス拒否」エラーメッセージ カスタマイズ可能なエラーメッセージ

おわりに

SCP、RCPs、宣言型ポリシーは、それぞれ目的が異なりますが、どれも組織内のセキュリティポリシーを一元的に管理するために重要です。適切に使い分けることで、AWS 環境内でのアクセスやリソース管理を効率よく行い、セキュリティ強化にもつながると感じました。

AWS re:Invent 2024 re:Cap presented by iret 2024年12月19日(木)18時より、「AWS re:Invent 2024」のポイントを解説する「AWS re:Invent 2024 re:Cap presented by iret」を開催します。

イベントの詳細はこちら