はじめに

今回は、AWS Organizationsの一機能であるCentralize root access機能について紹介します。Centralize root accessはメンバーアカウントのルートユーザーを一元管理する機能です。同機能を利用することで、主に以下の操作が可能になります。

  • メンバーアカウントのルートユーザーの認証情報(アクセスキー、MFA設定、パスワードなど)を削除
  • メンバーアカウントのルートユーザーのパスワードリセット
  • S3 バケットポリシーの削除
  • SQS キューポリシーの削除

本稿では、Centralize root access機能の具体的な設定方法や利用にあたっての注意点を紹介していきます。

Centralize root access機能の設定方法

Centralize root access機能は、委任管理者をサポートしています。そのためこれまで紹介してきたサービス・機能と同じく、委任管理者として別のアカウントを指定していきます。以下のイメージ図の通り、管理アカウント以外を委任管理者として設定します。

管理アカウントの作業

まずは管理アカウントで委任管理者の設定を行います。

(1)IAMの画面へ遷移します。
(2)サイドメニューから「ルートアクセス管理」をクリックします。
(3)「有効化」ボタンをクリックします。

(4)委任された管理者としてメンバーアカウントのアカウントIDを入力し、「有効化」ボタンをクリックします。

(5)処理が成功し、委任管理者が設定されていることを確認します。

こちらで管理アカウントの操作は完了です。

委任管理者アカウントでの動作確認

それでは、委任管理者アカウントで動作確認をしていきます。

(1)委任管理者アカウントにログインし、IAMの画面へ移動します。
(2)サイドメニューから「ルートアクセス管理」をクリックします。
(3)いずれかのメンバーアカウントを選択すると、ルートユーザーの認証情報が存在するのか、存在する場合はどんな認証情報が存在するかを一元的に確認することができます。

(4)メンバーアカウントを選択した状態で「特権的なアクションを実行する」ボタンをクリックすると、以下のようにルートユーザーの権限を必要とする操作やルートユーザーの認証情報を削除する操作を選択することが可能です。

(5)今回はまずルートユーザーの認証情報を削除していきます。「ルートユーザー認証情報を削除」を選択し、「ルートユーザー認証情報を削除」ボタンをクリックします。画面のメッセージに表示されている通り、ルートユーザーの認証情報を削除すると、「パスワードをお忘れですか?」などの通常の復旧手順によるリセットもできなくなり、ルートユーザーでのコンソールサインインが完全にブロックされます。

(6)表示されたダイアログに「確認」と入力し、「削除」ボタンをクリックします。

(7)処理が成功し、ルートユーザー認証情報が「存在しない」と表示されていることが確認できるはずです。

(8)それでは続いて、ルートユーザーでの特権操作であるS3バケットポリシーの削除(ロック解除)を行っていきます。この操作は、IAMユーザーやロールからの変更を拒否する”Effect”: “Deny”を含むポリシーが設定され、通常のIAM権限では削除できなくなった状態(ロックされた状態)を、ルートユーザー権限で強制的に解除(削除)する際に有効です。事前に操作対象のS3バケットに、何らかのバケットポリシーを設定しておきます。

今回はVPCエンドポイント経由でのアクセスのみを許可するバケットポリシーがついているS3バケットを用意しておきます。先ほどの特権的なアクションを実行する画面で「S3 バケットポリシーの削除」を選択し、対象となるS3バケットを入力し、「バケットポリシーの削除」ボタンをクリックします。

  • 動作確認対象のS3バケットのバケットポリシー

(9)表示されたダイアログに「確認」と入力し、「削除」ボタンをクリックします。

(10)処理が成功することを確認します。操作対象のS3バケットポリシーも削除されていることが確認できるはずです。

課題となりやすいポイント

それでは最後に課題となりやすいポイントについて説明します。

  • 組織の体制上、委任管理者アカウントにCentralize root accessの全機能を許可してしまうべきではないケースが存在します。例えばCCoEやManaged Service ProviderがAWSアカウントを払い出し/削除を担当している場合、そもそも一般の利用者はルートユーザーの存在を意識していないかと思います。この場合、委任管理者アカウントにCentralize root accessの全機能を許可し、利用者側でも操作できるようにしてしまうと、隠ぺいしていたルートユーザーの存在が利用者に見えてしまい、場合によっては中央集権での運用に支障を来す可能性が出てきてしまいます。そのため委任管理者アカウントには、S3バケットポリシーの削除やSQSキューポリシーの削除といったルートユーザーでしか実施できない特権操作のみを委任することをお勧めします。これは、管理アカウントでCentralize root accessを有効化する際に設定します。コンソールの「有効にする機能」セクションで、「メンバーアカウントでの特権ルートアクション」のみを選択し、「ルート認証情報管理」のチェックを外すことで、委任する権限を限定できます。
  • Centralize root access機能を既存のOrganizationsで有効化し、既存のすべてのメンバーアカウントのルートユーザーの認証情報を削除する場合、メンバーアカウントの数が多いと非常に時間がかかります。数が少なければ、本稿で紹介した手順に従って一つ一つ削除していくことも可能ですが、数が多い場合はAWS CLIを利用して一括で削除することをお勧めします。AWS CLIを利用する場合の手順はAWSブログでも紹介されていますが、本稿ではその要点をまとめて紹介します。

先ほどのポイントで触れたように、組織のポリシーによってはルートユーザー認証情報の削除権限を委任管理者に渡さないケースも考えられます。そのようなシナリオを想定し、ここでは管理アカウントの特権を用いて一括削除する手順を紹介します。 以下の手順は、管理アカウントのCloudShellから実行することを想定しています。

(1)まずは、aws sts assume-rootコマンドにて、一時的なルートユーザーでの操作権限を取得します。

aws sts assume-root \
    --target-principal <my member account id> \
    --task-policy-arn arn=arn:aws:iam::aws:policy/root-task/IAMDeleteRootUserCredentials 

(2)上述のコマンドの結果、返ってきた一時的な認証情報を環境変数に設定します。

export AWS_ACCESS_KEY_ID=<access key id>
export AWS_SECRET_ACCESS_KEY=<secret access key>
export AWS_SESSION_TOKEN=<session token>

(3)その後、手順2で設定した一時的な認証情報を用いて、以下のコマンドを実行してルートユーザーの認証情報を削除します。


aws iam delete-login-profile

上記は、ルートユーザーのパスワードを削除するコマンドです。アクセスキーやMFA、デジタル署名用証明書は、下表のコマンドを用いて削除します。

削除する認証情報の種類 コマンド例
パスワード aws iam delete-login-profile
アクセスキー aws iam delete-access-key --access-key-id
MFAデバイス aws iam deactivate-mfa-device --user-name root --serial-number
デジタル署名用証明書 aws iam delete-signing-certificate --certificate-id

まとめ

今回は、AWS Organizationsの一機能であるCentralize root access機能のセットアップ手順と課題となりやすいポイントを紹介しました。本稿がOrganizations配下のAWSアカウントの運用管理のお役に立てば幸いです。