ControlTower導入の話(導入機能編)
はじめに
Septeni Japan株式会社でプロダクト開発&インフラセキュリティ対策を行っている市原と申します。
この記事は、社内のプロダクトに対してセキュリティのガバナンスを効かせる為にAWS Control Towerを導入した話となります。
Control Tower導入の話は下記のパートに分かれて記事を執筆しています。
今回は導入機能編となります。
アカウント構成
アカウント構成は以下に示す図のとおりです
OUとは、organizational unitの略で、任意の組織単位で分割が可能なものです(会社単位、プロジェクト単位、開発環境単位など)当社では、グループ会社に開発を委託するケースもある為、会社単位でOUを設定しています。
ControlTowerの導入によって作成・有効化されるサービス
「メンバーアカウント側」、「管理アカウント側」でそれぞれ作成・有効化されるサービスを紹介します。
下記のサービスはガードレールを構成するために必要なものなので、プロダクトチーム側は削除や変更をせずに運用します。
メンバーアカウント側
メンバーアカウント = プロダクトのアカウント
メンバーアカウント側では図示したサービスに加えて、SecurityHub、GuardDutyも有効化します。
管理アカウント側
管理アカウントとは、Rootアカウントが担う配下のアカウント管理の一部(統一的なルール適用やログの集約)を権限委任されたアカウントのことです。
ガードレールの機能
ガードレールの機能には、大きく分けて①コントロール(=ガードレール)適用、②通知、③ログ集約の3つがあります。
①コントロール(=ガードレール)適用
予防的コントロール
AWS OrganizationsのSCPによって、一部の操作を制限します。AWSのベストプラクティスが用意されており、その中で有効にするコントロールを決めて、セキュリティレベルを高めていくといったことができます。
有効化したコントロール一覧
現状の制限はControl Towerで制御する各種サービスの削除ができないというレベルに留めています。
例: CloudTrailをメンバーアカウント側からは削除できないなど
SCPは対象操作を全くできなくする機能の為、制限の範囲を大きくしすぎると何も操作できない状況となってしまう可能性もある為、制限は最小限としています。
サービス | 名前 |
---|---|
AWS Identity and Access Management (IAM) | ルートユーザーのアクセスキーの作成を許可しない |
AWS Identity and Access Management (IAM) | ルートユーザーとしてのアクションを許可しない |
Amazon CloudWatch | AWS Control Tower によって設定された Amazon CloudWatch Logs ロググループの変更を許可しない |
Amazon EventBridge | AWS Control Tower によって設定された Amazon CloudWatch の変更を許可しない |
Amazon S3 | ログアーカイブの削除を許可しない |
Amazon S3 | ログアーカイブで AWS Control Tower が作成した S3 バケットの暗号化設定の変更を許可しない |
Amazon S3 | ログアーカイブで AWS Control Tower が作成した Amazon S3 バケットのライフサイクル設定の変更を許可しない |
Amazon S3 | ログアーカイブで AWS Control Tower が作成した Amazon S3 バケットのログ記録設定の変更を許可しない |
Amazon S3 | ログアーカイブで AWS Control Tower が作成した Amazon S3 バケットのバケットポリシーの変更を許可しない |
Amazon SNS | AWS Control Tower によって設定された Amazon SNS への変更を不許可にします |
Amazon SNS | AWS Control Tower によって設定された Amazon SNS のサブスクリプションへの変更を不許可にします |
AWS CloudTrail | CloudTrail への設定変更を不許可にします |
AWS CloudTrail | CloudTrail イベントと CloudWatch logs を統合する |
AWS CloudTrail | 利用可能なすべてのリージョンで CloudTrail を有効にする |
AWS CloudTrail | CloudTrail ログファイルの整合性検証を有効にする |
AWS Config | AWS Control Tower によって作成された AWS Config アグリゲーション認可の削除を許可しない |
AWS Config | AWS Control Tower で AWS Config リソースに付けたタグの変更を許可しない |
AWS Config | AWS Config への設定変更を不許可にします |
AWS Config | 利用可能なすべてのリージョンで AWS Config を有効にする |
AWS Config | AWS Control Tower によって設定された AWS Config ルールへの変更を不許可にします |
AWS Identity and Access Management (IAM) | AWS Control Tower と AWS CloudFormation によって設定された AWS IAM ロールの変更を許可しない |
AWS Lambda | AWS Control Tower によって設定された AWS Lambda 関数の変更を許可しない |
Amazon EC2 | Amazon Virtual Private Network (VPN) 接続を禁止する |
AWS CloudFormation | AWS CloudFormation レジストリ内のリソースタイプ、モジュール、フックの管理を禁止する |
検出的コントロール
AWS Security Hub
有効化した項目などを次回で詳しく説明します
Amazon GuardDuty
AWS CloudTrail、VPC フローログ、および DNS ログにある AWS アカウントおよびワークロードのイベントデータを、継続的に監視および分析する機能
プロアクティブコントロール
AWS CloudFormation Hooks を活用し、AWS CloudFormation によってプロビジョニングされる前にコンプライアンスに違反しているリソースを未然に特定してブロックします。
当社では一部のプロダクトにおいて、serverless frameworkを使っています。serverless frameworkは内部的にCloudFormationを使っているので、そのプロダクトについてはプロアクティブコントロールが使えますが、AWS管理画面からリソースを作成などを行った操作は制御されなかったり、serverless frameworkを使っていないプロダクトでは適用できないため、現状ではこのコントロールは利用しないこととしました。
②通知
通知先のslackチャンネルをプロダクトごとに設定しています。通知はSecurityHub編②で詳しく説明します。
③ログ集約
メンバーアカウントでの各自の操作が、ログとして監査アカウント(Audit)に集約されます。仕組みとしては、AWS Configがサービスの構造変更を検知し、CloudTrailが操作ログを検知するといった切り分けになっています。
次回
次回はSecurityHub編①です。数多くのセキュリティ項目の中でどの項目を有効化したかに焦点を当てて紹介していきます。
We are hiring
Septeni Japanでは、一緒にプロダクト開発組織を盛り上げてくれる仲間を募集しています!
ご興味のある方は以下リンクから応募していただき、カジュアル面談を通じて働く環境や仲間を知っていただければと思います!
その際、応募フォームの「知ったきっかけ」に「テックブログ」と記載いただければと思います。
Discussion