Share
Embed
第27回クラウド女子会 ~re:Invent 振り返りLT会~ 宣言型ポリシー、使ってみたらこうだった!
2025/01/25 第27回クラウド女子会 ~re:Invent 振り返りLT会~
宣言型ポリシー、使ってみたらこうだった!
https://jawsug-cloudgirl.connpass.com/event/338908/
いたくら
January 25, 2025
Transcript
34 slides
-
目次 ⚫ 宣言型ポリシーとは? ⚫ 実際に触ってみた ◯ Allowed Image Settings ◯
EC2 シリアルコンソール ◯ EBS ブロックパブリックアクセス ⚫ カスタムエラーメッセージを表示してみる ◯ 不思議な挙動 ⚫ 結果を元に宣言型ポリシーの設計を考えてみた ⚫ おわりに 2 -
宣言型ポリシーとは? 4 ➢ AWS Organizations で提供する新しいポリシー ➢ 既存ポリシー:SCP(Service Control Policy)など
➢ Organizations もしくは Control Tower で設定が可能 ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢ 新しい機能や API が追加されたときのメンテナンスが不要になる! -
宣言型ポリシーとは? 5 Organizations 内で、アカウント A で作成した AMI しか使わせたくない! 従来 これから
ec2:RunInstances と… ec2:StartInstances と… あと何を制限すればいいんだ? さくっと宣言型ポリシーを作って、 OU / アカウントにアタッチするだけ! 簡単! -
実際に触ってみた - Allowed Image Settings 7 有効 :指定したプロバイダーのみ使用可能 無効 :制限しない
監査モード:非準拠 AMI の識別だけ可能、 非準拠 AMI でも使用可能 管理アカウントで実施 アカウント A の AWS アカウント ID -
実際に触ってみた - Allowed Image Settings 9 アカウント A 、アカウント B
それぞれで作成した AMI を 組織内で共有している状態 ⇒ アカウント A で作成されたものだけ Allowed image : はい となっている アカウント A で確認 -
実際に触ってみた - Allowed Image Settings 10 Allowed Image Setting :
有効 にすると・・・ ⇒ アカウント A で作成された AMI だけ表示され、 非準拠 AMI は一覧に表示されなくなる アカウント A で確認 -
実際に触ってみた - EBS ブロックパブリックアクセス 17 アカウント A で確認 アカウント B
で確認 宣言型ポリシーアタッチ前 -
カスタムエラーメッセージを表示してみる 21 カスタムエラーメッセージが表示されるタイミングは? ⇒ メンバーアカウントで、宣言型ポリシーを有効・無効・もしくはオプションを変更しようとしたとき ⇒ アカウント A で「すべてのパブリック共有をブロック」に変更しようとして、怒られよう! $
aws ec2 get-snapshot-block-public-access-state { "State": "block-new-sharing", "ManagedBy": "declarative-policy" } $ aws ec2 enable-snapshot-block-public-access --state block-all-sharing An error occurred (DeclarativePolicyViolation) when calling the EnableSnapshotBlockPublicAccess operation: This functionality has been disabled by a Declarative Policy. Custom Message: This action was denied by the declarative policy: test-allowed-image-dp. $ ⇒ カスタムメッセージ違うな…??? -
カスタムエラーメッセージを表示してみる - 不思議な挙動 23 【状況整理】 ➢ SandboxOU に以下の宣言型ポリシーをアタッチしている ➢ 各ポリシーごとにカスタムエラーメッセージを設定している
➢ This action was denied by the declarative policy: test-allowed-image-dp ➢ This action was denied by the declarative policy: test-ec2-serial-console-dp ➢ This action was denied by the declarative policy: test-block-public-access-for-EBS-snapshots-dp -
カスタムエラーメッセージを表示してみる - 不思議な挙動 24 【不思議な挙動の原因】 ➢ アタッチされた日時が最も古いポリシーのカスタムエラーメッセージが採用されるため ➢ 1. test-allowed-image-dp、2.
test-ec2-serial-console-dp、3. test-block-public-access-for-EBS-snapshots- dp の順でアタッチしたとき ➢ 表示メッセージ:This action was denied by the declarative policy: test-allowed-image-dp ➢ 1. test-ec2-serial-console-dp、2. test-block-public-access-for-EBS-snapshots-dp、3. test-allowed-image- dp の順でアタッチしたとき ➢ 表示メッセージ:This action was denied by the declarative policy: test-ec2-serial-console-dp ➢ 1. test-block-public-access-for-EBS-snapshots-dp、2. test-allowed-image-dp、 3. test-ec2-serial-console- dp の順でアタッチしたとき ➢ 表示メッセージ:This action was denied by the declarative policy: test-block-public-access-for-EBS- snapshots-dp -
結果を元に宣言型ポリシーの設計を考えてみた 26 ➢ もしかして、ベストプラクティスに「OU ごとに 1 つの宣言型ポリシーにしましょう」って 書いてあるのかな…!? ➢ 書いてありませんでした。
参考:Best practices for using declarative policies - AWS Organizations なんならルート / OU / アカウントに対してそれぞれ最大 10 個アタッチ可能でした。 引用:Quotas and service limits for AWS Organizations - AWS Organizations -
結果を元に宣言型ポリシーの設計を考えてみた 27 Root SandboxOU Management account SecurityOU WorkloadsOU Account A
Account B Declarative Policy 設計方針 ➢ (他のポリシーもだけど)できるだけ 1 つのポリシーにまとめる ➢ ポリシーアタッチ先 OU を判別できるようなカスタムエラーメッセージ を設定する ➢ 今後宣言型ポリシーの種類が増えて 1 つのポリシーに収まらなくなった 場合を想定して、ポリシー名も連番にしておく -
結果を元に宣言型ポリシーの設計を考えてみた 28 改善点 ➢ ポリシーは1つにまとめる ➢ ポリシー名にアタッチ先 OU を含める ➢
カスタムエラーメッセージにはポリシー名を含める ➢ トラブルシュートのときにポリシー名が分かる方が 調査がしやすいため -
結果を元に宣言型ポリシーの設計を考えてみた 29 $ aws ec2 enable-snapshot-block-public-access --state block-all-sharing An error
occurred (DeclarativePolicyViolation) when calling the EnableSnapshotBlockPublicAccess operation: This functionality has been disabled by a Declarative Policy. Custom Message: This action was denied by the declarative policy for the SandboxOU. $ $ aws ec2 enable-serial-console-access An error occurred (DeclarativePolicyViolation) when calling the EnableSerialConsoleAccess operation: This control is managed by your organizations administrator. This functionality has been disabled by a Declarative Policy. Custom Message: This action was denied by the declarative policy for the SandboxOU. $ $ aws ec2 disable-allowed-images-settings An error occurred (DeclarativePolicyViolation) when calling the DisableAllowedImagesSettings operation: This functionality has been disabled by a Declarative Policy. Custom Message: This action was denied by the declarative policy for the SandboxOU. $ -
おわりに 31 ➢ 宣言型ポリシーは AWS Organizations で提供する新しいポリシー ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢
現在使えるのは 6 種類のみ ➢ 設定・適用はとても簡単 ➢ ポリシーはできるだけまとめて作成 ➢ 複数の宣言型ポリシーをアタッチする場合は、アタッチされた日時が最も古 いポリシーのカスタムエラーメッセージが採用されるため、メッセージ内容 は要検討 ➢ 宣言型ポリシーの理解を深める一歩になれば幸いです -
参考 33 ➢ [アップデート] AWS Organizations で宣言型ポリシー(declarative policies) が利用可能になりました #AWSreInvent
| DevelopersIO https://dev.classmethod.jp/articles/aws-organizations-declarative-policies-available/ ➢ セキュリティ系アップデート全体像と AWS Organizations 新ポリシー「宣言型ポリシー」を紹介 #AWSreInvent #regrowth_osaka | DevelopersIO https://dev.classmethod.jp/articles/aws-organizations-awsreinvent-regrowth-osaka/ ➢ Declarative policies - AWS Organizations https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html ➢ ec2 — AWS CLI 1.37.6 Command Reference https://docs.aws.amazon.com/cli/latest/reference/ec2/#cli-aws-ec2