JAWS DAYS 2021の登壇資料です。 詳細はブログをご参照ください。 https://dev.classmethod.jp/articles/jaws-days-2021-control-tower/
AWS Control Towerを利⽤したマルチアカウント管理とセキュリティ統制2021/03/20⾅⽥佳祐1#jawsdays2021#jawsug#jawsdays#jawsdays2021_C
View Slide
2⾃⼰紹介⾅⽥佳祐クラスメソッド株式会社・AWS事業本部 シニアソリューションアーキテクトセキュリティチームリーダーAWS認定インストラクター・Security-JAWS運営・好きなサービス:Amazon DetectiveAmazon Detec,veみんなのAWS(技術評論社)
3セッションの概要• AWSの利⽤が進むとマルチアカウント管理が避けて通れない道• マルチアカウント管理のベストプラクティスと選択肢の提⽰• AWS Control Towerを利⽤した⼿法を詳細に解説
4セッションの対象者どれか1つでも当てはまれば聞いてください• (どちらかと⾔えば)上級者• AWSの利⽤がこれから本格的に始まる企業の⽅• AWS全体の管理をする⽅• CCoEの⽅• セキュリティよりの⽅• 監査や調達の⽅• つまりだいたい全員(AWSに関わるなら)
5本題の前に
6AWSセキュリティの整理(登壇履歴)AWSセキュリティ事始め〜基礎からはじめてクラウドセキュリティの恩恵を受ける〜[初⼼者向け]AWS環境のセキュリティ運⽤(設計)をはじめてみようみんなでセキュリティを強化︕仕組みで解決するAWS環境のマネジメント & ガバナンス
7アジェンダ1. AWSマルチアカウント戦略とマネジメント & ガバナンス2. Landing Zoneに必要な要素3. Control Towerの展開と運⽤
81. AWSマルチアカウント戦略とマネジメント & ガバナンス
9基本的な考え⽅やサービスの復習
10むかしむかし…1つのVPCにいろんな環境を⼊れていましたネットワークの境⽬が弱くセキュアじゃありません
11むかし…VPCを分割して環境を分離しました開発⽤IAMで本番環境を変更できよくないです
12今のスタンダードAWSアカウントレベルで分離しますIAMも分離できました。でもアカウントの管理は︖管理⼿法をAWSマルチアカウント戦略と呼ぶ
13合わせて読みたいAWSアカウントとVPC、分ける︖ 分けない︖: 分割パターンのメリット・デメリット環境分離の鉄板ブログ古いけど⼤事⾒たことない⼈は⼀読https://dev.classmethod.jp/articles/account-and-vpc-dividing-pattern/
14考えることはまだまだいろいろ• IAMどうする︖• すべてのアカウントにIAM Userを作る︖• SSOする︖• ポリシーは︖• セキュリティは︖• 全体でCloudTrailをどうやって展開する︖• CloudFormationで展開していく︖• ログはどうやって管理する︖• 危ない設定をどうやって確認する︖
15例えばS3のセキュリティ対策• S3に格納しているデータを保護する• SSEによる暗号化• TLS必須• 公開設定をしない• パブリックアクセスブロックする• これらが適切に守られていることを確認したい
16合わせて読みたいS3のパブリックアクセスブロック機能バケットポリシーやACLよりも強制⼒が強いアクセス制御アカウント全体に適⽤可能h"ps://dev.classmethod.jp/ar3cles/s3-block-public-access/
17AWSのマネジメント & ガバナンスサービス⼀例マルチアカウント戦略を補助するサービスはたくさん• AWS Organizations• AWS Config• Config Rules• Config Aggregator• Systems Manager• CloudFormation• CFn StackSets• Trusted Advisor• Well-ArchitectedFramework• AWS SSO• RAM
18AWS Organizationsとは• 複数のAWSアカウントを束ねる仕組み• OUを定義して配下にアカウントをまとめられる• Service ControlPolicy(SCP)を利⽤して強制的なアクセス制御が可能
19合わせて読みたいOrganizationsについて必要な知識や関連サービスについて⼀通り説明ありh"ps://dev.classmethod.jp/ar3cles/lets-study-aws-organiza3ons-basic/
20AWS Configとは• 各種AWSリソースの設定状況を収集• 求める設定レベルに準拠しているかConfig Rulesでチェック• ⾃動修復させることも• Aggregatorによりリージョンやアカウントをまたがって設定や準拠情報を収集可能
21合わせて読みたい簡単にSSHの全開放を⾃動修復する設定まずは検知からだけでもやってみようh"ps://dev.classmethod.jp/ar3cles/auto-recovery-restricted-ssh-without-lambda/
22AWS Systems Managerとは• EC2の管理に関する様々な機能を有する• コマンド実⾏(RunCommand)• シェル接続(Session Manager)• パッチ管理(Patch Manager)• インベントリ収集(Inventory)• などなど• リージョン・アカウントまたがって収集・可視化するExplorerもあり
23合わせて読みたい管理している全AWSアカウントのEC2を⼀元的に可視化できるhttps://dev.classmethod.jp/articles/new-aws-systems-manager-explorer/
24まとめ• 今はAWSアカウントを細かく分割していくのが基本• そのための管理を考える必要がある• AWSマルチアカウント戦略というAWSマルチアカウント戦略は⾔い換えると、どういうLanding Zoneを作っていくかということ(だと私は思っている)
252. Landing Zoneに必要な要素
26Landing Zoneとは• マルチアカウント管理のベストプラクティスに従った構成の考え⽅• 特定のパターンではない• ⼗⼈⼗⾊の環境にアレンジされる
27Landing Zoneの構成要素だいたいこんな感じの機能を持っている• ID管理: SSOなど各アカウントに対するアクセス管理• ガードレール: SCPやConfig Rulesなどでポリシーに反する操作をさせない or してもすぐ検知する• ベースラインの展開: CloudTrailやConfigなどの仕組みを展開する(Vending Machine)• ログ管理・監視: 必要なログを保全したり、健全な状態か監視する
28合わせて読みたいOUの設計パターンを学ぶのにおすすめのブログ全部やらなくていいけど、⼀通り読んで何を採⽤するか検討するといいh"ps://dev.classmethod.jp/ar3cles/aws-organiza3ons-best-prac3ce/
29AWS Landing Zoneソリューションとは• Landing Zoneの実装⽅法の1つ、これ→• AWSソリューションとして提供されている• CloudFormationで展開する• ただし延⻑サポート中で追加機能は提供されない
30AWS Control Towerとは• Landing Zoneを展開するマネージドサービス• AWS Landing Zoneソリューションの後継• ⼤体→のような感じ
31それぞれの違い• Landing Zoneは考え⽅で、実装⼿段としてAWSLanding ZoneソリューションやControl Towerがある• どちらの仕組みもAWS Organizationsを使う• 既存の仕組みを使うなら今はControl Tower1択
32AWS Organiza@onsが必須なの︖Landing ZoneにOrganiza.onsは必須ではない無くてもLanding Zoneの構築は可能でもあると楽
33それぞれの要素の⼿法を紹介
34ID管理• AWS SSO• ソリューションやControl Towerで使⽤• ADなどIdPと連携可能• OktaとかOneLoginとかIdPサービス• AWS SSOを使わなくても直接AWSアカウントにSSOできる機能を持っている• AWS以外のSSOにも利⽤できる• IAM管理AWSアカウント• AWS Organizationsがなくても実現できる
35ガードレール• Service Control Policy(予防的ガードレール)• OU/アカウント全体に強制的に適⽤するポリシー• Config Rules(発⾒的ガードレール)• ポリシーに違反する設定を検知・⾃動修復できる• AWS Organizationsが無くても利⽤可能• Aggregatorにより集約可能• Dome9/Prisma Cloudなど(3rd Party)• Posture Management系のサービス• AWS以外にも対応、Organizations不要
36ベースラインサービス⼀例• CloudTrail• Config• GuardDuty• Security Hub• IAM Access Analyzer• Detective• マルチアカウント連携機能があるものも
37合わせて読みたいSecurity Hubを利⽤したAWS環境のセキュリティチェックはもはややって当たり前の領域ブログを参考にやってみようh"ps://dev.classmethod.jp/ar3cles/2020-strongest-aws-securitycheck-prac3ce/
38合わせて読みたいGuardDutyで発⾒したセキュリティインシデントの調査を⾏うための最強サービスGuardDutyと合わせて有効化推奨
39ベースラインの展開• CloudFormation StackSets• Control Tower• Terraform• CodePipeline
40合わせて読みたいAWS SummitでVisional様が発表した内容Terraformで展開h'ps://dev.classmethod.jp/ar8cles/aws-summit-online-2020-cus-06/
41ログ管理• 集約⽤S3バケット• アーカイブ⽤• SIEMなどに連携することも可
42Landing Zoneに必要な要素まとめ• Landing Zoneはマルチアカウント管理の考え⽅• Control Towerはその実装の1つ• OrganizationsやControl TowerがなくてもLanding Zoneの実現は可能
433. Control Towerの展開と運⽤
443. Control Towerの展開と運⽤• 仕組み• 使い⽅• 具体的な実装と運⽤• 細かいハマりどころ• メリット・デメリット
45仕組み
46展開する仕組み• 役割は4つ• マネジメント• Audit• Log Archive• Custom(任意)
47展開する仕組み• Control Towerを有効化したアカウントがマネジメントアカウント(親)• CoreOU配下にLogArchiveとAuditアカウントを作成• CustomOU(任意のOU)に新しいアカウントを追加できる
48マネジメントアカウントに展開される仕組み• AWS Organizations: 昔は既存のOrganizationsが作成されているとダメだった。今はOK• AWS SSO: 管理下のアカウントはすべてSSOでアクセスする。外部IdP連携は利⽤可能
49マネジメントアカウントに展開される仕組み• Service Catalog: CustomOUのアカウントに各種仕組みを展開するテンプレートを持つ• CFn Account Baseline: CloudTrail/Configなどの設定を全アカウントに展開する
50CoreOUの仕組み• Log Archive: 管理下のアカウントのCloudTrail/Config等のログを集中管理する• Audit: 管理下のアカウントのセキュリティ監査を⾏う。Configを集約する
51CustomOUの仕組み• Control Towerのアカウントファクトリーから新規AWSアカウントを作成する時にOUを選択する• Account BaselineとNetwork Baselineが展開される
52使い⽅
53使い⽅• セットアップ• ガードレール設定• アカウントファクトリー• AWS SSOでアクセス
54セットアップ• ポチッと有効化• 60分待つ• 出来上がり詳細はブログへ無効化はサポート申請なのでうかつに有効化しないようにh0ps://dev.classmethod.jp/ar=cles/aws-control-tower-labs-b1/今はラボが変わっているので以下も参照してくださいh0ps://controltower.aws-management.tools/immersionday/
55ガードレール• SCP(予防)とConfig Rules(検出)で実現している• 必須と任意(強く推奨 / 選択的)がある• CoreOU特有の必須ガードレールがある• 任意ガードレールはOU毎に設定可能• Control Towerを有効化したらどんなOUを作りどんな任意ガードレールを適⽤するか考える
56展開されるガードレール(必須)• ログアーカイブの保存時に暗号化を有効にする• ログアーカイブのアクセスログ作成を有効にする• ログアーカイブへのポリシーの変更を不許可にします• ログアーカイブへのパブリック読み取りアクセスを不許可にする• ログアーカイブへのパブリック書き込みアクセスを不許可にする• ログアーカイブの保持ポリシーを設定する• CloudTrail への設定変更を不許可にします• CloudTrail イベントと CloudWatch logs を統合する• 利⽤可能なすべてのリージョンで CloudTrail を有効にする• CloudTrail ログファイルの整合性検証を有効にする• AWS Control Tower によって設定されたCloudWatch への変更を不許可にします• AWS Control Tower によって設定された AWSConfig アグリゲーションへの変更を不許可にします• AWS Config への設定変更を不許可にします• 利⽤可能なすべてのリージョンで AWS Config を有効にする• AWS Control Tower によって設定された AWSConfig ルールへの変更を不許可にします• AWS Control Tower によって設定された IAM ロールへの変更を不許可にします• AWS Control Tower によって設定された Lambda 関数への変更を不許可にします• Amazon SNS によって設定された AWS ControlTower への変更を不許可にします• AWS Control Tower によって設定された AmazonSNS のサブスクリプションへの変更を不許可にします
57展開できるガードレール(任意)• MFA なしで IAM ユーザーへのアクセスを許可しない• MFA なしで IAM ユーザーへのコンソールアクセスを許可しない• S3 バケットのクロスリージョンレプリケーションを許可しない• MFA なしで S3 バケットでの削除アクションを許可しない• バージョンが有効かされていない S3 バケットを許可しない• EBS ⽤に最適化されていない EC2 インスタンスタイプの起動を許可しない• EC2 インスタンスにアタッチされていない EBSボリュームを許可しない• EC2 インスタンスにアタッチされた EBS ボリュームの暗号化を有効にする• RDS データベースインスタンスへのパブリックアクセスを許可しない• RDS データベーススナップショットへのパブリックアクセスを許可しない• 暗号化されたストレージではない RDS データベースインスタンスを許可しない• RDP を介したインターネット接続を許可しない• SSH を介したインターネット接続を許可しない• ルートユーザーとしてのアクションを許可しない• ルートユーザーのアクセスキーの作成を許可しない• ルートユーザーに対して、MFA を有効化する• S3 バケットへのパブリック読み取りアクセスを不許可にする• S3 バケットへのパブリック書き込みアクセスを不許可にする
58アカウントファクトリー• Control Towerから新規AWSアカウントを発⾏する仕組み• Service Catalogを利⽤して作成・設定の展開が⾏われる• デフォルトではNATGateway勝⼿に作られるので初⼿VPC作成無効化推奨
59AWS SSOでアクセス• 作成したAWSアカウントへのアクセスはAWSSSOを利⽤する• アカウントファクトリーで登録したユーザー or 追加でSSO上で権限を付与したユーザーでアクセス
60具体的な実装と運⽤
61管理外リージョンへのガードレール展開• Account Factoryをフックして管理外のリージョンにもガードレール(Config Rules)を展開するソリューションが提供されているh'ps://dev.classmethod.jp/ar8cles/extend-aws-control-tower-governance-to-other-region/h'ps://aws.amazon.com/jp/blogs/mt/extend-aws-control-tower-governance-using-aws-config-conformance-packs/
62各種セキュリティ機能の有効化• CloudTrail / Configは有効化されているが以下は有効化されない• GuardDuty• Security Hub• IAM Access Analyzer• Detective• Auditアカウントに委任してOrganizations連携して有効化するといい(Detectiveはできませんが)
63OU / SCP追加• 実利⽤するAWSアカウントのためのOU / SCPは追加で設計して作成する必要がある• 追加ガードレール(GuardDuty等)変更禁⽌• テストOUでインスタンスタイプ制限• リージョン制限• 参考: https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps_examples.html• これに役⽴つ機能はないので、ここはControlTowerが無い時と同じ
64バージョンアップ• Control Towerはマネージドサービスだが、機能の追加でバージョンアップが必要になる事がある• 追加リージョン• ⼦アカウントへの追加設定• などなど• ⼿動でバージョンアップを実施し、必要に応じて⼦アカウントでも作業が必要• 全体管理の仕組みをある程度楽に展開できると考えたらいいかも
65合わせて読みたいControl Towerが2.6になりリージョンの選択が可能になったので更新してみたポチポチやってバージョンあげますh"ps://dev.classmethod.jp/ar3cles/control-tower-2-6/
66安全な運⽤• Control Towerに限らずSCPは思惑と違う制限を⽣むことがある• OU間のアカウントの移動がうまく⾏かなかったりワークロードが⽌まることも考える必要がある• アカウント周りの作業を安全に⾏うSCPが緩めのOUを⽤意するのもあり• Control Tower⾃体の動作検証に別のControlTowerセットを⽤意するのもあり
67細かいハマりどころ
68アカウント受け⼊れ時• ⼀部のリージョンでSTSを無効化しているとアカウントの受け⼊れに失敗する• 受け⼊れ時に事前チェックする内容はUserGuideにまとまっている• https://docs.aws.amazon.com/controltower/latest/userguide/importing-existing.html• 他にもStackSetsの数やSCPなど要チェック• 受け⼊れ時に失敗した場合、状況によりロールバックに失敗したCFnの⼿動対応が必要
69アカウント受け⼊れ時• AWS Configを⼀度無効化する必要がある• マネジメントコンソールで無効化するだけでは⾜りない• 表⽰されないリソースが残っている• 削除して回る必要があるh"ps://dev.classmethod.jp/ar3cles/disable-config-all-region-cli/
70SIEMの展開にAuditアカウントを利⽤する• CoreOUであるAuditやLog Archiveの制約は⼤きく、S3バケットの扱いなど制約が⼤きい• 必須のSCPは現状外すことはできない• 全体管理の仕組みはCoreOU以外で作成するのが現状の対応⽅法
71合わせて読みたいAmazon ESを利⽤したAWSログの可視化ソリューションOSSだよいい感じだよh"ps://dev.classmethod.jp/ar3cles/geDng-started-siem-on-amazon-elas3csearch-service/
72Landing ZoneにControl Towerを採⽤するメリット・デメリット
73メリット• (操作的に)簡単にLanding Zoneをセットアップできる• ガードレールが⾃動で設定・展開される• 任意のガードレールを簡単に設定・解除できる• アカウント⼀覧とコンプライアンス状況が1機能で簡単に管理できる• ガードレールや管理の仕組みがマネージドで提供され、(⽐較的)簡単にバージョンアップできる
74デメリット• Landing Zoneの柔軟性がない• 独⾃のガードレール追加は簡単ではない• 必須ガードレールを外せない• CoreOUの機能を変更できない• 料⾦コストを抑えられない -> リージョンを外すのは2.6で対応• 孫OUに対応していない• SCP設定数が通常より1-2個制限される• 対応リージョンが限られる• 管理外リージョンの管理に⼿間がかかる(2重管理)• セキュリティ機能を別で管理する必要がある• 東京リージョンに対応していない• バージョンアップ時に負荷がかかる
75今どう判断するかデメリットはだんだんなくなる始めたいと思う時に始めるといい
76推奨選定⽅法• 早く簡単にLanding Zoneを構築したいか• Landing Zoneの構成がある程度固定されていて問題ないか• 料⾦コストより構築・運⽤管理コストを削減したいか• 現状の必須/任意ガードレールを許容できるか• AWS SSOを利⽤したアクセスが問題ないか• 現状東京リージョンが対応していなくて問題ないか• 東京リージョンに対応したい時にControl Towerを構築し直す覚悟があるか
77まとめ
78まとめ• AWSアカウントの全体管理はだんだん⼤変になるので、早めに仕組みを考える• Landing Zoneは⼗⼈⼗⾊。まずはIAMまとめるところからでもいいのでやってみる• ⼿っ取り早く統制を効かせるならControl Tower。今から検証して東京対応したら始めよう︕
79