☁️くもをもくもくまなぶ

クラウドコンピューティングサービスの学んだことを中心につらつらと書いています

Muiti-AWS Accountのアクセス制限(AWS Organizations)

AWS Organizationsを利用したアカウント制限

想定対象読者
  • 複数のAWS Accountの制限について困っている方
    • アカウントの解約を勝手にされると困る
    • 組織から勝手に離脱をされると困る
    • サポートケースを勝手に起票されると困る
      ... etc
本稿で取り扱っている内容

AWS Organizationsにおける SCP で制限

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

IAM でのセキュリティのベストプラクティスでも記載されていますが、
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の設定
  • サービスコントロールポリシーを有効
Image in a image block
  • サービスコントロールポリシーを定義
Image in a image block
AWS Organizationsの階層に適用

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

  • 【例】組織の離脱とアカウント解約を禁止する組織(OU)
Image in a image block
【禁止】組織から離脱とアカウント解約
  • Organizationsサービスメニューに移動
Image in a image block
  • 組織を離脱
Image in a image block

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

  • 権限不足が表示され組織の離脱を禁止
Image in a image block
  • アカウント解約のチェックボックス
Image in a image block
  • ポップアップの表示
Image in a image block

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

  • 画面上部に権限不足のエラーが表示され解約できない
Image in a image block
【禁止】サポートへアクセス
  • サポートページの上部にエラーが表示
Image in a image block
まとめ

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

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

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