Slide 1

Slide 1 text

AWS Control Towerを
 カスタマイズして使ってみよう
 2021/10/15
 AWS事業本部コンサルティング部 鈴木純


Slide 2

Slide 2 text

2 自己紹介 鈴木純(Suzuki Jun) ・AWS事業本部 コンサルティング部(SA) ・好きなAWSサービス: ・AWS CloudFormation、AWS Control Tower ・2021 APN AWS Top Engineer

Slide 3

Slide 3 text

3 お伝えしたいこと Control Towerで アカウントセットアップの自動化が捗る 便利なソリューションがあるよ

Slide 4

Slide 4 text

4 お話すること 1. Landing Zoneを知る 2. アカウントセットアップの自動化 3. Control Towerのカスタマイズ 4. まとめ

Slide 5

Slide 5 text

5 話さないこと ● Control Towerの深い部分 ● AWSサービスの細かい説明 ● OU設計

Slide 6

Slide 6 text

6 マルチアカウントについて知りたい人は https://dev.classmethod.jp/articles/jaws-days-2021-control-tower/

Slide 7

Slide 7 text

7 1. Landing Zoneを知る

Slide 8

Slide 8 text

8 本題に入る前に 最近はAWSアカウントを分割することが推奨 ● システム単位 ○ 運用するシステム毎に分割 ● 環境の分離 ○ 開発、ステージング、本番で分割 ● 課金 ○ システムごと、環境ごとに請求を分けたい →AWSアカウントが増加する傾向にある

Slide 9

Slide 9 text

9 マルチアカウント管理の課題 ● 各アカウントへのログイン ○ SSO?IAMロール? ○ 権限の制御方法 ● 一定のセキュリティを担保 ○ CloudTrailとConfigは有効化 ○ セキュリティ系AWSサービスを有効化 ○ 望ましくない操作は検知 これらの実装方法を検討・実装する必要がある

Slide 10

Slide 10 text

10 これらをどうやって実装・管理するか? Landing Zone

Slide 11

Slide 11 text

11 Landing Zoneを知る ● Landing Zone とは? ○ AWS のベストプラクティスに基づいて構成したアカウントを、ス ケーラブルに展開していくための仕組みの総称 マルチアカウントのセットアップ・管理を 容易にする仕組み・考え方

Slide 12

Slide 12 text

12 Landing Zoneの構成 1. アカウントの発行 ○ 必要な初期設定の済んだアカウントを作成 2. 管理用権限の発行 ○ 対象アカウントを管理するための権限を作成 3. 共有サービスへのアクセス (ユーザー環境に合わせて個別に実装する) ○ AD やファイルサーバー等の共有サービスや運用拠点への接続経路の確保 4. AWS ログの集約 ○ 監査用ログをセキュアに一元保存 5. ガードレールの設置 ○ 実施してはいけない操作の禁止 (必須のガードレール) ○ 危険な設定の監視 (強く推奨・選択的のガードレール) 参考:AWS マルチアカウント管理を実現するベストプラクティスとは ?

Slide 13

Slide 13 text

13 Landing Zoneの実装方法    Control Tower    独自で実装

Slide 14

Slide 14 text

14 Control Tower ● Landing Zoneを実装するマネージド サービス ● ボタン1つでLanding Zoneを展開 ● 東京リージョン対応 ● 既存の組織・アカウントに適用可能 ● 制約がなければControl Towerを採用

Slide 15

Slide 15 text

15 独自で実装 ● Landing Zoneの構成のものを独自に実装 ● AWSサービスやサードパーティ製品を組み合 わせてLanding Zoneを実現 ● 柔軟性が高い ● 実装が大変

Slide 16

Slide 16 text

16 ここまでのまとめ ● マルチアカウントの管理には様々な課題がある ● 課題を解決するためのセットアップ・管理を容易にする仕 組み・考え方をLanding Zone ● Landing Zoneの実装はControl Towerがおすすめ

Slide 17

Slide 17 text

17 2. アカウントセットアップの自動化

Slide 18

Slide 18 text

18 Control Towerでセットアップされるもの ● AWS SSO ● AWS Organizations ○ Audit ○ Log Archive ● CFn Account Baseline ○ AWS Config ○ AWS CloudTrail ○ SNS(Config非準拠通知) ○ Control Tower用 IAM Role ● Network Baseline

Slide 19

Slide 19 text

19 セットアップはこれで終わりではない その他にも様々な初期設定を追加したくなる ● GuardDuty・SecurityHubを有効化 ● IAM用パスワードポリシーを変更 ● IAMロールの作成 など… 各アカウント個別に設定・管理するのは 現実的ではない

Slide 20

Slide 20 text

