AWS Organizationsの新規設定と確認

## 1.概要
AWS Organizationsを試してみたのでまとめてみたいと思います。
AWS Organizationsにより複数のAWSアカウントを作成したり統合して管理可能になり、さらにOU(AWSアカウントをグルーピングしたようなもの)によるセキュリティポリシーの制御を行うことができるようになります。
AWS OrganizationsでAWSアカウントを新規作成したり、外部のAWSアカウントを招待して統合することができるようです。

AWSの管理部門がAWS Organizationsで社内のAWSアカウントを一括管理し、各部門やプロジェクトごとにアカウントを払い出すような使い方が一般的になりそうでしょうか。

## 2.利用方針
AWS Organizationsを使うにあたり、以下の方針でアカウント管理していきたいと思います。この構成方針で良さそうかは別途検証したいと思います。
利用ケースとしてはハイブリッドクラウド環境でAWS VPCとオンプレ間でVPN接続(VPCサブネットは同一にするが、それ以外のリソースを分離したい)する場合を想定しています。


1. AWS Organizationsを適用するAWSアカウントは配下のAWSアカウントとポリシーの管理のみを行う。このAWSアカウントにはコンピュートリソースやマネージドサービスを立ち上げない。
2. AWS Organizations配下のアカウントから共通的にアクセスされるリソースを管理するアカウント(VPCなど)にする。
（３からアクセスする場合には別AWSアカウントからVPCなどのアクセスできるようにする必要があり）
3. コンピュートリソースやマネージドサービスを稼働させるAWSアカウント。用途に応じて作成したりOUで階層化したりする。

<img width="678" alt="awsorg_5-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/ffcd7fc0-6e88-e104-5405-dc1193adfbb2.png">


## 3.設定
AWS Organizationsの設定手順を確認していきます。
既存のAWSアカウントにAWS Organizationsを有効化し、新規AWSアカウントを作成し管理できるようにします。

### 3-1.AWS Organizations有効化
1. アカウントのメニューから「自分の組織」を選択。

<img width="155" alt="awsorg_1.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/b38f3931-98e3-6aaf-9106-d625e1bb39f1.png">
2. 「組織の作成」を選択。
<img width="739" alt="awsorg_2.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/254427eb-8cfd-ef33-f272-1750229a76c4.png">
3. もう一度。
<img width="624" alt="awsorg_3.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/67c2de81-bc31-1ce6-5da3-60447b88191a.png">
4. AWS Organizationsが有効となり、現在のアカウントが表示されます。
<img width="1084" alt="awsorg_4.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/6b0af453-eca1-9170-6530-548c698a5513.png">

AWS Organizationsを有効にすると「Consolidated Billing verification complete」の通知メールが届きますので確認しておきましょう。

### 3-2. OU作成 
1. AWS Organizations有効直後はOUはなくROOTしかないので、OUを作成していきます。
<img width="1078" alt="awsorg_5.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/67e83a77-286d-6b71-5c20-7eb522356825.png">
と、その前にポリシータイプの有効化/無効化のサービスコントロールポリシーを有効化しておきます。（ROOTでサービスコントロールポリシーを有効化していないと、配下のOUにサービスコントロールポリシーをアタッチできない）

2. アカウントの整理から、以下のようかかんじでツリー構造でOUを作成。ここで作成したOUに対して、アカウントを所属させたり、ポリシーを適用したりします。
<img width="1075" alt="awsorg_5-4.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/7ab8957f-e47e-cc64-2558-6a6052e12ecb.png">

### 3-3.サービスコントロールポリシーの設定
AWSアカウント内で操作できる権限をサービスとそのアクションを定義してポリシーとして管理することができます。このポリシーをOUにアタッチすることでAWSアカウントが実行できる操作を制御します。

1. デフォルトポリシー(フルアクセスのみ)がありますが、必要に応じてポリシーを作成します。
<img width="789" alt="awsorg_6-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/2bee0cc6-f9b1-dcc9-7e9d-731e4465a0d4.png">
2.ポリシーの作成では、ポリシー名、説明、権限設定を指定します。全体の効果を選択は、記載の通りポリシーに一致しなかった場合の権限を既定動作です。（一致しない操作は全て拒否、一致しない操作のみ許可）
<img width="625" alt="awsorg_6-2.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/7c813162-86ce-4d17-a956-73a3d0f46644.png">
3.サービスとそのサービスに操作できるアクションを指定します。
今回はROOT以外はAWS Organizationsを参照・操作できないというポリシーを定義します。
<img width="609" alt="awsorg_6-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/ffc67c39-c4c6-dff7-7d83-c5a212763280.png">
<img width="652" alt="awsorg_6-4.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/56799a9f-6fa7-1532-7240-c77881a4d39b.png">
これでこのポリシーが適用されたAWSアカウントは、AWS Organizationsの全てのアクションが拒否となり何も操作できないことになります。
<img width="639" alt="awsorg_6-5.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/b88ad851-5a36-43ac-f4e6-73357dcf2f34.png">
<img width="796" alt="awsorg_6-6.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/69c84a5e-8e1f-06be-e9c4-73fb24e4ebb6.png">
ポリシーエディターで見るとJSON形式でポリシー設定を確認できます。

