AWS Control Tower のユースケースと活用例

AWS Control Tower は、マルチアカウント環境を一元管理し、ガバナンスを適用するためのサービスです。本記事では、AWS Control Tower の主なユースケースと、他の AWS サービスとの連携について解説します。

---

## **AWS Control Tower のユースケース**

### **1. セキュアなマルチアカウント管理**

#### **構成図**

![aws_control_tower_network.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294049/4ba1ec26-47b6-4d01-b184-22a4c476c784.png)

---

### **マルチアカウント管理の構成解説**
この構成図は **AWS Control Tower を活用したマルチアカウント管理の設計** を表しています。  
AWS Control Tower は **AWS Organizations を管理し、開発アカウント・本番アカウントを統括しながら、ガバナンスやネットワーク管理、IAM の適用を実施** する構成になっています。

---

### **構成要素の解説**
#### **AWS Control Tower**
・ **AWS Organizations を統括し、ガバナンスの適用を自動化**  
・ **SCP (Service Control Policies) を用いてセキュリティ制御を一元管理**  
・ **CloudTrail を活用し、全アカウントのログを統合管理**

#### **AWS Organizations (org)**
・ **複数の AWS アカウントを統括し、統一されたガバナンスポリシーを適用**  
・ 「開発アカウント」「本番アカウント」を AWS Organizations の管理下に配置

#### **開発アカウント (dev_iam)**
・ **開発環境専用の AWS アカウント**  
・ **IAM ロール (IAM Role) を設定し、開発者や CI/CD システムが適切な権限を持てるように管理**

#### **本番アカウント (prod_iam)**
・ **本番環境専用の AWS アカウント**  
・ **開発アカウントとは明確に分離し、厳格な IAM ロール (IAM Role) を設定してセキュリティを担保**

#### **Transit Gateway (transit_gw)**
・ **AWS 内の異なる VPC やアカウント間で安全なネットワーク接続を確立**  
・ **この構成では、開発アカウント・本番アカウントの VPC を統合し、ネットワーク管理を簡素化**  
・ **開発アカウントと本番アカウントの一部のリソースのみが通信できるように設定可能**

#### **CloudTrail (ログ管理)**
・ **各 AWS アカウントの API 操作ログを記録し、セキュリティ監査を強化**  
・ **AWS Security Hub と連携し、異常なアクティビティを検出**

---

### **データフロー・関係性**
✅ **AWS Control Tower → AWS Organizations**  
   - AWS Control Tower が AWS Organizations の管理を行い、SCP（Service Control Policies）を適用

✅ **AWS Organizations → IAM**  
   - AWS Organizations は開発アカウント・本番アカウントに対して IAM ポリシーを適用し、適切なアクセス制御を実施

✅ **Transit Gateway → 開発 / 本番アカウントの VPC**  
   - Transit Gateway は開発アカウント・本番アカウントのネットワークを統括  
   - これにより、異なるアカウント間でも安全にネットワーク通信が可能

✅ **CloudTrail & Security Hub → 監査 & セキュリティ対策**  
   - CloudTrail が全アカウントのログを一元管理  
   - Security Hub がセキュリティイベントを検出・通知

---

### **この構成のメリット**
✅ **ガバナンスの統一**
   - AWS Organizations を利用することで、マルチアカウント環境に一貫したポリシーを適用

✅ **環境の分離**
   - 開発環境と本番環境をアカウントレベルで分離し、リスクを軽減

✅ **セキュリティの強化**
   - IAM の適用により、適切な権限管理を行い、最小権限の原則を守る
   - CloudTrail & Security Hub による **監査 & 異常検知**

✅ **スケーラビリティ**
   - 新しいアカウントを追加する場合も、AWS Organizations を活用して容易に管理可能
   - ネットワーク拡張も Transit Gateway で一元管理

---

### **2. セキュリティとコンプライアンスの統制**

#### **構成図**

