2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Control Tower Guide (ハンズオン) をやってみて気が付いたことを整理してみた

Posted at

はじめに

複数の 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 分ほど起動すると、成功となることがある。
    • 以下のエラーとなった場合は、この対処方法が該当する可能性が高い
      image-20230102140053470.png
  • ホームリージョンは一度選択したら変更できない。ホームリージョンを選択する際の考慮点は次の通り
    • 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 に任せると役割に合いそう。

image-20230102203853925.png

OU Management

  • Control Tower の管理外で作成されていた Organizations の OU を、Control Tower に登録が出来る。
    image-20230102150937111.png
    • 実際に登録をする際に、Control Tower の裏側で事前チェックが行われる。事前チェックに失敗した場合は、登録を中断し、修正するべき項目が表示される
    • 登録に 2 時間くらいかかる。この登録処理をしている最中に、他の Control Tower の操作は行えないため注意。
      image-20230102151248467.png

New AWS Account

新しい AWS アカウントを作成する権限を、他のユーザーに与えることが可能。これにより、管理者がボトルネックになることを緩和できる。

Applying Controls

ガードレールを設定したときに、管理している 全 AWS アカウント上違反しているリソースを一元的に可視化可能。管理アカウントの Dashboard に表示される。

image-20230102152343657.png

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 をデプロイすると、次の構成図のシステムが出来上がる。

image-20230102185220496.png

できることをざっくり記載。

  • 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 機能がある。

簡単に画像を貼る。

image-20230102192756497.png

Add quota

image-20230102192909465.png

Add

image-20230102192942039.png

追加された

image-20230102193003044.png

この設定で完了。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 を指定する。

image-20230102194945584.png

Audit Account 側

GuardDuty の Accounts のページに、Organizations で管理している全ての AWS アカウントが表示されている。

全ての AWS アカウントで GuardDuty を有効化するために、Enable を押す。

image-20230102200638705.png

Enable

image-20230102200732612.png

子 AWS アカウントで、GuardDuty 有効化の処理が走っている。

更に、Auto-enable をクリックして、今後新たに作成される AWS アカウントでも、自動的に GuardDuty を有効化にさせる。

image-20230102200951720.png

Update Settings

image-20230102201048574.png

今後何かしらの脅威を検出したら、Audit アカウント側の Findings に、全 AWS アカウントのものが表示される。

image-20230102201335603.png

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 を指定する。

image-20230102202129282.png

Audit Account 側

Organizations 配下のすべての AWS アカウントが表示されている。Add member をして、管理する対象を選択する。

image-20230102202513154.png

Add member

image-20230102202522050.png

Auto Enable

image-20230102202551737.png

ON

image-20230102202601160.png

Enable に変わった

image-20230102203005673.png

Findings に、子 AWS アカウントが全て表示される

image-20230102203054597.png

Security Standard の方は、子 AWS アカウントの分は表示されない

image-20230102203128201.png

IAM Access Analyzer の一元管理

参考 URL

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?