SCPでルートユーザーアカウントを制限する

AWS のルートユーザーに対して SCP で制限できるか? を実際に試して確認しました。
2021.12.24

コンニチハ、千葉です。

Organizationsの機能として SCP(サービスコントロールポリシー)があります。SCPを利用すると、Organizationsのメンバーアカウントに対し、呼び出すAPIを制限できます。制限は、IAMのみならず AWS アカウントの中で最も権限が高いルートユーザーに対しても制限をかけられます。

で、ルートユーザーに対してどこまで制限がかけられるか、制限ができない項目は何かを調べてみました。

SCPでの制限できない項目

SCP によって、以下の項目が制限されません。 SCPで設定したとしても実行できてしまう項目になります。

  • 管理アカウントによって実行されるすべてのアクション
  • サービスにリンクされたロールにアタッチされたアクセス許可を使用して実行されるすべてのアクション。
  • root ユーザーとして Enterprise サポートプランに登録する
  • root ユーザーとして AWS サポートレベルを変更する
  • root ユーザーとして Amazon CloudFront キーを管理する
  • 信頼された署名者に CloudFront プライベートコンテンツの機能を提供する
  • Amazon Lightsail メールサーバーの逆引き DNS をルートユーザーとして設定する
  • 一部の AWS 関連サービスでのタスク
    • Alexa Top Sites
    • Alexa Web Information Service
    • Amazon Mechanical Turk
    • Amazon Product Marketing API

逆に言うと、それ以外は全て制限可能ということです。ルートユーザーのMFA登録・削除、パスワード変更、アクセスキーの操作などセキュリティに関わる部分に対して制限可能なはずです。このあと実際に制限をかけられるか試してみます。

また、アカウントを作成した時期によって一部制限できない項目があります。

2017 年 9 月 15 日以前に作成されたアカウントで制限されない項目

  • root ユーザーの Multi-Factor Authentication を有効化または無効化
  • root ユーザーの x.509 キーの作成、更新、または削除
  • root ユーザーのパスワードの変更
  • ルートアクセスキーの作成、更新、または削除

2017 年 9 月 15 日以前のアカウントは、SCPで制限をかけたとしても、パスワード変更やMFA設定、ルートアクセスキー設定が可能ということですね。SCPを利用する上で、動作が異なるためかなり重要なポイントですね。

最新情報は、AWS ドキュメントを確認しましょう。

検証

ルートユーザーの全てを Deny するポリシーを作成してみます。

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

これを適用し、以下の操作を行ってみました。(検証したアカウントは、2017 年 9 月 15 日以降作成されたものになります。)

  • ルートユーザー MFA 操作
  • ルートユーザー パスワード変更
  • ルートユーザー アクセスキーの操作
  • 解約操作

ルートユーザー パスワード変更

ルートユーザーのパスワードを変更してみます。

SCP で拒否されているメッセージが出力され、パスワード変更できませんでした。

ルートユーザー MFA 操作

MFA 設定についても同様エラーが表示されます。

ルートユーザー アクセスキーの操作

ルートユーザーのアクセスキー発行についても、制限されていることを確認できました。

解約操作

解約も制限できるのでしょうか? 解約のボタン自体が表示されなくなりました。

さいごに

ルートユーザーの操作もきちんと制限できました。ルートユーザーは一番強い権限を持っていますが、Organizations のメンバーアカウントについて、ルートユーザーの権限を制限できることが確認できました。よりセキュアなAWSアカウント管理に繋げられそうです。 ただし、メンバーアカウントのルートユーザーはSCP制限対象になりますが、管理アカウント自身はSCPの影響を受けないため、認識しておきましょう。

参考

https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps.html