はじめに
複数の AWS アカウントを管理するための Control Tower 機能があります。管理する AWS アカウントに対して予防的ガードレールを適用してガバナンスを利かせたり、子 AWS アカウントを生成する機能を使って、本番環境に影響を及ぼさない形で検証をすすめるなど、メリットがあります。
Control Tower の細かい部分や、運用が楽になる方法がよくわかってなかったこともあり、AWS が公式で出している英語のハンズオンをやってみました。
https://catalog.us-east-1.prod.workshops.aws/workshops/122b644d-03d6-4e2f-80dc-854c4a0f5bca/en-US
この記事では、上記ハンズオンを実施してみて、個人的に知らなったポイントを整理します。細かい Control Tower の操作手順などは、上記の URL を参考にしてみてください。
ハンズオンの章ごとに整理をしていきます。
Landing Zone Set Up
- 作成したばかりの AWS アカウントでは、Control Tower の Landing Zone の作成に失敗することがある。その場合は、無償枠に収まる t2.micro の EC2 インスタンスを 15 分ほど起動すると、成功となることがある。
- ホームリージョンは一度選択したら変更できない。ホームリージョンを選択する際の考慮点は次の通り
- IAM Identity Center が、ホームリージョンで展開される。
- Log Archive アカウントに蓄積される CloudTrail などのログは、S3 Bucket や CloudWatch Logs に蓄積される。このときの蓄積されるリージョンが、ホームリージョンで選択したものになる。ログの保存場所が国内にするコンプライアンスがある場合は、ホームリージョンを日本に選択する。
- Region Deny Setting を有効にすると、利用しないリージョンの操作を Control Tower 側で一律禁止にできる。
- 2023 年 1 月現在、Osaka Region を許可 (Governed) にすることができない。そのため、Region Deny Setting を有効にすると、Osaka Region が使えなくなる。
Landing Zone を有効化にした直後の OU 構成
以下に簡単な絵で整理する
- Log Archive アカウント : CloudTrail や Config といったログ情報などをストアするための AWS アカウント
- Audit アカウント : セキュリティチーム用の監査用の役割のアカウント。デフォルトでは、Config の Aggregator が設定されていて、全 AWS アカウントの評価結果を確認できる。Security Hub や GuardDuty といった追加のセキュリティサービスの一元管理を、Audit に任せると役割に合いそう。
OU Management
New AWS Account
新しい AWS アカウントを作成する権限を、他のユーザーに与えることが可能。これにより、管理者がボトルネックになることを緩和できる。
Applying Controls
ガードレールを設定したときに、管理している 全 AWS アカウント上違反しているリソースを一元的に可視化可能。管理アカウントの Dashboard に表示される。
Moving Accounts
OU 間の AWS アカウントの移動が可能
既存の AWS アカウントの登録
既存の AWS アカウントを Control Tower 配下で管理するときに、既に AWS Config を利用している場合は、エラーになる可能性がある。一度 AWS CLI で Config を無効化する方法が紹介されている。(マネージメントコンソールの無効化では、不十分で、AWS CLI で無効化が必要らしい)
Identity Provider と連携
AWS IAM Identity Center と、Azure AD, Google WorkSpace, Okta などの IdP 間で連携する方法が紹介されている。会社全体の IdP が有るなら、基本的にはそれと連携させた方が負担が軽くなる。
Customizations for Control Tower (CfCT)
Control Tower で作成する、子 AWS アカウントに対して、自動的なカスタマイズを提供するソリューションがある。Customizations for Control Tower (CfCT) と呼ばれている。
CfCT は、いくつかの AWS サービスで構成されているソリューションになっており、CloudFormation のテンプレートが AWS から提供されているため、簡単にデプロイ可能。CfCT をデプロイすると、次の構成図のシステムが出来上がる。
できることをざっくり記載。
- AWS CodeCommit (や S3?) で CfCT 用の manifest ファイルを管理する
- manifest ファイルには、OU 単位で有効にする SCP だったり、カスタマイズをするための CloudFormation Template を指定できる
- 子 AWS Account が新たに作成されたタイミングで、その OU に割り当てられている SCP や、CloudFormation の StackSet が実行される。
例えば、全 AWS アカウントで EC2 を起動するなど、特定の処理を自動的に実行させることができる。
manifest ファイルは、こんなかんじの yaml ファイル
---
# Home region for CodePipeline, StepFunctions, Lambda, SSM, StackSets
region: us-east-1 # Control Tower Home Region
version: 2021-03-15
resources:
# ControlTower Custom SCPs - Additional Preventive Guardrails
- name: test-preventive-guardrails
description: Prevent deleting or disabling resources in member accounts
resource_file: s3://marketplace-sa-resources-ct-us-east-1/ctlabs/preventive-guardrails.json
deploy_method: scp
# Apply to the following OU(s)
deployment_targets:
organizational_units:
# New Essential OU names since ControlTower v2.7 April 16.
# Observe the names of your existing OUs and comment out or uncomment below to match yours.
- Security # Formerly Core
- Sandbox # Formerly Custom
#- Core
#- Custom
# ControlTower Custom CFN Resources - Create Additional IAM Role
- name: create-iam-role
resource_file: s3://marketplace-sa-resources-ct-us-east-1/ctlabs/describe-regions-iam-role.template
deploy_method: stack_set
deployment_targets:
organizational_units:
# New Essential OU names since ControlTower v2.7 April 16.
# Observe the names of your existing OUs and comment out or uncomment these to match yours.
- Security # Formerly Core
- Sandbox # Formerly Custom
#- Core
#- Custom
regions:
- us-east-1
# ControlTower Config Rule - Additional Detective Guardrails
- name: rotate-access-keys-guardrail
resource_file: s3://marketplace-sa-resources-ct-us-east-1/ctlabs/access_keys_rotated.template
parameters:
- parameter_key: maxAccessKeyAge
parameter_value: '24'
deploy_method: stack_set
deployment_targets:
organizational_units:
# New Essential OU names since ControlTower v2.7 April 16.
# Observe the names of your existing OUs and comment out or uncomment these to match yours.
- Security # Formerly Core
- Sandbox # Formerly Custom
#- Core
#- Custom
regions:
- us-east-1
Account Factory for Terraform (AFT)
Terraform で子供の AWS アカウントをカスタマイズする AFT という機能が紹介されている。Terraform を使ったカスタマイズらしい。
Personal Health Dashboard の一元管理
Control Tower の親アカウントで、**Enable organizational View ** の 1 ボタンを押すだけで、子 AWS アカウントの情報を一元管理できる。
Quota request template
新しく作成する子 AWS アカウントで、Service Quota の上限緩和を自動的に行う Quota request template 機能がある。
簡単に画像を貼る。
Add quota
Add
追加された
この設定で完了。Control Tower で新しい AWS アカウントを作成したら、自動的に Service Quota の上限緩和を申請してくれる。
GuardDuty の一元管理
Organizations 内の特定の AWS アカウントを指定して、GuardDuty の管理者として委譲することが出来る。管理者に指定された AWS アカウントは、指定されたリージョンで GuardDuty が自動的に有効になり、そのリージョン内の Organizations 内のすべてのアカウントに対して GuardDuty を有効にして管理する権限が付与されます。
Control Tower 的には、Audit アカウントに委譲するのが基本的な選択肢になりそう。
Note : この設定は、リージョン単位で 全 AWS アカウントに対して自動的に有効にする設定となる。複数のリージョンを対象にしたいときは、リージョンごとに設定を入れないといけない。
この機能でできることは、ざっくり以下の通り
- 既存の AWS アカウントすべてに対して、GuardDuty の有効化の操作が出来る
- 新しく作成される AWS アカウントに対して、自動的に GuardDuty を有効化する
- Organizations 配下の AWS アカウントで検出した Findings を、一元管理して表示する
簡単に設定手順を紹介する。
Management Account 側
GuardDuty の Setting のページで、GuardDuty を一元管理するための Audit アカウントの ID を指定する。
Audit Account 側
GuardDuty の Accounts のページに、Organizations で管理している全ての AWS アカウントが表示されている。
全ての AWS アカウントで GuardDuty を有効化するために、Enable を押す。
Enable
子 AWS アカウントで、GuardDuty 有効化の処理が走っている。
更に、Auto-enable をクリックして、今後新たに作成される AWS アカウントでも、自動的に GuardDuty を有効化にさせる。
Update Settings
今後何かしらの脅威を検出したら、Audit アカウント側の Findings に、全 AWS アカウントのものが表示される。
Security Hub の一元管理
Security Hub の Findings を、特定の AWS アカウントで一元管理させることが可能
- 既存の AWS アカウントに対して、Security Hub を有効化する
- 新しい AWS アカウントに対して、自動的に Security Hub を有効化する
- Organizations 配下の AWS アカウントで検出した Findings を、一元管理して表示する
- Security Standard にある、セキュリティスコアを付けてくれる機能は、子 AWS アカウントの分は表示されないので、それぞれ 子 AWS アカウントにログインする必要がある。
簡単に設定手順を紹介する。
Management Account 側
SecurituHub の Settings で、委譲する AWS アカウントの ID を指定。ここでは、Audit を指定する。
Audit Account 側
Organizations 配下のすべての AWS アカウントが表示されている。Add member をして、管理する対象を選択する。
Add member
Auto Enable
ON
Enable に変わった
Findings に、子 AWS アカウントが全て表示される
Security Standard の方は、子 AWS アカウントの分は表示されない
IAM Access Analyzer の一元管理
参考 URL