AWS入門：IAMユーザーで作業をする意味と最小権限の考え方、作成手順について体系的にまとめてみた

## **はじめに**
AWSを利用する際、適切なユーザー管理を行わないと、誤操作やセキュリティリスクが発生する可能性があります。

:::note warn
***特に、AWSのルートユーザーは最上位の権限を持っているため、日常的な作業で使用するのは危険です。***
:::

そのため、AWSではIAM（Identity and Access Management）を活用し、ユーザーごとに必要最小限の権限を割り当てることが推奨されています。

この文書では、IAMユーザーを使用する意義、最小権限の原則、IAMユーザーの作成手順、そしてセキュリティ強化のポイントについて解説します。

## **書こうと思ったきっかけ**
AWSを使用する中で、以下のような問題に直面したことがありました。

- ルートユーザーでログインしてしまい、誤って重要な設定を変更してしまった。
- IAMユーザーの権限を適切に設定しなかったため、不要なアクセスが許可されていた。
- 必要以上に強い権限を付与し、意図せずシステムを変更できる状態になっていた。

これらの経験を踏まえ、AWSのIAMユーザーを適切に設定し、安全に管理することの重要性を学びました。

***本記事を通じて、同じような課題を持つ方に役立つ情報を提供できればと思います。***

---

## **1. IAMユーザーで作業する意味**
### **なぜIAMユーザーを使うのか？**
AWSの管理を行う際に、**ルートユーザー（AWSアカウント作成時の最上位ユーザー）を直接使用するのは危険**です。そのため、IAMを利用して以下のメリットを得ます。

1. **セキュリティ強化**
   - ルートユーザーの誤操作や漏洩リスクを防ぐ。
   - 必要最小限の権限を持つIAMユーザーを作成し、業務に応じたアクセス制御を行う。

2. **監査とトラッキング**
   - IAMユーザーごとにCloudTrailなどでアクティビティを監査できる。
   - 誰が何を操作したかを明確にできる。

3. **権限の分離と管理**
   - 開発者、運用担当者、管理者などのロールに応じた権限設定が可能。
   - 必要な権限だけを付与する「**最小権限の原則**」を適用できる。

---

## **2. 最小権限の考え方**
### **最小権限の原則（Principle of Least Privilege）**
「最小権限の原則」とは、**必要最低限の権限のみをIAMユーザーやIAMロールに付与することで、セキュリティリスクを最小化する考え方**です。

### **適用方法**
1. **業務ごとに権限を細分化**
   - 例: S3バケットの読み取りのみ許可するユーザー、EC2の起動のみ許可するユーザーなど。

2. **IAMポリシーを使用**
   - AWSが提供する「管理ポリシー（AWS Managed Policies）」を使う。
   - 必要に応じて「カスタムポリシー（Customer Managed Policies）」を作成する。

3. **定期的な権限見直し**
   - **不要な権限は削除**し、ユーザーのアクセス制限を適切に管理する。
   - **AWS IAM Access Analyzer**を活用して不要な権限をチェック。

---

## **3. IAMユーザー作成と権限付与の手順**
### **IAMユーザー作成手順**
1. **AWSマネジメントコンソールにログイン**
   - **IAMユーザーではなくルートユーザーでログイン**（IAMユーザーがない場合）。

2. **IAMサービスを開く**
   - AWSマネジメントコンソールから「IAM」を検索して開く。

**実際のマネジメントコンソール画面**

![Screenshot 2025-03-06 at 11.40.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/97dca3e7-381e-4d23-b310-755be74ca803.png)

3. **IAMユーザーを作成**
   - **「ユーザー」 → 「ユーザーの作成」** をクリック。
   - ユーザー名を入力（例: `developer-user`）。

**実際のマネジメントコンソール画面**

![Screenshot 2025-03-06 at 12.33.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/092d55da-7fd1-40aa-b6af-ef0c0192dd26.png)

4. **アクセス権限を設定**
   - **AWSマネジメントコンソールの利用が必要なら「コンソールアクセス」** を有効化。

5. **ポリシーをアタッチ（権限を付与）**
   - 例:
     - S3の読み取り専用: `AmazonS3ReadOnlyAccess`
     - EC2の管理権限: `AmazonEC2FullAccess`
     - 限定的な管理者権限: `PowerUserAccess`（フル管理者ではない）

**実際のマネジメントコンソール画面**

![Screenshot 2025-03-06 at 12.35.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/fe49a491-326d-492b-aae8-0e8deaa44288.png)

6. **ユーザーの確認と作成**
   - 設定を確認して「作成」をクリック。

**実際のマネジメントコンソール画面**

![Screenshot 2025-03-06 at 12.39.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/9e6c2558-adc8-44bb-a6cd-d86738d032af.png)


7. **ログイン情報を取得**
   - IAMユーザー用の「AWSマネジメントコンソールのURL」が発行されるので、メモする。
   - 初回パスワードを設定してログイン。

**実際のマネジメントコンソール画面**

![Screenshot 2025-03-06 at 12.48.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/200f19ed-0989-47b6-b417-dd3b78de733e.png)

---

## **4. IAMユーザーのセキュリティ強化**
### **最低限やるべきこと**
1. **MFA（多要素認証）の有効化**
   - IAMユーザーのセキュリティを強化するためにMFAを設定。

2. **IAMグループを活用**
   - 似た権限を持つユーザーを「IAMグループ」にまとめ、管理しやすくする。

3. **アクセスキーの定期的なローテーション**
   - 長期間使用したアクセスキーは削除し、新しいキーを発行。

4. **不要なユーザーの削除**
   - 退職やプロジェクト終了後に不要なIAMユーザーを削除。

---

## **5. まとめ**
| 項目 | 説明 |
|------|------|
| **IAMユーザーを使う理由** | ルートユーザーを使わず、安全にアクセス管理するため |
| **最小権限の原則** | 必要最低限の権限だけを付与し、リスクを最小化 |
| **IAMユーザー作成手順** | IAMコンソールからユーザー作成→ポリシー付与→MFA設定 |
| **セキュリティ強化** | MFA必須、アクセスキーの定期変更、CloudTrail有効化 |
| **ベストプラクティス** | IAMロール活用、ポリシー定期見直し、不要な権限削除 |

IAMを正しく活用すれば、AWS環境を安全に管理できます。

***特に最小権限の適用とMFAの設定は必須なので、必ず実施しましょう！***