Muiti-AWS Accountのアクセス制限（AWS Organizations）

# [AWS Organizations](https://aws.amazon.com/jp/organizations/) を利用したアカウント制限

## 想定対象読者

* 複数のAWS Accountの制限について困っている方
   * アカウントの解約を勝手にされると困る
   * 組織から勝手に離脱をされると困る
   * サポートケースを勝手に起票されると困る
   ... etc

## 本稿で取り扱っている内容

:ok_woman_tone1: AWS Organizationsにおける [SCP](https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps.html) で制限

## AWSのアカウント権限について

[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)でも記載されていますが、
AWSにおける **rootアカウント** とは特権ユーザであり通常サービス制限はありません。
（AWSアカウント開設時登録したEメールアドレスでログインする場合）

ただし、AWS Organizationsでは **rootアカウント** に対して制限を掛けることが可能です。
一般的に、AWS Organizationsは一括請求の利用するケースでイメージをされる方が多いかと思います。

### 検証の前に

#### SCP定義

##### 【禁止】組織から離脱とアカウント解約

* denyModifyRoot.json
    * **rootアカウント** でAWS Organizationsから離脱
    * **rootアカウント** でアカウント解約

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyLeaveOrg4Root",
      "Effect": "Deny",
      "Action": [
        "organizations:LeaveOrganization"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    },
    {
      "Sid": "DenyModAct4Root",
      "Effect": "Deny",
      "Action": [
        "aws-portal:ModifyAccount"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    }
  ]
}
```

##### 【禁止】サポートへアクセス

* denyRootAccessSupport.json
    * **rootアカウント**でサポートへアクセス

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyActionsRoot",
      "Effect": "Deny",
      "Action": [
        "support:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    }
  ]
}
```

### 検証

#### AWS Organizationsの設定

* サービスコントロールポリシーを有効

![AWS_Org_SCPs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/7c6a5f84-0e0d-c080-f3d1-0ea2b2cd481b.png)

* サービスコントロールポリシーを定義

![AWS_Org_SCPs_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/dc8a3313-32fa-85f4-0531-70a5e73b1892.png)

#### AWS Organizationsの階層に適用

ポリシーを「アタッチ」「デタッチ」をするだけであり、
画面上「デタッチ」と表示されている箇所は適用されている箇所です。

* 【例】組織の離脱とアカウント解約を禁止する組織（OU）

![AWS_Org_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/a24643c2-0f6e-670c-2086-e0f7cd8e4da8.png)

##### 【禁止】組織から離脱とアカウント解約

* Organizationsサービスメニューに移動

![Org_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/da30dfc5-9381-ac23-1e68-67700224a63d.png)

* 組織を離脱

![Org_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/b5086575-7035-fbb6-cb11-f3cc44ffb237.png)

※　本検証以外で上記のオペレーションを行っている方は自己責任でお願いいたします

* 権限不足が表示され組織の離脱を禁止

![Org_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/17994dea-3e47-f5ad-d8a4-9f1860034d2d.png)

* アカウント解約のチェックボックス

![Mod_Act.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/2f9da1a0-835a-48b5-8abd-0e9150716df2.png)

* ポップアップの表示

![Mod_Act_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/9a33271b-a797-4461-c7fb-bd94412bcaa6.png)

※　本検証以外で上記のオペレーションを行っている方は自己責任でお願いいたします

* 画面上部に権限不足のエラーが表示され解約できない

![Mod_Act_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/d713dce9-5c0f-3bfe-5c6a-514058d64858.png)

##### 【禁止】サポートへアクセス

* サポートページの上部にエラーが表示

![Sup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182636/a2c8255f-f787-bed7-42fb-3938f7674b72.png)

## まとめ

AWS Organizationsを利用すると、例えrootアカウントでも操作をできないよう制限できることが確認できました。

また、今回のようにrootアカウントで行うことが一般的なアカウント解約や組織の離脱といった、
オペレーションについても制限することが可能です。

今回はあくまでも一例であり、なかなかニッチな利用方法だとは思いますが、
複数のアカウント運用でお困りの方で参考になれば幸いです。