20 自動セットアップを追加していく ● CFn Account Baseline ○ AWS Config ○ AWS CloudTrail ○ SNS(Config非準拠通知) ○ Control Tower用 IAM Role ● (Network Baseline)

Slide 21

Slide 21 text

21 追加でセットアップする項目 ● GuardDutyの有効化 ● SecurityHubの有効化 ● IAM Access Analyzerの有効化 ● IAMロールの作成 ● IAMユーザー用パスワードポリシーの変更 ● (SecurityHub)セキュリティ基準のコントロール無効化 ○ 例:AWS Foundational Security Best Practices v1.0.0 ■ IAM.3 IAM ユーザーのアクセスキーは 90 日ごとに更新する必要があります ■ IAM.6 ハードウェア MFA はルートユーザーに対して有効にする必要があります

Slide 22

Slide 22 text

22 追加でセットアップする項目 ● GuardDutyの有効化 ● SecurityHubの有効化 ● IAM Access Analyzerの有効化 ● IAMロールの作成 ● パスワードポリシーの変更 ● セキュリティ基準のコントロール無効化

Slide 23

Slide 23 text

23 Organizations連携を活用する

Slide 24

Slide 24 text

24 Organizationsの連携機能   Organizations連携で自動有効化が可能 一部サービスでは管理者の委任が可能 Control Tower環境下ではAuditアカウントへの委任がおすすめ ● GuardDuty ○ 【Organizations】組織内すべてのアカウント・すべてのリージョンへの GuardDuty設 定を簡単に行う ● SecurityHub ○ Organizations 環境で AWS Security Hub を全リージョンへ簡単セットアップする ● IAM Access Analyzer ○ [アップデート] IAM Access Analyzer が AWS Organizations に対応しました!

Slide 25

Slide 25 text

25 Organizationsの連携機能 連携サービスについてはドキュメント参照    https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_integrate_services_list.html

Slide 26

Slide 26 text

26 Organizations連携による有効化 ● CFn Account Baseline ○ AWS Config ○ AWS CloudTrail ○ SNS(Config非準拠通知) ○ Control Tower用 IAM Role ● Organizations連携 ○ Amazon GuardDuty ○ AWS SecurityHub ○ IAM Access Analyzer

Slide 27

Slide 27 text

27 追加でセットアップする項目 ● GuardDutyの有効化 ● SecurityHubの有効化 ● IAM Access Analyzerの有効化 ● IAMロールの作成 ● IAM ユーザー用パスワードポリシーの変更 ● セキュリティ基準のコントロール無効化

Slide 28

Slide 28 text

28 3. Control Towerのカスタマイズ

Slide 29

Slide 29 text

29 Control Tower のカスタマイズとは ● Customizations for AWS Control Tower(CfCT) ● AWS提供のソリューション ● CloudFormationで簡単に展開可能 https://aws.amazon.com/jp/solutions/implementations/customizations-for-aws-control-tower/

Slide 30

Slide 30 text

30 何がすごいのか? ソースにテンプレートを配置すれば、 アカウント発行時に自動で展開してくれる

Slide 31

Slide 31 text

31 Control Tower のカスタマイズとは 前準備:CodeCommitにCFnテンプレート、     マニフェストファイルをPushしておく

Slide 32

Slide 32 text

32 Control Tower のカスタマイズとは Control Towerのアカウント発行時に、CodeCommitに PushしたCFnテンプレートを自動でデプロイ

Slide 33

Slide 33 text

33 CfCTの仕組み ● Control Towerライフサイクルイベントワー クフロー ○ Control Towerのアカウント発行時に起動 ○ EventBridge→SQS→Lambdaの順に実行 ○ LambdaはCodePipelineを実行 ● CodePipelineワークフロー ○ 指定したソース(CodeCommit/S3)から テンプレート等を取得 ○ マニフェストファイルに従って CloudFormation StackSets、SCPを展開 ○ ソースに変更があった場合もCodePipeline が起動 ● 展開先(OU/アカウント)はマニフェストファ イル上で指定可能

Slide 34

Slide 34 text

34 CfCTの実装 1. CfCT展開用CloudFormationを実行 2. マニフェストファイルの作成 3. 指定したソースへ配置

Slide 35

Slide 35 text

35 1.CfCT展開用CloudFormationの実行 ● ソリューションページのリンクから 展開 ● パラメータを設定 ● 承認フローの追加も可能

Slide 36

Slide 36 text

36 もう少し詳細に知りたい方は     https://dev.classmethod.jp/articles/customizations-for-control-tower/ 

Slide 37

Slide 37 text

