東京上陸!AWS Control Towerを触ってマルチアカウント管理のベストプラクティスを理解する ~セットアップ編~

こんにちは、上野です。 マルチアカウント管理のサービスであるAWS Control Towerを触ってみました。 その機能について紹介します。

東京リージョンにまだ来てないけど、来ることを願って検証しておこう。と思って触っていたら東京リージョンにきてました!!バンザイ

AWS Control Towerのバージョン一覧の画面で以下のように表示されていました。

f:id:fu3ak1:20210408214111p:plain

AWS Control Towerとは

f:id:fu3ak1:20210408214706p:plain

最近では開発環境、本番環境といった環境ごとにAWSアカウントを分ける運用が普通になってきました。環境だけではなく、ログアーカイブ、アカウント集約といった全体管理の用途でAWSアカウントを作成する場合もあります。

AWSアカウントが増えてくると、各アカウントで作成時にセキュリティ対策を行ったり、複数のアカウント全体でガバナンスを効かせて安全に運用していくことが難しくなってきます。

そんなマルチアカウント運用の課題を解決してくれるサービスがAWS Control Towerです。AWSのベストプラクティスに基づいた、セキュアな状態の新規アカウントのセットアップと、セットアップ後も安全に使用できるようガードレールを簡単に設定できるサービスになります。

AWS Control Towerに出てくる用語

よりサービスを理解するためには、AWS Control Towerで使用される各用語から理解したほうが良いためそれを紹介します。

Landing Zone

Landig Zoneは、AWS上のベストプラクティスなマルチアカウント構成の考え方であり、特定のアカウント構成を指すものではありません。

Landig Zoneに組み込まれるマルチアカウントの設定の例としては以下のようなものがあります。

  • AWS Organizations を使用したマルチアカウントの作成
  • AWS SSOを使用した認証の一元管理
  • AWS CloudTrailやAWS Configなどのセキュリティサービスを有効にしてログを一元管理する

AWS Control TowerではAWSマネージドなLanding Zoneを提供するサービスです。

どのようなアカウント構成でどういったサービスが使用されるかは後ほど紹介します。

AWS Organizations

AWS Control Tower経由で利用されるサービスです。複数のAWSアカウントを管理して、各種サービスをアカウント間で連携できる機能を持ちます。

元々は複数アカウントの利用料請求を一括にできるという機能のみを持っていました。(そのときはOrganizationsという名前じゃなかったかも)

f:id:fu3ak1:20210408213405p:plain

現在では、次に説明するサービスコントロールポリシー(以下SCP)やOUを使用したガードレール設定や、全アカウントでサービスを一括有効にするといった機能を持ちます。

f:id:fu3ak1:20210408213700p:plain

Organizationsの解説については、私個人の記事にはなりますが以下でまとめています。

fu3ak1.hatenablog.com

ガードレール

ガードレールとは、チェックリストのような形式で固くセキュリティを守ってブレーキをかけるのではなく、望ましくない設定を制限または検知することで自由を確保しながらセキュリティを担保するという考え方です。

制限するほうを予防的ガードレール、検知するほうを発見的ガードレールと呼びます。

予防的ガードレールはAWS OrganizationsのSCP、発見的ガードレールはAWS Config ルールで実装されます。

SCPについては以下の資料を参考にしていただけたら幸いです。

Configルールは簡単ではありますが以下資料に記載があります。

事前準備

以下の環境が必要です。

  • マネジメント用AWSアカウント
  • 2つの新規AWSアカウント用のメールアドレス(Log Archiveアカウント、監査アカウント用)
  • (新規アカウント作成を試すのであれば)上記2つに加えて1つの新規AWSアカウント用のメールアドレス

マネジメント用AWSアカウントは、全サービス(特にセキュリティ系)が無効状態なまっさらなアカウントで始められるが理想です。すでに有効になっているサービスがあると、以下のように有効にできない場合があるため、手動で各サービスを無効にしていく必要があります。

f:id:fu3ak1:20210407225219p:plain

AWS Control Towerのセットアップ

マネージメントコンソールからポチポチ有効にしていきます。

f:id:fu3ak1:20210407231343p:plain

AWS Control Towerのセットアップ内容や注意事項、ホームリージョン(東京!)が表示されます。

f:id:fu3ak1:20210407231700p:plain

ログアーカイブアカウントと監査アカウントのメールアドレスを入力します。新規AWSアカウントのため、AWSで利用していないメールアドレスである必要があります。

f:id:fu3ak1:20210407231945p:plain

了承して、ランディングゾーンの設定!

f:id:fu3ak1:20210407232042p:plain

残り時間60分となるので気長に待ちます。ブラウザ閉じても裏で頑張ってくれるので大丈夫です。

f:id:fu3ak1:20210407232950p:plain

60分と表示されていましたが、私の場合は20分ほどで完了しました。

