Slide 1

Slide 1 text

RCPと宣言型ポリシーについてのお話し K.Tamura

Slide 2

Slide 2 text

自己紹介 田村 晃輝 虎ノ門のどこかでエンジニアしています JAWS-UG SRE / 富山支部メンバー @koki46926199 元 富山県民 エンジニア歴 もうすぐ2年 AWS歴は1年ほど AWSマルチアカウント管理の設計、構築業務を担当 最近のトピック: エンジニアを始めるのと同時に ”とても” 太り始めました

Slide 3

Slide 3 text

はじめに 2024年11月、12月に AWS Organizations で導入された RCP と 宣言型ポリシー について、Terraform 化も含めてお話しします。 今回統制周り初めて触ったので、お手柔らかにお願いします…。

Slide 4

Slide 4 text

RPC (Resource Control Policy) 概要 組織内のリソースに対してのAPIアクションの許可範囲を設定するリソースベースのポリシーです。 組織外のアカウントからのリソースへのアクセスを制限することが可能となります。 対応サービス (2025/3/18 10:00 時点) - Amazon S3 - AWS Security Token Service - AWS Key Management Service - Amazon SQS - AWS Secrets Manager https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_rcps.html

Slide 5

Slide 5 text

RPC を適用するにあたっての注意点 RCPの適用対象はSCPと同様に OU(組織単位)もしくはアカウントに対して適用 されます。 よって、RCPで適用するポリシーは組織内のメンバーアカウントのみに適用されるため、 管理アカウント内のユーザー、ロール、リソースに対してのアクションの制限が行えません。

Slide 6

Slide 6 text

宣言型ポリシー 概要 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_declarative.html 組織内のリソースに対しての サービスレベルでベースラインの設定 が可能となりました。 これにより、新しい機能、APIが追加されたときのメンテナンスが不要になります。 対応サービス (2025/3/18 10:00 時点) - EC2関連サービスの一部ユースケースのみ対応

Slide 7

Slide 7 text

宣言型ポリシー 概要 他にも、カスタムエラーメッセージ として、エラー発生時のカスタムメッセージを定義出来るだけでなく、 アカウントステータスレポート の機能でアカウント間でポリシーの状態が一貫しているのかを 確認することができます。 https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_declarative.html アカウントステータスレポート カスタムエラーメッセージ

Slide 8

Slide 8 text

“カスタム” エラーメッセージ・・・? 素敵な響き とりあえず AA (アスキーアート) 入力してみますよね? 「提供されたポリシー文書は、指定されたポリシータイプの要件を満たしていません。」 と怒られちゃいました…。

Slide 9

Slide 9 text

カスタムエラーメッセージに記述可能な文章 日本語を入力した場合でも同様に怒られてしまうので 現時点ではアルファベットで入力する必要がありそうでした。

Slide 10

Slide 10 text

SCP / RCP / 宣言型ポリシーの比較 SCP RCP 宣言型ポリシー 目的 IAMユーザーやロールなどに対しての アクセス制御を一元管理 リソースに対しての アクセス制御を一元管理 AWSサービスのベースライン を一元管理 制御の仕組み APIレベルで制御 APIレベルで制御 API アクションを使用せずに、 AWS サービスの必要な 構成を適用 サービスリンクロール※ 制限しない 制限しない 制限する エラーメッセージの カスタマイズ カスタマイズ不可 カスタマイズ不可 カスタマイズ可能 Quota (アタッチ可能な数) 5 5 10 ※ 特定のAWSサービスがユーザーの代わりにAWSリソースを管理できるように、自動で作成・管理されるIAMロール

Slide 11

Slide 11 text

SCP / RCP / 宣言型ポリシーの評価論理 単一アカウントのポリシー評価:https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-basics.html リクエストコンテキストの処理:https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-reqcontext.html SCPより先にRCPの判定を行っています。 宣言型ポリシーは、サービスレベルで適用されるため、 評価論理には記載されていませんが、最上位で判定を行っているイメージです。

Slide 12

Slide 12 text

結局何が嬉しいのか考えてみる RCP 宣言型ポリシー 新しい機能、APIが追加された場合でも、サービスのベースラインとして適用されるので メンテナンスのコストが低下する。 SCPで組織外のアカウントからのアクセスを網羅的に禁止することは難しいが、 RCPを適用することによって容易に実装が可能となる。 SCPで制御する場合、複数のAPIを指定する必要があるが、宣言型ポリシーをアタッチする だけなので簡単。

Slide 13

Slide 13 text

RCPと宣言型ポリシーをTerraformで適用してみる

Slide 14

Slide 14 text

環境の説明 AFT(AWS Control Tower Account Factory for Terraform)を使用して アカウントおよびリソースの作成を実施しています。

Slide 15

Slide 15 text

RCPと宣言型ポリシーのTerraformについて AWS Control Tower controls:https://docs.aws.amazon.com/ja_jp/controltower/latest/controlreference/all-global-identifiers.html 現環境では全てのリージョンに対してコントロールを適用したいため グローバル識別子をJSON形式で保存し、RCPと宣言型ポリシーを適用しています。

Slide 16

Slide 16 text

まとめ - RCP - 組織内のリソースに対してのAPIアクションの許可範囲を設定するリソースベースのポリシー - 適用範囲はSCPと同様にOU(組織単位)もしくはアカウント - 宣言型ポリシー - 組織内のリソースに対しての サービスレベルでベースラインの設定 が可能 - サービスリンクロールに対しても制御が入るので、適用時は注意 - カスタムエラーメッセージにAAと日本語は入力できない とても便利な機能であり、組み合わせて適用することで信頼性の高い運用が可能になりますが 後から適用すると、既存リソースに影響が発生する場合もあるので、十分に精査した上で適用しましょう。