![control_tower_security.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294049/f5fd049f-a566-435e-ad71-bfb0d2f0c863.png)


### **セキュリティとコンプライアンス管理の構成図解説**

この構成図は **AWS Control Tower** における **セキュリティとコンプライアンス管理** の仕組みを表しています。  
AWS Control Tower は、**AWS Organizations、AWS Config、AWS Security Hub** を統合し、マルチアカウント環境のセキュリティとコンプライアンスを維持します。

---

## **構成の概要**
本構成は、以下の AWS サービスを活用して、セキュリティとコンプライアンスの監視を行います：

1. **AWS Organizations**
   - AWS Control Tower の中心となるサービス
   - 組織単位（OU）ごとにセキュリティガードレール（ポリシー）を適用
   - AWS アカウントの階層的な管理を実現

2. **AWS Config**
   - AWS リソースの設定変更を追跡し、コンプライアンスを監視
   - AWS Organizations のアカウントごとに設定の一貫性をチェック
   - 不適切な設定がある場合にアラートを発生させる

3. **AWS Security Hub**
   - AWS Config で検出された設定の問題や AWS 環境のセキュリティリスクを集約
   - **AWS GuardDuty、AWS Inspector** などのサービスと統合し、セキュリティの脅威を分析
   - セキュリティ基準（NIST、CIS ベンチマーク）に基づいた評価を実施

---

## **データフローの説明**
1. **AWS Organizations（組織管理）**  
   - AWS Organizations を使用して、組織全体のアカウントを統括的に管理します。
   - 各アカウントには、統一された **ガードレール**（ポリシー）が適用されます。

2. **AWS Organizations → AWS Config（コンプライアンス監視）**  
   - AWS Organizations に登録されている各アカウントで、AWS Config による設定の監視が行われます。
   - 例えば、S3 バケットのパブリックアクセスが適切にブロックされているかなどを自動的にチェックします。

3. **AWS Config → AWS Security Hub（セキュリティ統合）**  
   - AWS Config によって検出された設定ミスや非準拠項目が AWS Security Hub に送信されます。
   - Security Hub は、GuardDuty や Inspector など他のセキュリティサービスの情報も統合し、セキュリティ状況を分析します。

---

## **この構成のメリット**
✅ **組織全体でのセキュリティ統制が可能**
   - AWS Organizations を利用し、すべての AWS アカウントに一貫したガードレールを適用可能。
  
✅ **コンプライアンスの一元管理**
   - AWS Config により、設定の変更履歴を記録し、コンプライアンスの可視化ができる。

✅ **セキュリティリスクの早期検出**
   - AWS Security Hub で、リスクの集約と評価を行い、迅速な対応が可能。

---

### **3. DevOps や開発チーム向けのガードレール適用**

#### **構成図**

![aws_control_tower_guardrails.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294049/23e45260-3e83-4c4c-82b0-067af2283014.png)


### **開発チーム向けガードレール適用の構成図の解説**

この構成図では、**AWS Control Tower を活用して開発チームに対してセキュリティポリシーを適用し、特定のリージョンのみでリソース作成を許可する仕組み**を表しています。

---

## **構成要素の説明**
### **1. AWS Organizations**
- AWS Organizations は、複数の AWS アカウントを統合的に管理するためのサービスです。
- ここでは、AWS Control Tower の管理下で、開発チーム向けの **SCP（Service Control Policy）** を適用するために利用します。

### **2. SCP（Service Control Policy: 許可リージョン制限）**
- SCP（サービスコントロールポリシー）は、AWS Organizations を通じてアカウントや OU（組織単位）に適用できるアクセス制御ポリシーです。
- この構成では **「特定のリージョンのみでリソース作成を許可する」ポリシー** を設定し、開発チームのメンバーが不適切なリージョンで AWS リソースを作成するのを防ぎます。
- 例えば、以下のような SCP を適用することで、開発チームは **us-east-1（バージニア北部）** と **ap-northeast-1（東京）** のみでリソースを作成できるように制限できます。

  ```json
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "StringNotEquals": {
            "aws:RequestedRegion": ["us-east-1", "ap-northeast-1"]
          }
        }
      }
    ]
  }
  ```