<img width="389" alt="awsorg_6-8.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/76d15574-dfa1-80c6-521c-8175ddf201a9.png">

ポリシーを作成しただけではOU/AWSアカウントに反映されません。OUへのアタッチが必要です。


### 3-4. サービスコントロールポリシーのOUへのアタッチ
1.作成したサービスコントロールポリシーをOUにアタッチします。アカウントの整理からOUを選択して、サービスコントロールポリシーを選択。
<img width="805" alt="awsorg_7-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/fc16776c-500d-6ce3-a751-a95ed0543980.png">
2.先ほど作成したサービスコントロールポリシーをアタッチします。
<img width="340" alt="awsorg_7-2.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/c0781e95-2bff-509e-3ebe-07b90ed08b44.png">
ROOTからフルアクセス可能なポリシーが継承されていますが、優先順位があるようで競合する場合はOUのポリシーが優先される。（もしくは拒否が優先？）

### 3-5. AWSアカウント新規作成
1.「アカウント」からアカウントの追加を選択。今回は新規にAWSアカウントを作成します。
<img width="758" alt="awsorg_8-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/aad723ac-2a3e-520e-90ff-45bf8a6b86b3.png">
2.フルネーム、Eメール、IAMロール名を指定します。新規AWSアカウントには、ここで指定したEメールでルートアカウントとしてログインします。
<img width="501" alt="awsorg_8-2.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/d43f40b6-5a90-8204-8eeb-b46196899391.png">
3.（情報消しているので見えませんが）AWSアカウントが作成されます。
<img width="717" alt="awsorg_8-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/432caa23-77ee-15e0-40a0-3714689ff4f9.png">
4.作成直後はROOT直下にあるので、OU配下に移動します。アカウント名をチェックし、移動を選択。
<img width="704" alt="awsorg_8-4.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/859e0ce0-1a66-e7f9-73b7-864d98ac0a85.png">
5.OUを指定し移動を選択。
<img width="624" alt="awsorg_8-5.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/c557bfdf-0b30-cdc7-4998-3237155fa5e9.png">
OUの配下にアカウントが移動しました。
<img width="457" alt="awsorg_8-6.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/0880cbfa-df00-6acb-3f55-0b8055d5bd42.png">

### 3-6.AWSアカウントへのログイン
1.AWS Organizations上で作成したアカウントにコンソールログインします。(ルートアカウントでログインします、メールアドレスは作成時に指定したもの。パスワードが不明の場合にはいちどリセット。）
<img width="360" alt="awsorg_9-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/1746a30d-f1f2-ba07-683f-28320c20d8aa.png">

2.ログインするとメニューが表示されますが、請求ダッシュボードの一括請求を確認してみます。組織のメンバーという表示があり、AWS Organizationsの配下のアカウントであることが確認できる。
<img width="1076" alt="awsorg_9-2.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/2147dda3-eca7-7c15-a9cd-e9c8d67cf159.png">

3.このAWSアカウントからAWS Organizationsを確認して見ると、ポリシー設定通りアクションが拒否されました。
<img width="1020" alt="awsorg_9-3.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/08f042da-dca1-ee40-5922-6318a9ea2e65.png">
参考ですがIAMロールを見てみるといくつかロールが作成されています。
<img width="1066" alt="awsorg_9-4.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/c797d654-cb01-749e-2908-0d7131d852c4.png">

あとはこのアカウント内で色々なサービスを動かしていたいと思います。

不要になったら、アカウントの設定からアカウントの解約を行います。解約するとAWS Organizationsのアカウント一覧でステータスが停止状態となります。
(AWS Organizationsからは削除できない）


## 4.まとめ
AWS Organizationsにて、自分が所有しているAWSアカウントの一元管理と、各アカウントが利用できるAWSサービスとアクションのポリシー設定を行えることを簡単にですが確認しました。
今回AWSアカウントを新規作成しただけなのでありがたみがわからないかもしれません。リソースのポリシー設定にて「指定したOU配下のAWSアカウント」...という使い方もできるか確認してみたいと思います。

単一のAWSアカウント内に存在するIAMロールの数が多くなってきたのでAWSアカウントを分離して管理できるかなと思い、設定を確認することにしました。（サービス用途に応じてロールを作ったり、EMRなどのサービスを稼働させたら自動作成されてロールがいっぱいに）

## 5.参考情報
[AWS Organizations とは何ですか?](https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_introduction.html)
[AWS Organizations詳細](https://aws.amazon.com/jp/organizations/details/)
[AWS Organizations の用語と概念](https://docs.aws.amazon.com/console/organizations/settings-features-all)
[チュートリアル : 組織の作成と設定](https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_tutorials_basic.html)