Slide 1

Slide 1 text

宣言型ポリシー、使ってみたらこうだった! 2025/01/25 第27回クラウド女子会 ~re:Invent 振り返りLT会~

Slide 2

Slide 2 text

目次 ⚫ 宣言型ポリシーとは? ⚫ 実際に触ってみた ◯ Allowed Image Settings ◯ EC2 シリアルコンソール ◯ EBS ブロックパブリックアクセス ⚫ カスタムエラーメッセージを表示してみる ◯ 不思議な挙動 ⚫ 結果を元に宣言型ポリシーの設計を考えてみた ⚫ おわりに 2

Slide 3

Slide 3 text

宣言型ポリシーとは?

Slide 4

Slide 4 text

宣言型ポリシーとは? 4 ➢ AWS Organizations で提供する新しいポリシー ➢ 既存ポリシー:SCP(Service Control Policy)など ➢ Organizations もしくは Control Tower で設定が可能 ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢ 新しい機能や API が追加されたときのメンテナンスが不要になる!

Slide 5

Slide 5 text

宣言型ポリシーとは? 5 Organizations 内で、アカウント A で作成した AMI しか使わせたくない! 従来 これから ec2:RunInstances と… ec2:StartInstances と… あと何を制限すればいいんだ? さくっと宣言型ポリシーを作って、 OU / アカウントにアタッチするだけ! 簡単!

Slide 6

Slide 6 text

実際に触ってみた - Allowed Image Settings

Slide 7

Slide 7 text

実際に触ってみた - Allowed Image Settings 7 有効 :指定したプロバイダーのみ使用可能 無効 :制限しない 監査モード:非準拠 AMI の識別だけ可能、 非準拠 AMI でも使用可能 管理アカウントで実施 アカウント A の AWS アカウント ID

Slide 8

Slide 8 text

実際に触ってみた - Allowed Image Settings 8 補足 検証時、メッセージを日本語で入力したら 以下のエラーが表示されたので、 英語で入力しています

Slide 9

Slide 9 text

実際に触ってみた - Allowed Image Settings 9 アカウント A 、アカウント B それぞれで作成した AMI を 組織内で共有している状態 ⇒ アカウント A で作成されたものだけ Allowed image : はい となっている アカウント A で確認

Slide 10

Slide 10 text

実際に触ってみた - Allowed Image Settings 10 Allowed Image Setting : 有効 にすると・・・ ⇒ アカウント A で作成された AMI だけ表示され、 非準拠 AMI は一覧に表示されなくなる アカウント A で確認

Slide 11

Slide 11 text

実際に触ってみた - EC2 シリアルコンソール

Slide 12

Slide 12 text

実際に触ってみた - EC2 シリアルコンソール 12 管理アカウントで実施

Slide 13

Slide 13 text

実際に触ってみた - EC2 シリアルコンソール 13 アカウント A で確認

Slide 14

Slide 14 text

実際に触ってみた - EC2 シリアルコンソール 14 アカウント A で確認

Slide 15

Slide 15 text

実際に触ってみた - EBS ブロックパブリックアクセス

Slide 16

Slide 16 text

実際に触ってみた - EBS ブロックパブリックアクセス 16 管理アカウントで実施

Slide 17

Slide 17 text

実際に触ってみた - EBS ブロックパブリックアクセス 17 アカウント A で確認 アカウント B で確認 宣言型ポリシーアタッチ前

Slide 18

Slide 18 text

実際に触ってみた - EBS ブロックパブリックアクセス 18 アカウント A で確認 宣言型ポリシーアタッチ後 アカウント B で確認

Slide 19

Slide 19 text

実際に触ってみた - EBS ブロックパブリックアクセス 19 新規パブリック共有をブロックに変更すると… アカウント B で確認

Slide 20

Slide 20 text

カスタムエラーメッセージを表示してみる

Slide 21

Slide 21 text

カスタムエラーメッセージを表示してみる 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. $ ⇒ カスタムメッセージ違うな…???

Slide 22

Slide 22 text

カスタムエラーメッセージを表示してみる - 不思議な挙動

Slide 23

Slide 23 text

カスタムエラーメッセージを表示してみる - 不思議な挙動 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

Slide 24

Slide 24 text

カスタムエラーメッセージを表示してみる - 不思議な挙動 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

Slide 25

Slide 25 text

結果を元に宣言型ポリシーの設計を考えてみた

Slide 26

Slide 26 text

結果を元に宣言型ポリシーの設計を考えてみた 26 ➢ もしかして、ベストプラクティスに「OU ごとに 1 つの宣言型ポリシーにしましょう」って 書いてあるのかな…!? ➢ 書いてありませんでした。 参考:Best practices for using declarative policies - AWS Organizations なんならルート / OU / アカウントに対してそれぞれ最大 10 個アタッチ可能でした。 引用:Quotas and service limits for AWS Organizations - AWS Organizations

Slide 27

Slide 27 text

結果を元に宣言型ポリシーの設計を考えてみた 27 Root SandboxOU Management account SecurityOU WorkloadsOU Account A Account B Declarative Policy 設計方針 ➢ (他のポリシーもだけど)できるだけ 1 つのポリシーにまとめる ➢ ポリシーアタッチ先 OU を判別できるようなカスタムエラーメッセージ を設定する ➢ 今後宣言型ポリシーの種類が増えて 1 つのポリシーに収まらなくなった 場合を想定して、ポリシー名も連番にしておく

Slide 28

Slide 28 text

結果を元に宣言型ポリシーの設計を考えてみた 28 改善点 ➢ ポリシーは1つにまとめる ➢ ポリシー名にアタッチ先 OU を含める ➢ カスタムエラーメッセージにはポリシー名を含める ➢ トラブルシュートのときにポリシー名が分かる方が 調査がしやすいため

Slide 29

Slide 29 text

結果を元に宣言型ポリシーの設計を考えてみた 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. $

Slide 30

Slide 30 text

おわりに

Slide 31

Slide 31 text

おわりに 31 ➢ 宣言型ポリシーは AWS Organizations で提供する新しいポリシー ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢ 現在使えるのは 6 種類のみ ➢ 設定・適用はとても簡単 ➢ ポリシーはできるだけまとめて作成 ➢ 複数の宣言型ポリシーをアタッチする場合は、アタッチされた日時が最も古 いポリシーのカスタムエラーメッセージが採用されるため、メッセージ内容 は要検討 ➢ 宣言型ポリシーの理解を深める一歩になれば幸いです

Slide 32

Slide 32 text

ありがとうございました!

Slide 33

Slide 33 text

参考 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

Slide 34

Slide 34 text

No content