AWS Organizations再入門

# 概要
AWS OrganizationsはAWS認定Professionalの「組織の複雑さに対応する設計」ドメインの問題を解くための重要な要素だが、個人では利用する機会がなく、エンタープライズでも社内のAWS全体を管理するような部署でなければなかなか触れることができない。
仕方がないので、資料を見ながらアウトプットすることで少しでも理解を深める。
※なので、これはただの勉強ノート兼備忘録ですという言い訳
参考にした資料(SlideShare)(公式)：[AWS Black Belt Online Seminar AWS Organizations](https://www.slideshare.net/AmazonWebServicesJapan/20180214-aws-blackbeltorganizations)

# AWS Organizations(AWS組織)とは
企業でAWSを利用する場合、環境やシステムごとに権限の分離のためアカウントを複数作成することが推奨される。
アカウント間では権限は完全に分離されているため、複数アカウントにまたがった管理・制限や請求の一元化を行うための機能としてAWS Organizationsが存在する。
AWS Organizationsを利用することで主に下記の3点が実現できる。

- 複数のAWSアカウントの一元管理
- AWSアカウント新規作成の自動化
- 請求の簡素化

# AWS Organizationsの機能セット
AWS Organizationsには2つの機能セットがある。

| 機能セット | マスターアカウントへの一括請求 | アカウントの新規作成・招待・削除 | サービスコントロールポリシーによる一元管理 |
|:-:|:-:|:-:|:-:|
| Consolidated Billing Only<br>(一括請求のみ) | ◯ | ◯ | ☓ |
| All Feature(すべての機能) | ◯ | ◯ | ◯ |

一括請求のみでも、アカウントの作成・招待や削除はできる。

# OU(Organization Unit: 組織単位)
組織内にある複数AWSアカウントのグループで、OUにAWSアカウントを追加することでポリシーを一括適用できる。
OUには階層があり、下の階層にはSCPやタグポリシーなどのポリシーが継承される。
![スクリーンショット 2021-01-30 16.25.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/71556f54-86c8-2b2e-9f6e-e26696045c30.png)
引用元：https://www.aws.training/Details/eLearning?id=42403

# SCP(Service Control Policy: サービス管理ポリシー)
AWS Organizationsを利用する主たる目的の一つ。
組織内の権限の`上限`を定義することができる。(IAMの「アクセス許可の境界(Permission Boundary)」と似ている)
組織内のアカウントやOUに対して事前に「このサービスは利用させない」「これ以上の権限レベルは与えない」という制限をかけるのに利用する。

![スクリーンショット 2021-01-31 18.20.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/d4545361-df06-1e31-1e78-3488f13af7a2.png)
引用元：[【AWS Black Belt Online Seminar】AWS Identity and Access Management (AWS IAM) Part1](https://youtu.be/K7F5yTThynw)

## SCPの適用対象
以下の3つに割り当てることができる(マスターアカウントは適用対象外)

- 組織ルート
- OU(組織単位)
- アカウント

## SCPによるアクセス可否の決定ロジック

基本的なアクセス可否の決定ロジックはIAMと同じだが、SCPは制限をかけるためのものなのでDenyは1つでもついていれば有効、AllowはSCPとIAMポリシーの両方で指定されて初めて有効。
![スクリーンショット 2021-01-31 18.09.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/630d6ab8-d348-7a84-1561-870b347e99ca.png)
引用元：[【AWS Black Belt Online Seminar】AWS Identity and Access Management (AWS IAM) Part1](https://youtu.be/K7F5yTThynw)

![スクリーンショット 2021-01-31 18.11.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/2b62a93a-cf49-f4f0-41aa-b9b305b7670b.png)
引用元：[【AWS Black Belt Online Seminar】AWS Identity and Access Management (AWS IAM) Part1](https://youtu.be/K7F5yTThynw)

## SCPの構文ルール
基本的にはIAMのポリシーと同一の構文ルール。
違いは以下2点のみ。

- `Principal`は指定できない  
(アイデンティティベースポリシーと同様、付与先が`Principal`となるため)
- `Resource`には`"*"`以外指定できない

```json:SCP記述例
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": "*"
  }
}
```

# Consolidated Billing(一括請求)
SCPと並び、AWS Organizationsを利用するもう一つの目的。
その名の通り、組織内の**利用料がマスターアカウントに集約**される。
ボリュームディスカウントやリザーブドインスタンスの**割引が組織内で共有**できる。
(勘違いしがちだが、リザーブドインスタンスは1つの同一のインスタンスである必要はない、1時間単位で合計3600秒のインスタンスの起動に対し1インスタンス分の請求、この範囲内であれば同時に複数インスタンス起動でも問題ない)
![ri-per-second-billing-concurrent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/c352f98f-9117-f300-1fa6-f185ea706344.png)
**例：**
同一組織内にAWSアカウントAとBがあったとする。
この組織ではt3.microのリザーブドインスタンスを1年分購入している。
AWSアカウントAで1:00にt3.microインスタンスを起動、1:30に停止、AWSアカウントBで1:30にt3.micoインスタンスを起動、2:00に停止した場合、購入済みのリザーブドインスタンスの利用料以上に追加で請求は行われない。

# タグポリシー
組織内のタグ付けに関するポリシーを定義し、タグを標準化するための仕組み。
大文字小文字や値として利用できる文字列などを定義し、このルールに準拠しないタグの付与を防ぐ。
例： タグ`Env`キーの値には`Dev`, `Stg`, `Prd`以外付けさせない

詳しくは下記参照
https://blog.serverworks.co.jp/tag-policies