【AWS】初心者必見！複雑なポリシー類を簡単にまとめてみた！


## はじめに
<!--
何についての記事なのか、誰に向けた記事なのかを簡単に説明しましょう。
-->

AWSのアクセスを管理するために用いるのがポリシー。
AWSの中に計6種類もあるポリシー達が複雑だったので、
なるべくわかりやすくまとめてみました！

### この記事でわかる・できること
<!--
読んだら何がわかるようになるのか、何ができるようになるのかを書きましょう。
-->

>- AWSに存在する各ポリシーが簡単に理解
>- ポリシーの優先順位を２つのポイントで理解


### この記事の対象者
<!--
誰に向けた記事なのかを明確にすることで読者に選んでもらいましょう。
-->

>- AWSポリシーの基礎を理解したい方
>- 該当するポリシーの使い道が分かりづらいと感じる方


### おおまかな流れ
<!--
誰に向けた記事なのかを明確にすることで読者に選んでもらいましょう。
-->

この記事は以下の順序で記載しています！

>**1. [参考資料](#参考資料)**
**2. [ポリシーとは](#ポリシーとは)**
**3. [各ポリシーの解説](#各ポリシーの解説)**
**4. [ポリシーの優先順位](#ポリシーの優先順位)**
**5. [まとめ](#まとめ)**


## 参考資料
<!--

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html
-->


https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_identity-vs-resource.html

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_boundaries.html

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html


## ポリシーとは
- IAMアイデンティティ（IAMユーザー/IAMロール等）やAWSリソースに関連付ける
　→アクセス許可を定義できる
- 通常はJSONでアクセス条件を記述
- 以下の文言を記述する
  - 誰が
  - どのAWSサービスを
  - どのリソースに対して
  - どんな操作を
  - 許可する（許可しない）


## 各ポリシーの解説

### アイデンティティベースのポリシー
- **誰（ユーザー）や、どんな役割の人（ロール）が操作できるか**を定義
- 以下2種類のポリシーがある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936261/64b28e4a-be39-903d-288f-db3b8f19a419.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936261/a9cc9b14-99cc-ceb5-9d04-f7ace155da78.png)
- 付与しているポリシーがどちらかはポリシーのタイプで判断




### リソースベースのポリシー
- AWSのリソースに**直接付与**
- [特定のリソース](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)（数はなんと421種）だけ付与可能
- 特定の操作（読み書き、削除など）を許可、拒否できる
- アイデンティティベースのポリシーとの違いが分かりにくいと感じたそこの貴方！
以下表を参考に少しずつ覚えよう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936261/680d6bc6-e0e5-c5da-beea-88bea1cbff71.png)



### アクセス許可の境界
- IAMユーザーやロールに設定
- IAMユーザーやロールの権限の上限を決められる
- どんなに多くポリシーを付与しててもアクセス境界にあるポリシーと
**共通するものしか適用されない**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936261/4e4826c8-e4bc-e163-3183-eb01f9385bda.png)



### Organization SCP
- 組織内の複数AWSアカウントに対して、**特定のAWSサービス**を制限する
- 以下のようなことが出来る
   - 特定のAWSサービス使用禁止
   - 特定のIAMユーザーやロールの実行アクションの禁止
   - 特定リージョンでのリソース作成を禁止
- **組織全体のセキュリティポリシーを適用**したい場合に使える


### Organization RCP
- 組織内の複数AWSアカウントに対して、**特定のリソースへのアクセス**を制限する
- 以下のようなことが出来る
   - 特定のリソースタグが付与されたリソースの作成禁止
   - リソース作成数の制限
   - 特定リソースの削除禁止
- **特定リソースへのアクセスを厳密に制御したい**場合に使える


### アクセスコントロールリスト（ACL）
- 特定のリソースへのアクセス権限を定義するリスト
- リソースに対して直接紐づく
- リソースベースのポリシーとの違いとして、ACLは**JSON形式で書かない**

### セッションポリシー
- ユーザーのセッション中（ユーザーがログイン中）の動作を制御
- 不正なアクセスやデータ漏洩を防ぐのに有効
- 使用例
   - パスワードに加え、SMS認証や認証アプリなども要求する際にMFAを条件とする
   - ユーザーが一定期間操作しなかった場合、自動的にセッションを切断する
   - 特定のIPアドレスからのアクセスのみを許可する




## ポリシーの優先順位
### ポイント１.ポリシーの評価は<font color="brown">上から下へ</font>
- 以下の順番で評価される
   - セッションポリシー
   - リソースベースのポリシー
   - アイデンティティベースのポリシー
   - Organization SCP,RCP

### ポイント２.ポリシーの評価は「<font color="brown">拒否</font>」が優先
- 以下の順番で評価される
   - <font color="brown">**明示的**</font>な拒否（**Deny**）が記載
   - <font color="brown">**明示的**</font>な許可（**Allow**）が記載
   - 上記がない場合は<font color="brown">**暗黙的に拒否**</font>（**Deny**）される
- ポリシーの中に拒否（Deny）があれば、例え他ポリシーで
許可（Allow）されていても許可されない


## おわりに・まとめ
初めてのQiita記事が本記事で中々苦戦しましたが、
少しでも皆さんのお力になれたら幸いです！