### **3. IAM Policy（アイデンティティ・アクセス管理ポリシー）**
- IAM ポリシーは、特定のユーザーやグループ、ロールに対して **どの AWS リソースにアクセスできるか** を制御するためのポリシーです。
- SCP が「組織レベルでのアクセス制御」なのに対し、IAM ポリシーは「個々のユーザーやロールに適用する細かなアクセス制御」を行います。
- 例えば、S3 バケットの読み取り専用アクセスを開発チームに付与する場合、IAM ポリシーとして以下のように設定します。

  ```json
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::example-bucket/*"
      }
    ]
  }
  ```

### **4. 開発チーム（Users）**
- 開発チームのメンバーは AWS アカウントに IAM ユーザーや IAM ロールとして存在し、AWS Organizations で管理されます。
- 彼らの AWS 利用を **IAM ポリシーと SCP の両方で制御** し、安全な運用を確保します。

---

## **データフローの解説**
1. **AWS Organizations** を通じて **SCP（リージョン制限）** を適用。
2. 開発チームのメンバーは **SCP により許可されたリージョンのみでリソース作成可能**。
3. 開発チームの IAM ポリシーを適用し、各ユーザーに適切な権限を付与。

---

## **この構成のメリット**
✅ **マルチアカウント環境の一元管理**  
AWS Organizations を活用することで、開発チームが複数の AWS アカウントを利用する場合でも **共通のポリシーを適用** できる。

✅ **ガバナンスの強化**  
SCP により、意図しないリージョンでのリソース作成を防止し、**コンプライアンスリスクを低減** できる。

✅ **開発チームの柔軟な運用**  
IAM ポリシーと SCP を組み合わせることで、**必要最小限の権限を付与** しつつ、チームの生産性を損なわないセキュアな環境を提供できる。



このように、AWS Organizations, SCP, IAM を適切に組み合わせることで、**開発チームに自由度を持たせつつ、企業のセキュリティポリシーを遵守できる環境を実現** できます。

---

## **AWS Control Tower の主要コンポーネントと連携サービス**
AWS Control Tower は、以下の AWS サービスと連携することで、強力なマルチアカウント管理を実現します。

### **1. AWS Organizations**
- 複数の AWS アカウントを一元管理し、ポリシーを適用
- **OU（Organizational Unit）** を活用してアカウントのカテゴリ分け

### **2. AWS IAM と AWS SSO**
- **IAM**: ユーザーとロールのアクセス管理
- **AWS SSO**: 一元的なユーザー認証とログイン管理

### **3. AWS Config と AWS Security Hub**
- **AWS Config**: 各リソースの設定履歴を記録し、コンプライアンス違反を検出
- **AWS Security Hub**: セキュリティリスクの監視と分析

### **4. AWS CloudTrail と Amazon GuardDuty**
- **AWS CloudTrail**: すべての API 呼び出しを記録し、監査ログを提供
- **Amazon GuardDuty**: AI を活用した脅威検出と異常なアクティビティの検出

### **5. AWS Service Catalog**
- 標準化された AWS 環境をテンプレートとして提供し、環境構築を迅速化

---

## **まとめ**
AWS Control Tower は、マルチアカウント環境の統一管理、セキュリティ強化、監査の可視化を実現する強力なサービスです。他の AWS サービスと組み合わせることで、ガバナンスの効いたクラウド環境を構築できます。

AWS Control Tower の活用を検討している企業や開発チームは、まず AWS Organizations を活用し、必要なポリシーやガードレールを整備することから始めると良いでしょう。

また、各ユースケースごとに適切な AWS の構成を設計し、ガバナンスとセキュリティを強化することが重要です。