AWS アカウント制御・統制サービス[IAM,Organizations,ControlTower]

# この記事の概要 - サービスの大枠の理解

アカウント制御サービスの構造、内包するものを大枠で捉えるこのようになる。

**[Control Tower] > [Organizations(scpを内包)] > [IAM]**

## ✅ AWS 権限・ガバナンス構造：階層・内包関係の表

| レベル | サービス/要素名                                 | 内包関係                      | 主な役割・説明                                                  |
| --- | ---------------------------------------- | ------------------------- | -------------------------------------------------------- |
| ①   | **AWS Control Tower**                    | 最上位                       | 複数アカウントにおける初期設定、監査、SCP適用などを自動化。ベストプラクティスに基づく統合ガバナンスレイヤー。 |
|     | ├─ **AWS Organizations**                     | Control Tower に内包         | 複数アカウントを統合管理。OU（組織単位）構成とSCPの適用が可能。                       |
|     | │   └─ **SCP**（Service Control Policy）       | Organizations に内包         | OUやアカウント単位で「最大の許可範囲（上限）」を定義。IAMよりも上位レベルで制限をかける。          |
|     | └─ AWS Config / CloudTrail / Log Archive | Control Tower に内包         | 証跡記録や監査、ログ管理の自動化設定。セキュリティとコンプライアンス確保に必須。                 |
| ②   | **IAM（Identity and Access Management）**  | Organizationsとは別枠（アカウント内） | 各アカウント内での細かなアクセス制御（ユーザー、ロールなど）を担当。                       |
|     | ├─ IAMユーザー                               | IAM に内包                   | 実際の人間の操作ユーザー。個別にアクセス権限を割り当て可能。                           |
|     | ├─ IAMグループ                               | IAM に内包                   | ユーザーをグループ化し、まとめてポリシーを適用できる。                              |
|     | ├─ IAMロール                                | IAM に内包                   | 一時的または部分的に他のエンティティに権限を付与（例：Lambda, 外部委任など）               |
|     | └─ IAMポリシー                               | IAM に内包                   | 「誰が」「何を」「どう操作できるか」をJSONで定義し、ユーザー・ロール・グループに付与。            |

---

### 📌 ポイント補足

* **IAMは「各アカウント内部」でのアクセス制御**を担い、\*\*SCPは「IAMの許可範囲の最大上限を決める外部のフィルタ」\*\*という関係。
* **SCPだけではアクセスは許可されず、IAMと組み合わせて初めてアクセスが成立**します。
* **Control TowerはOrganizations＋SCP＋監査設定（Configなど）を一括で導入・統制できるフレームワーク**です。

---

## 🗂 対応関係まとめ

| レイヤー                | 役割・管理範囲               | 制御対象の単位        | 主な構成要素                      |
| ------------------- | --------------------- | -------------- | --------------------------- |
| Control Tower       | AWS組織全体の構築・統制の自動化     | 複数OU、アカウント     | Organizations, SCP, Config等 |
| Organizations + SCP | アカウント間のガバナンス設定（制限）    | アカウント or OU    | SCP（操作の上限制御）                |
| IAM（ローカル）           | 各アカウント内のユーザー/サービス権限制御 | IAMユーザー、IAMロール | ポリシー、ユーザー、グループ              |

---

## 🎯 ユースケース別 利用判断

| 利用場面・目的                    | 使うべきサービス              | 理由                   |
| -------------------------- | --------------------- | -------------------- |
| 全社で統一的なAWS環境を構築したい         | Control Tower         | ベストプラクティス構成を自動化できるため |
| 子会社や部署ごとにAWSアカウントを分けて管理したい | Organizations         | アカウント統合・請求まとめなどが可能   |
| 特定サービスを一切使わせたくない（例：EC2禁止）  | SCP                   | IAMよりも上位で制御できる       |
| Lambda関数にS3への書き込み権限を与えたい   | IAMロール + ポリシー         | サービス単位の細かな制御が可能      |
| 開発者ごとに異なる権限を与えたい           | IAMユーザー + グループ + ポリシー | 個別管理・グルーピング可能        |

---

## 🧠 注意ポイント

* **SCPはあくまで「上限の制御」** → IAMで許可されていても、SCPで拒否されていれば実行不可。
* **Control Towerは、SCPを自動適用する構成テンプレート付きOrganizations管理ツール**。
* **IAMロールは一時的にも、長期固定的にも使われる**（例：Lambdaに恒久的なS3書き込み権限など）。

---

# IAMの主要構成要素
誰が何をする制御するのかをまとめる

| 種類          | 主な用途・説明                                         | 制御対象（誰が）                         | 制御対象（何を）             | 備考                            |
| ----------- | ----------------------------------------------- | -------------------------------- | -------------------- | ----------------------------- |
| **IAMユーザー** | 個人やアプリケーションなど、長期的な認証情報（アクセスキーなど）を必要とするエンティティ。   | IAMユーザー自身                        | 各種AWSリソースへのアクセス      | 明示的にアクセスキーを発行できる              |
| **IAMグループ** | IAMユーザーをまとめて管理するための単位。グループにポリシーを付与することで一括管理可能。  | 所属するIAMユーザー                      | グループに紐付けた操作権限        | グループに直接アクセス権はない（ユーザーに伝播）      |
| **IAMロール**  | 一時的に権限を委任したいときに利用する仕組み。ユーザーやサービスが「一時的に引き受ける」役割。 | 引き受けたIAMユーザー / AWSサービス（例：Lambda） | ポリシーで定義されたリソース操作     | 信頼ポリシーで「誰がこのロールを引き受けられるか」を制御  |
| **IAMポリシー** | JSON形式の定義で、どのアクションをどのリソースに対して許可/拒否するかを定義。       | IAMユーザー、グループ、ロール                 | 操作対象のリソース（S3, EC2など） | 明示的にDenyすればたとえAllowがあっても拒否される |