AWS Organizations

目的

AWS Organizations のユースケースを大雑把に理解して仕事に活かせるようになること。

ユースケース

複数アカウントを一元管理したいときに利用する。

  • ステージごとにアカウントを管理したい
    • 例) 開発用、本番用のアカウント
  • アカウントごとの API 権限を管理したい
    • 例) 開発用アカウントは t2.micro 以外の EC2 インスタンスタイプ を使用できないように制限する

用語集

  • Service Control Policies (SCPs)
    • アカウントに適用されるポリシー
    • 管理アカウントの SCP はデフォルトでフルアクセス権限
例) t2.micro 以外の EC2 インスタンスタイプ を使用できない
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireMicroInstanceType",
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "ec2:InstanceType": [
            "t2.micro"
          ]
        }
      }
    }
  ]
}
  • Organization Unit (OU)
    • アカウントのグループ
    • OU 同士で階層化できる
    • 上位の OU の SCPs が継承される
管理アカウント
  |--開発アカウント(管理アカウントの SCPs を継承)
       |--本番アカウント(管理アカウントと開発アカウントの SCPs を継承)

SCP を使用したセキュリティー戦略

  • Deny List 戦略

    • 子アカウントの SCP で Deny を選択し 管理アカウントの SCP を上書きする
  • Allow List 戦略

    • 管理アカウントの SCP からフルアクセス権限を削除

    • 許可する権限を SCP に追加する

    • 下の階層にあるアカウントがある権限を付与されるには必ず明示的に SCP による許可が必要