Slide 1

Slide 1 text

AWS Control Towerと
 HashiCorp Terraformで
 いい感じにマルチアカウント管理をしよう
 1

Slide 2

Slide 2 text

● なぜ AWS Control Tower × Terraform ? ● Terraformで操作可能なマルチアカウント管理サービスについて ● Account Factory for Terraform (AFT)について 目次

Slide 3

Slide 3 text

● 名前: ちゃだいん ● 所属: AWS事業本部コンサルティング部 ● 役割: ソリューションアーキテクト ● 拠点: 大阪 ● 好きなサービス: AWS, Terraform ● 趣味: 立ち呑みめぐり ● X(Twitter): @chazuke4649 ● Japan AWS Top Engineers 2022,2023 自己紹介

Slide 4

Slide 4 text

なぜ AWS Control Tower × HashiCorp Terraform なのか?

Slide 5

Slide 5 text

AWS Control Tower を採用する局面 ● 中・大規模なAWS環境 ● 本格的にマルチアカウント戦略やっていきたい ● セキュリティ・ガバナンスを担保する共通基盤 設定ミス・オペミスは影響範囲大のリスク... →だから、IaC/GitOpsによって安全・信頼性のあるオペレーションを行いたい

Slide 6

Slide 6 text

ベストIaCツール for Platformチーム *個人の感想 ● 誰が書いても同じような記述になる(HCLの特性) ○ 属人化リスク低 ○ 説明・引き継ぎがカンタン ● インフラ設定の見える化/コード化に最適 ○ ベタ書きなら、まさに「この通り設定してます」の証明になり一目瞭然(精神衛生上◎) ○ 抽象的な記述による暗黙的なリソース生成が少ない ■ モジュールによる再利用化も可能 ● 余談: Platformチーム ≒ インフラ/情シス/共通基盤/CCoE チーム

Slide 7

Slide 7 text

Platformチームが管理するのはAWSだけじゃない ● ユーザー/ID基盤(Okta, OneLogin, Azure AD) ● DevOps(Kubenetes, GitHub, GitLab) ● 監視(New Relic, Data Dog, Mackerel) ● セキュリティ(Snyk, Dome9) ● etc … →全てTerraformで一元的に管理可能

Slide 8

Slide 8 text

Terraformで操作可能な マルチアカウント管理サービス

Slide 9

Slide 9 text

AWS Organizations 管理可能なリソース例 ● AWSアカウント aws_organizations_account ● OU aws_organizations_organizational_unit ● ポリシー aws_organizations_policy ○ SCP, バックアップポリシー , タグポリシー etc

Slide 10

Slide 10 text

例: OUにSCPを アタッチする

Slide 11

Slide 11 text

AWS IAM Identity Center 管理可能なリソース例 ● SSO Admin ○ アクセス権限セット aws_ssoadmin_permission_set etc ● SSO Identity Store ○ SSOグループ aws_identitystore_group ○ SSOユーザー aws_identitystore_user

Slide 12

Slide 12 text

例: SSOユーザーを作 成する

Slide 13

Slide 13 text

例: アクセス権限セット を作成する

Slide 14

Slide 14 text

例: 外部IdPで ユーザーを管理する https://registry.terraform.io/providers/okta/okta/latest/docs/resources/user https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/user

Slide 15

Slide 15 text

AWS Control Tower 管理可能なリソース例 ● コントロール(ガードレール)aws_controltower_control ● ランディングゾーン aws_controltower_landing_zone NEW!!

Slide 16

Slide 16 text

例: WorkloadsOUに 特定のコントロールを 適用する

Slide 17

Slide 17 text

例: ランディングゾーン を有効化する 注意)現時点(2024.5)ではバグがあるた め本番利用は非推奨 https://dev.classmethod.jp/articles/setup-landing-z one-using-terraform/

Slide 18

Slide 18 text

Account Factory for Terraform (AFT)

Slide 19

Slide 19 text

Account Factory for Terraform (AFT) とは? ● AWS Control Tower を補完/拡張する代表的なカスタマイズソリューション ● re:Invent 2021にてv1.0.0がリリース(最新版はv1.12.2) ● 実体はAWSサービスの集合体 + Terraform ○ Terraform Registry で公開されている ✖

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

AFTの特徴 ● AWS Control Tower管理下のAWSアカウント発行をGitOpsに実行できる ○ しかも複数AWSアカウントを一度にリクエスト可能 ○ 注意点)AWS OrgnaizationsでAWSアカウントを発行する(素の状態) ≠ AWS Control TowerでAWSアカウン トを発行する(ガードレールが効いている状態) ● AWSアカウント発行時のベースライン(初期設定)自動化がカンタン ○ ベースラインをTerraform、あるいは、Python/AWS CLIで設定可能 ○ 自前実装は開発・メンテが大変 →AWS Control TowerをTerraformなIaCベースで運用することが可能!

Slide 22

Slide 22 text

AFTの利用方法 1. AWSアカウントを発行する 2. AWSアカウントをカスタマイズする

Slide 23

Slide 23 text

1. AWSアカウントを発行する

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

AWSアカウントを 発行する

Slide 26

Slide 26 text

2. アカウントをカスタマイズする

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

AWSアカウントをカス タマイズする(1)

Slide 29

Slide 29 text

AWSアカウントをカス タマイズする(2)

Slide 30

Slide 30 text

詳細は、弊社ブログDevelopersIOのaftタグで検索 https://dev.classmethod.jp/tags/account-factory-for-terraform-aft/

Slide 31

Slide 31 text

No content