37 2.マニフェストファイルの作成 --- region: ap-northeast-1#Control Tower home region version: 2021-03-15 resources: # List of resources - name: resource_file: deployment_targets: accounts: - 012345678912 - AccountName1 organizational_units: - OuName1 - OuName2 deploy_method: stack_set regions: #list of strings parameters: - parameter_key: DisableList parameter_value: AAA, BBB 展開するテンプレート /SCPポリシーの場所 S3、もしくはlocalpathの指定が可能 展開先の指定 accounts:アカウントIDかアカウント名 organizational_units:OU名 デプロイ形式の選択 SCPかStackSetどちらかを選択 ● CfCTを実行するための定義ファイル ○ YAML形式で記述 ○ 最新バージョンは2021-03-15 より詳細な記述方法については以下参照 AWS Control Tower のカスタマイズ AWS 開発者ガイド CloudFormationへ引き渡すパラメータ keyとvalueを指定することで任意のものを設定

Slide 38

Slide 38 text

38 3.指定したソースへ配置 CfCT展開時のソースとして選択した方に配置 ● CodeCommit ○ ソリューション展開時に作成されたリポジトリをクローン ○ 作成したマニフェストファイルを配置 ○ 展開するCFnテンプレート(SCPポリシー)を配置 ○ CodeCommitへPush ● S3 ○ マニフェストファイル等をZIPに圧縮 ○ ソリューション展開時に作成されたS3へアップロード custom-control-tower-configuration ├── manifest.yaml └── template └── CreateIAMRole.yaml フォルダ構成例→

Slide 39

Slide 39 text

39 CfCTによるIAMロール作成の自動化 IAMロールを例としているが、 CFn対応リソースであれば展開可能

Slide 40

Slide 40 text

40 ここまででも十分ですが、 さらに一歩踏み込んでみる

Slide 41

Slide 41 text

41 追加でセットアップする項目 ● GuardDutyの有効化 ● SecurityHubの有効化 ● IAM Access Analyzerの有効化 ● IAMロールの作成 ● IAM ユーザー用パスワードポリシーの変更 ● セキュリティ基準のコントロール無効化

Slide 42

Slide 42 text

42 自動化できていない理由 ● IAM ユーザー用パスワードポリシーの変更 ○ CloudFormation未対応 ● セキュリティ基準のコントロール無効化 ○ Organizations連携ではコントロールの反映ができない ○ CloudFormation未対応 これらも自動化したい場合はどうするのか?

Slide 43

Slide 43 text

43 Lambda-backed カスタムリソースを利用 Lambda-backed カスタムリソースとは? →CloudFormation未対応のリソースも管理可能

Slide 44

Slide 44 text

44 CfCT利用時の実装イメージ 例)セキュリティ基準のコントロールを無効化

Slide 45

Slide 45 text

45 Lambda-backed カスタムリソースの注意点 ● Lambda-backed カスタムリソースの理解が必要 ○ エラーハンドリング ○ リクエストタイプ(作成・更新・削除)ごとの処理 ● テンプレートの視認性が悪い ● Lambdaの作り込みが必要

Slide 46

Slide 46 text

46 カスタムリソースを理解したい人は チュートリアルをやってみましょう https://dev.classmethod.jp/articles/lambda-backed-custom-resources-tutorial/

Slide 47

Slide 47 text

47 リクエストタイプごとの処理を理解したい人は https://dev.classmethod.jp/articles/request-type-in-the-lambda-backed-custom-resources/

Slide 48

Slide 48 text

48 カスタムリソースをアカウント セットアップに組み込む

Slide 49

Slide 49 text

49 カスタムリソースのセットアップ追加

Slide 50

Slide 50 text

50 アカウントセットアップまとめ ● CFn Account Baseline ○ AWS Config ○ AWS CloudTrail ○ SNS(Config非準拠通知) ○ Control Tower用 IAMロール ● Organizations連携 ○ Amazon GuardDuty ○ AWS SecurityHub ○ IAM Access Analyzer ● Control Towerのカスタマイズ ○ IAMロール ○ IAMユーザー用パスワードポ リシー変更 ○ セキュリティ基準のコントロー ル無効化

Slide 51

Slide 51 text

51 4. まとめ

Slide 52

Slide 52 text

52 まとめ ● マルチアカウントの課題に対してセットアップ・管理を容易にする仕組 み・考え方をLanding Zone ● 追加でアカウントのセットアップする場合はなるべく自動化 ○ まずControl Towerでセットアップされるものを理解する ○ Organizations連携できるものは利用する ● それ以外はControl Towerのカスタマイズがとっても便利 ○ CFn対応リソースなら自動で展開可能 ○ CFn非対応の場合は、カスタムリソースを組み合わせる

Slide 53

Slide 53 text

53 是非Control Towerを自社のポリシ ーに合わ せてカスタマイズしてみてください

Slide 54

Slide 54 text

No content