f:id:fu3ak1:20210407234815p:plain

有効化中、以下のようなSSOの招待メールと、SNSのサブスクリプション依頼メールが飛んでくるので承認しておきます。

f:id:fu3ak1:20210407235437p:plain

セットアップはここまでです。簡単ですね。

AWS Control Tower環境の確認

色々とセットアップの過程で作られているので順に見ていきます。

組織単位(Organizational unit)

組織単位(以下OU)は、複数のアカウントをグループ単位に管理する機能で、このOU単位にSCPを設定してガバナンスを効かせることができます。ControlTowerでは、セットアップ時に作成したログ集約と監査アカウントが配置されるCore OUと空の状態のCustom OUが作成されます。

f:id:fu3ak1:20210408001921p:plain

ガードレール

ガードレールメニューを確認すると、AWS Control Towerで設定されたガードレールを確認できます。必須/強く推奨/選択的の3種類あり、必須のガードレールは自動的に有効になります。強く推奨/選択的は利用者側で必要に応じて有効にします。

f:id:fu3ak1:20210408084936p:plain

各ガードレールをクリックして詳細を見ると、有効状況や準拠状況(コンプライアンスステータス)が確認できます。

f:id:fu3ak1:20210408093137p:plain

必須ガードレール(一部)

  • (ログアーカイブアカウントの)ログアーカイブの削除を許可しない
  • 利用可能なすべてのリージョンで AWS Config を有効にする
  • AWS Config への設定変更を不許可にします
  • 利用可能なすべてのリージョンで CloudTrail を有効にする

全量は公式ドキュメントを参照してください。 監査系のサービス(CloudTrail、Config)の強制有効や変更拒否が多く、利用者のシステム構築には影響の少ないガードレールが多いですね。

強く推奨のガードレール(一部)

  • SSH を介したインターネット接続を許可しない
  • ルートユーザーのアクセスキーの作成を許可しない

利用方法によっては一部操作を制限してしまうものもあります。個人的には、内容を見る限り強く推奨のガードレールも有効にして良いかなと思います。全量はこちら

選択的ガードレール(一部)

  • MFA なしで IAM ユーザーへのアクセスを許可しない
  • バージョンが有効化されていない S3 バケットを許可しない
  • MFA なしで S3 バケットでの削除アクションを許可しない

有効にすると状況によっていAWS操作やバケット作成が出来ないなど、厳しい制限もあります。重要情報保持など、環境に応じて選んでいくのが良いと思います。全量はこちら

ガードレールで使用されるSCPのConfigルールを構成図に加えると次のようになります。

f:id:fu3ak1:20210408205029p:plain

AWS SSO

AWS SSOは一つの認証情報(ユーザー名、パスワード)で、複数アカウントにIAM権限を持ってログインできるサービスです。AWS Control Towerを有効にすると自動でセットアップされます。

SSOの招待メールから承認を行い、パスワードを設定してログインすると以下の画面が表示されます。

f:id:fu3ak1:20210408153943p:plain

最初に設定された管理アカウント、Log archiveアカウント、Auditアカウントの3アカウントに、AWSAdministratorAccess(全操作許可)権限でログインできます。Management console を選択することでマネジメントコンソールにアクセスできます。

管理アカウントについては、AWSServiceCatalogEndUserAccessという権限もあり、この権限を使用してアカウント新規作成を実行できるようになっています。

AWS SSOを構成図に足すと次のようになります。少しゴチャゴチャしてきましたね。

f:id:fu3ak1:20210408205510p:plain

CloudFormation StackSetsによるサービス設定

SCP、Config、AWS SSO以外のいくつかのサービスについても、BASELINEという形でCloudFormationにより設定されます。CloudFormationのStackSetsという機能が使用され、複数アカウントにリソースが作成されます。

すべてではないですが、以下のような設定が行われます。

  • 全アカウントでCloudTrail有効、証跡保存先はLogArchiveアカウントのS3バケット
  • 全アカウントでConfig有効、ログ保存先LogArchiveアカウントのS3バケット
  • AWS Control Towerが使用するクロスアカウント用IAMロール作成
  • CloudWatchやSNSなどの通知設定

※StackSetsの内容を見て確認しているので正確じゃない場合もあります。ご了承ください。

これらのサービスも構成図に足すと以下のようになります。CloudWatchイベントなど一部省略していますが、それでもかなり複雑になります。

f:id:fu3ak1:20210408212305p:plain

後半へ続く

長くなったので一旦ここまでとします。今回は前提とセットアップの方法、セットアップ時に何ができるのかを紹介しました。

次回はアカウント追加の方法など、運用面も考慮した部分を見ていきたいと思います。

f:id:fu3ak1:20210325095452j:plain

執筆者上野史瑛

Japan APN Ambassador 2020
AWSを中心としたクラウドの導入、最適化を専門に行っています。