AWS公式資料で挑むSCS認定(5)-IAM

[前回] [AWS公式資料で挑むSCS認定(4)-サービス勉強順](https://qiita.com/mingchun_zhao/items/ba73f37e1d3b50facffc)
## はじめに
前回は、SCS認定対象となるサービス群の勉強順を決めました。
早速、AWSセキュリティの中核で、超重要なIAMです。
## IAMの登場人物
押さえておくべき概念と用語
### IAMアイデンティティ(ID)

- IAMユーザー
    - 特定のユーザーにアクセス権限付与できる
- IAMグループ
    - 複数ユーザーを束ねて同じアクセス権限を付与でき便利
- IAMロール
    - 一時アクセス権をユーザー・アプリ・サービスに付与する
    - AWSではIAMロールをスイカ(?)ヘルメットで表していた
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/9b1e826c-d35c-9fb1-0352-200dd4b4f342.png)
    - 自己解釈: 一般人でもこのヘルメットかぶせたら一時的に秘密基地に入れる、出たら即外されまた一般人
        - ※特記事項: この魔法のヘルメットは、アプリやEC2インスタンスにもかぶせられる

### IAMリソース
ユーザーが使用・操作できるすべてのエンティティ、例

- Amazon EC2 インスタンス
- VPC エンドポイント
- Amazon S3 バケット
- パーミッション(権限の実態もオブジェクトなので、リソースの一種か)

### アクション
リソースへの操作、例

- CreateUser
- RunInstances
- CreateBucket

### 認証
認証方法

- パスワード
    - ユーザーに付与
    - AWS Management Consoleへのログインに利用
- アクセスキー
    - ユーザーに付与
    - アプリAPIのアクセス認証で使用
    - 1アカウントにつき二つまで
- 一時認証トークン
    - 有効期限付きのアクセスキーID/シークレットアクセスキー/セキュリティトークンで構成
    - AWS Security Token Service(AWS STS)により動的生成
    - IAMロールが使う
    - これを使って権限委任できる
- 多要素認証(MFA)
    - 特権ユーザーに設定
    - 認証強化のため

### 認可
ユーザーがリソースに対し、どんな権限を持ち、どんなアクションできるか。
ポリシーにIDとリソースの関連付けを記述することで、アクセス許可を定義。

ポリシーの種類です。定義主体がIDかリソースかなどによって、

- IDベースポリシー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/294c07fe-e5f8-01e7-116a-fbad21e02d86.png)
    - 管理ポリシー
        - 複数IAMユーザー、グループ、ロールに関連付け可能(最大10個)
            - AWS管理ポリシー(AWSにより事前定義)
            - カスタマー管理ポリシー
    - インラインポリシー
        - 単一IAMユーザー、グループ、ロールに直接埋め込む

- リソースベースポリシー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/744514ae-5e8b-54e1-736c-8fa162c62e53.png)
    - インラインポリシーのみ

- その他ポリシー
    - パーミッションバウンダリー
        - AWS IAMアクセス許可の境界
            - IAMユーザーとロールの範囲を限定し、権限の昇格を防ぐ
        - AWS Organizationsサービスコントロールポリシー (SCP)
            - 組織のアクセス許可の管理に使用できる組織ポリシーの一種
    - アクセスコントロールポリシー (ACL)
        - リソースへのアクセス可否設定リスト
            - Amazon S3のバケットのACL
            - Amazon VPCのサブネットのACL

### プリンシパル
AWSリソースに対しアクションをリクエストできるユーザーまたはアプリケーション。
プリンシパルは、AWSアカウントのルートユーザーまたはIAM エンティティとして認証される必要がある。

### IAMエンティティ
認証に使用されるリソースオブジェクト全般。
IAMユーザー、IAMロール、アプリも含まれる。

### Amazonリソースネーム (ARN)
AWSリソースを一意に識別するための表記。
ARN形式例:

```
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id
```

## 勉強資料

[AWS Black Belt Online Seminar]資料を使って勉強しました。
わからない概念は、随時AWSユーザーガイドで検索し調べる、といった感じです。
他にも、先人たちが資料やノウハウを無償提供していました、感謝感謝。

### [AWS Black Belt Online Seminar]のIAM資料

- [ベストプラクティスで学ぶAWSの認証・認可~ Part1](https://d1.awsstatic.com/webinars/jp/pdf/services/20190129_AWS-BlackBelt_IAM_Part1.pdf)
- [ベストプラクティスで学ぶAWSの認証・認可~ Part2](https://d1.awsstatic.com/webinars/jp/pdf/services/20190130_AWS-BlackBelt_IAM_Part2.pdf)

重要と思われる内容のメモ書き:

- アクセス可否の決定ロジック
    - すべてのアクセスはデフォルトで拒否(暗黙的Deny)
    - 最小権限の原則か
    - アクセス権限に“Allow”条件があった場合、アクセス許可
    - ただし、アクセス権限に１つでも“Deny”の条件があった場合、アクセス拒否(明示的Deny)

### IAMアーキテクチャ図
下記ブログ記事のアーキテクチャ図がわかりやすかったので共有します。
IAM全体像を一枚にまとめられるなんて、名人には脱帽です。

引用元: [ざっくり絵で理解するAWSのIAM用語「ユーザ、グループ、ロール、ポリシー](https://qiita.com/yterui/items/bcee829f4c8c13e20e68#iam%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E9%96%A2%E4%BF%82%E5%9B%B3)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/0488bb9b-12e1-c899-aad2-58829a5abed0.png)

手元において常時眺めてみたいので、ブックマークに入れておきました。

## おわりに
IAMサービスが提供するアクセス制御機能について勉強しました。
AWSセキュリティの土台、ということもあり、奥深いですね。
次回は、VPCの勉強に移る予定です。お楽しみに。

[次回] [AWS公式資料で挑むSCS認定(6)-IAM(続き)](https://qiita.com/mingchun_zhao/items/08308efcc48f031d8d3c)