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

Control Tower + αで始めるサンドボックス環境

hiropy877
August 28, 2023

Control Tower + αで始めるサンドボックス環境

AWSでControl Towerを使ってサンドボックス環境(個人に払い出す社内検証環境)を構築する際のTipsをまとめました。

hiropy877

August 28, 2023
Tweet

More Decks by hiropy877

Other Decks in Technology

Transcript

  1. Control Tower + αで始める
    サンドボックス環境
    2023/08/28(月)
    廣原花音
    ※当資料は個人の見解です

    View full-size slide

  2. アジェンダ
    ● 自己紹介
    ● Japan AWS Jr.Championsって?
    ● サンドボックス環境ありますか?
    ● 何から始めればいいの?
    ● ControlTowerだけだと何が足りないの?
    ● 私が独自に導入したリソースのご紹介

    View full-size slide

  3. お願い
    本日のLTの感想を
    #aws_jr_champions
    をつけてツイートしていただけると嬉しいです

    View full-size slide

  4. 自己紹介
    名前:廣原花音(ひろはらかのん)
    あだ名:hiropy
    身長:148.5cm
    所属会社:デロイトトーマツウェブサービス株式会社
    経歴:
    茨城高専 -> 三重県でSE -> DWS
    好きなAWSサービス:CloudFormation
    選出:2023 Japan AWS Jr. Champions
    X(旧Twitter): @hiropy6387

    View full-size slide

  5. 自己紹介
    名前:廣原花音(ひろはらかのん)
    あだ名:hiropy
    身長:148.5cm
    所属会社:デロイトトーマツウェブサービス株式会社
    経歴:
    茨城高専 -> 三重県でSE -> DWS
    好きなAWSサービス:CloudFormation
    選出:2023 Japan AWS Jr. Champions
    X(旧Twitter): @hiropy6387
    ん???

    View full-size slide

  6. Japan AWS Jr.Championsとは
    ʮ+BQBO"84+S$IBNQJPO1BSUOFS1SPHSBNʯͱ͸ɺ"841BSUOFS
    /FUXPSL "1/
    ࢀՃاۀʹॴଐ͠ɺݱࡏࣾձਓྺʙ೥໨Ͱ"84Λੵۃ
    తʹֶͼɺΞΫγϣϯΛى͜͠ɺपғʹӨڹΛ༩͍͑ͯΔ"1/एखΤϯδχΞ
    Λબग़͠ίϛϡχςΟΛܗ੒͢Δɺ೔ຊಠࣗͷදজϓϩάϥϜͰ͢ɻ
    "84քͷएखΤϯδχΞΛϦʔυ͢Δ"1/एखΤϯδχΞ

    View full-size slide

  7. Japan AWS Jr.Championsとは
    બग़͞ΕΔͱɺɺ
    ● +BQBO"84+S$IBNQJPOTݶఆ .FFUVQ΁ͷࢀՃ
    ● "84ύʔτφʔ޲͚ηογϣϯ΁ͷࢀՃ
    ͕ެࣜʹॻ͔Ε͍ͯΔ΋ͷ

    View full-size slide

  8. Japan AWS Jr.Championsとは
    બग़͞ΕΔͱɺɺ
    ● +BQBO"84+S$IBNQJPOTݶఆ .FFUVQ΁ͷࢀՃ
    ● "84ύʔτφʔ޲͚ηογϣϯ΁ͷࢀՃ
    ͕ެࣜʹॻ͔Ε͍ͯΔ΋ͷͰ͕͢

    View full-size slide

  9. Japan AWS Jr.Championsとは
    ࠷ऴ໨ඪ͸
    एखΤϯδχΞʹΑΓ"84Λ׆༻ͯ͠΋Β͍
    "84քશମΛएखͷྗͰ੝Γ্͛Δ͜ͱʂ
    ͩͱݸਓతʹࢥ͍ͬͯ·͢

    View full-size slide

  10. 具体的な活動内容
    ษڧձͷ։࠵
    ݄ʹҰ౓ɺʮ"84ʯΛςʔϚʹษڧձΛߦͳ͍ͬͯ·͢

    View full-size slide

  11. 具体的な活動内容
    ษڧΛ։࠵͢Δཧ༝
    ● एखΤϯδχΞಉ࢜ͰͷφϨοδͷڞ༗
    ● ಉ೥୅ͷΤϯδχΞͷ׆ಈ͔ΒܹࢗΛड͚Δ
    ● +S$IBNQJPOಉ࢜ͷަྲྀͷ৔Λ૿΍͢

    View full-size slide

  12. 具体的な活動内容
    +"84Λ͸͡Ίͱ͢Δొஃ׆ಈ
    ొஃ͢Δ͜ͱͰɺ+S$IBNQJPOTͷ஌໊౓޲্ʹ౒Ί͍ͯ·͢
    +"84"84ΤϯδχΞΛத৺ͱ͢Δ༗ࢤͷίϛϡχςΟ

    View full-size slide

  13. 今後の野望
    ● ࠓ೥౓͸ࣾձશମͷ+S$IBNQJPOTʹର͢Δೝ஌౓Λ্͛Δ೥ʹ͍͖ͯ͠·
    ͢
    ● དྷ೥౓Ҏ߱ɺएखΤϯδχΞΛר͖ࠐΜͩXFCJOBSͳͲΛ։࠵͍ͨ͠ͱاΜ
    Ͱ͍·͢
    ● ࠓ೥౓ͷ׆ಈ࣍ୈͰདྷ೥Ҏ߱ͷଘଓՄ൱͕ܾ·ΔͷͰԠԉ͓ئ͍͠·͢🙇
    ● ͜Μͳ׆ಈͯ͘͠ΕͨΒخ͍͠ʂͳͲͷ͝ҙݟ΋ืूதͰ͢

    View full-size slide

  14. はじめに
    みなさん、、、
    社内のサンドボックス環境ってありますか?
    サンドボックス環境:
    検証、学習のために使用する個人のAWSアカウント

    View full-size slide

  15. はじめに
    ない?それなら、、
    皆さんの力で導入してみましょう!
    意外と簡単かも?

    View full-size slide

  16. 今回お話ししたいこと
    ● サンドボックス環境は意外と簡単に導入できる!
    ● 私が社内のサンドボックス環境をどうやって整備したかを紹介します
    ● 導入できれば、みんなに喜ばれます
    ※より詳細に知りたい方は、ブログをご参照ください

    View full-size slide

  17. 何から始めればいいの?
    まずはControlTowerを導入しましょう!
    Control Towerとは:
    ● AWSのベストプラクティスにそったLandingZoneを構築してくれる
    ○ ガードレール、いい感じのアカウント構成、証跡の一元管理
    ● 自分でこちゃこちゃやらなくてもいい感じのマルチアカウント構成ができる
    ● 参考

    View full-size slide

  18. Control Towerをデプロイすると
    右図のような構成のアカウントが
    デプロイされます
    rootOU: 全体を包括するOU
    SecurtyOU:
    セキュリティやログ管理の役割を担うOU
    SandBoxOU:
    メンバーアカウントが作成されるOU

    View full-size slide

  19. Control Towerをデプロイすると
    右図のような構成のアカウントが
    デプロイされます
    rootOU: 全体を包括するOU
    SecurtyOU:
    セキュリティやログ管理の役割を担うOU
    SandBoxOU:
    メンバーアカウントが作成されるOU

    View full-size slide

  20. Control Towerをデプロイすると
    右図のような構成のアカウントが
    デプロイされます
    rootOU: 全体を包括するOU
    SecurtyOU:
    セキュリティやログ管理の役割を担うOU
    SandBoxOU:
    メンバーアカウントが作成されるOU

    View full-size slide

  21. Control Towerをデプロイすると
    右図のような構成のアカウントが
    デプロイされます
    rootOU: 全体を包括するOU
    SecurtyOU:
    セキュリティやログ管理の役割を担うOU
    SandBoxOU:
    メンバーアカウントが作成されるOU

    View full-size slide

  22. Control Towerをデプロイすると
    Audit:
    全アカウントのセキュリティ周りを管理す
    る役割を担うアカウント
    Log:
    全アカウントの証跡が集約されるアカウン
    ト(CloudTrail, Config)
    ct-management:
    ルートアカウント
    各アカウントの操作が可能

    View full-size slide

  23. Control Towerをデプロイすると
    Audit:
    全アカウントのセキュリティ周りを管理す
    る役割を担うアカウント
    Log:
    全アカウントの証跡が集約されるアカウン
    ト(CloudTrail, Config)
    ct-management:
    ルートアカウント
    各アカウントの操作が可能

    View full-size slide

  24. Control Towerをデプロイすると
    Audit:
    全アカウントのセキュリティ周りを管理す
    る役割を担うアカウント
    Log:
    全アカウントの証跡が集約されるアカウン
    ト(CloudTrail, Config)
    ct-management:
    ルートアカウント
    各アカウントの操作が可能

    View full-size slide

  25. Control Towerをデプロイすると
    Audit:
    全アカウントのセキュリティ周りを管理す
    る役割を担うアカウント
    Log:
    全アカウントの証跡が集約されるアカウン
    ト(CloudTrail, Config)
    ct-management:
    ルートアカウント
    各アカウントの操作が可能

    View full-size slide

  26. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  27. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  28. SecurityHubとGuardDutyの有効化
    ● Organizations全体で有効化しましょう
    ● SecurityHubで全体のセキュリティを可視化
    ● GuardDutyで異常の発生を検知(EC2への攻撃とか)
    こちらのクラスメソッドさんの記事がとてもわかりやすいです!
    社内の検証環境でインシデントを起こさないための体制整備が必要です

    View full-size slide

  29. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  30. サンドボックス環境で異常が発生したら
    ● GuardDutyは異常を検知するサービスなので、その先のアクションを作る必
    要があります
    ● 第一歩として、検知した異常をSlackで通知するのがおすすめです
    ● EventBridge + Lambdaでサクッとできます
    ● もしかしたらブログにするかも、、?

    View full-size slide

  31. サンドボックス環境で異常が発生したら
    ちなみに私はこんな感じで通知してます
    異常を検知したインスタンスは止めちゃいます

    View full-size slide

  32. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  33. アカウント管理のコード化
    アカウント発行を都度手動でやるのは煩雑、、
    Account Factory for Terraform(AFT)でコード管理できる!
    ● アカウント発行をTerraformでコード管理できる
    ● コードの変更をpushするだけでアカウントが自動発行される
    ● ブログでやり方を書いているのでご覧ください

    View full-size slide

  34. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  35. 各アカウントの予算管理
    各アカウントの予算を設定してリソースの使いすぎを防ぎたい、、
    私が作ったテンプレート、あります
    ● CloudFormationでBudgetsとSlackに通知するLambdaをデプロイします
    ● 環境変数で予算とアラートの閾値を設定できます
    ● こちらのブログをご覧ください

    View full-size slide

  36. アーキテクチャ
    ● 管理アカウントから各アカウント
    にStackSetをデプロイ
    ● Budgetsで予算の設定を行う
    ● 予算を超えそうになるとAmazon
    SNS経由でLambdaを起動
    ● Slackで通知

    View full-size slide

  37. アーキテクチャ
    ● 管理アカウントから各アカウント
    にStackSetをデプロイ
    ● Budgetsで予算の設定を行う
    ● 予算を超えそうになるとAmazon
    SNS経由でLambdaを起動
    ● Slackで通知

    View full-size slide

  38. アーキテクチャ
    ● 管理アカウントから各アカウント
    にStackSetをデプロイ
    ● Budgetsで予算の設定を行う
    ● 予算を超えそうになるとAmazon
    SNS経由でLambdaを起動
    ● Slackで通知

    View full-size slide

  39. アーキテクチャ
    ● 管理アカウントから各アカウント
    にStackSetをデプロイ
    ● Budgetsで予算の設定を行う
    ● 予算を超えそうになるとAmazon
    SNS経由でLambdaを起動
    ● Slackで通知

    View full-size slide

  40. アーキテクチャ
    ● 管理アカウントから各アカウント
    にStackSetをデプロイ
    ● Budgetsで予算の設定を行う
    ● 予算を超えそうになるとAmazon
    SNS経由でLambdaを起動
    ● Slackで通知

    View full-size slide

  41. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  42. アカウント利用料の通知
    毎月のアカウント利用料をお知らせしてくれたら嬉しいな、、
    私が作ったテンプレート、あります
    ● CloudFormationで通知用LambdaとEventBridgeをデプロイします
    ● 毎月末にアカウントの利用料をSlack botで通知します
    ● こちらのブログをご覧ください

    View full-size slide

  43. アカウント利用料の通知
    右図の構成にしています
    1. EventBridgeを毎月末に実行
    2. Lambdaを呼び出しCost Explorerか
    ら料金を取得
    3. Slackに取得した料金を投稿

    View full-size slide

  44. アカウント利用料の通知
    右図の構成にしています
    1. EventBridgeを毎月末に実行
    2. Lambdaを呼び出しCost Explorerか
    ら料金を取得
    3. Slackに取得した料金を投稿

    View full-size slide

  45. アカウント利用料の通知
    右図の構成にしています
    1. EventBridgeを毎月末に実行
    2. Lambdaを呼び出しCost Explorerか
    ら料金を取得
    3. Slackに取得した料金を投稿

    View full-size slide

  46. アカウント利用料の通知
    右図の構成にしています
    1. EventBridgeを毎月末に実行
    2. Lambdaを呼び出しCost Explorerか
    ら料金を取得
    3. Slackに取得した利用料を投稿

    View full-size slide

  47. ControlTowerだけだと何が足りないの?
    ● より強いセキュリティ設定
    ● アカウント内で異常が発生した時の仕組み
    ● アカウント発行の仕組み
    ● 各アカウントの予算設定
    ● アカウント利用料を知るための仕組み
    ● アカウント内を定期的にお掃除する仕組み、、、
    →より使いやすい環境にするための設定を紹介します!
    ※当社の事例、かつ絶賛改善中なのでアドバイス絶賛募集中

    View full-size slide

  48. サンドボックス環境のお掃除
    検証環境だからって、不要なリソースが増えて料金が嵩んだらどうしよう、、、
    それ、aws-nukeで解決できます
    ● aws-nukeはアカウント内のリソースを強制的に自動削除するツールです
    ● 指定したアカウント内のリソースを一気に削除します
    ● nuke自体は無料です
    ● 当社では、これを毎週末に自動実行しています
    ● 今月中にブログを書きます書きました!

    View full-size slide

  49. アーキテクチャ

    View full-size slide

  50. アーキテクチャ

    View full-size slide

  51. アーキテクチャ

    View full-size slide

  52. アーキテクチャ

    View full-size slide

  53. さいごに
    ● サンドボックス環境、意外と簡単にいけそうですよね?
    ● まずはインシデントを起こさないための設定が大事
    ● 社内で提案して、みんなを幸せにしてみましょう 😊

    View full-size slide