Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

いたくら

January 25, 2025
Tweet

Other Decks in Technology

Transcript

  1. 目次 ⚫ 宣言型ポリシーとは? ⚫ 実際に触ってみた ◯ Allowed Image Settings ◯

    EC2 シリアルコンソール ◯ EBS ブロックパブリックアクセス ⚫ カスタムエラーメッセージを表示してみる ◯ 不思議な挙動 ⚫ 結果を元に宣言型ポリシーの設計を考えてみた ⚫ おわりに 2
  2. 宣言型ポリシーとは? 4 ➢ AWS Organizations で提供する新しいポリシー ➢ 既存ポリシー:SCP(Service Control Policy)など

    ➢ Organizations もしくは Control Tower で設定が可能 ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢ 新しい機能や API が追加されたときのメンテナンスが不要になる!
  3. 宣言型ポリシーとは? 5 Organizations 内で、アカウント A で作成した AMI しか使わせたくない! 従来 これから

    ec2:RunInstances と… ec2:StartInstances と… あと何を制限すればいいんだ? さくっと宣言型ポリシーを作って、 OU / アカウントにアタッチするだけ! 簡単!
  4. 実際に触ってみた - Allowed Image Settings 7 有効 :指定したプロバイダーのみ使用可能 無効 :制限しない

    監査モード:非準拠 AMI の識別だけ可能、 非準拠 AMI でも使用可能 管理アカウントで実施 アカウント A の AWS アカウント ID
  5. 実際に触ってみた - Allowed Image Settings 9 アカウント A 、アカウント B

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

    有効 にすると・・・ ⇒ アカウント A で作成された AMI だけ表示され、 非準拠 AMI は一覧に表示されなくなる アカウント A で確認
  7. カスタムエラーメッセージを表示してみる 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. $ ⇒ カスタムメッセージ違うな…???
  8. カスタムエラーメッセージを表示してみる - 不思議な挙動 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
  9. カスタムエラーメッセージを表示してみる - 不思議な挙動 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
  10. 結果を元に宣言型ポリシーの設計を考えてみた 26 ➢ もしかして、ベストプラクティスに「OU ごとに 1 つの宣言型ポリシーにしましょう」って 書いてあるのかな…!? ➢ 書いてありませんでした。

    参考:Best practices for using declarative policies - AWS Organizations なんならルート / OU / アカウントに対してそれぞれ最大 10 個アタッチ可能でした。 引用:Quotas and service limits for AWS Organizations - AWS Organizations
  11. 結果を元に宣言型ポリシーの設計を考えてみた 27 Root SandboxOU Management account SecurityOU WorkloadsOU Account A

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

    カスタムエラーメッセージにはポリシー名を含める ➢ トラブルシュートのときにポリシー名が分かる方が 調査がしやすいため
  13. 結果を元に宣言型ポリシーの設計を考えてみた 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. $
  14. おわりに 31 ➢ 宣言型ポリシーは AWS Organizations で提供する新しいポリシー ➢ サービスレベルでベースライン構成の定義・適用が可能 ➢

    現在使えるのは 6 種類のみ ➢ 設定・適用はとても簡単 ➢ ポリシーはできるだけまとめて作成 ➢ 複数の宣言型ポリシーをアタッチする場合は、アタッチされた日時が最も古 いポリシーのカスタムエラーメッセージが採用されるため、メッセージ内容 は要検討 ➢ 宣言型ポリシーの理解を深める一歩になれば幸いです
  15. 参考 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