AWS Organizations 上で新規作成したメンバーアカウントを組織離脱させる時に必要な追加設定を行ってみた
いわさです。
通常 AWS アカウントを作成する際にはサインアップに必要な各種情報を登録しますが、AWS Organizations の機能から AWS アカウントを作成する場合、支払い情報など各種情報を登録せずに AWS アカウントを作成することができます。
その兼ね合いで、AWS Organizations からメンバーアカウントを離脱させる時にスタンドアロンアカウントとしての条件を満たしていない状態で、アカウント離脱に失敗することがあります。
今回、組織離脱した時に CloudTrail 証跡がどうなるのか観察しようとした際に、やはり最初はアカウントの組織離脱に失敗したので対処の様子を紹介します。
CloudTrail 組織証跡がどうなるのか確認したかった
AWS Organizations では、組織に対して一括で各種サービスを有効化する機能があります。
AWS CloudTrail の証跡も「組織証跡」という機能があって、組織内の全 AWS アカウントの情報を収集する証跡を作成することができます。
この組織証跡で管理されているアカウントが組織から離脱したときにどうなるのか?を確認したかったのがもともとの発端です。
ここだけ先に結論を言うと、組織から離脱した場合にメンバーアカウントに存在していた組織証跡は削除というか、その離脱したアカウントは管理外となります。
例えば次のように離脱前に組織証跡が存在している状態だとします。
組織証跡が消えるだろうなと思っていたので、事前にもう一つこのアカウント独自での証跡を作成しました。
そして組織から離脱した時、このアカウントの証跡は次のように独自証跡のもののみとなっていました。
ただこれを確認したかっただけなのですが、実際に組織離脱してみるといくつかやはり対処が必要だったので、その様子もせっかくなので紹介したいと思います。
組織からの離脱方法
組織から離脱するには、管理アカウントから AWS Organizations のアカウント一覧で対象アカウントを選択し、「組織から除外」を行う方法があります。
あるいは、離脱したいメンバーアカウント自身も AWS Organizations コンソール上から「この組織を離れる」ボタンで自主的に離脱することもできます。
操作としてはこれだけなのですが、組織離脱にあたって事前条件を満たしていないと次のようにエラーが発生します。
支払い先の登録
AWS Organizations では通常管理アカウントで料金をまとめて支払うので、管理アカウントに支払い方法が登録されていれば良いです。
そのため、AWS Organizations の機能で新規 AWS アカウントを発行する場合、それぞれのメンバーアカウントには支払い情報がデフォルトでは登録されていません。
スタンドアロンアカウントになると、このアカウントが自分で料金を支払う必要が出てくるので、まずこの支払い情報を登録する必要があります。
ここでは私が所有している魔法のカードを登録しました。
サインアップステップを完了させる
支払い情報を登録しても「まだ組織を離れることができません」と表示される場合はアカウントのサインアップ情報が不足しています。
以下の「アカウントにサインイン」のリンクから、所有者の確認と AWS サポートプランを登録するサインアップステップを実行することができます。
離脱したい AWS アカウントにサインインしている状態で、上記リンクを選択し以下のサインアップステップを開始します。
電話番号での認証と AWS サポートプランの選択を行います。なるほどね。
委任管理者の解除
まぁこれでいけるだろうと思いきや、意外にもまだ組織を離れることを許しちゃくれません。
「You cannot remove a delegated administrator from the organization without de-registering the account.」
どうやらこのメンバーアカウントは何かの委任管理者だったみたいです。
AWS Organizations の各種サービスには管理アカウント以外の委任管理者アカウントを設定できるものがあるのですが、この委任管理者はそのままだと離脱できないようです。知らなかった。
しかし、マネジメントコンソール上からだと、このアカウントがどのサービスの委任管理者なのか確認ができません。
次の記事が大変参考になったのですが、AWS CLI を使うことでどの AWS アカウントがどのサービスの委任管理者なのか特定し、そのまま委任解除まで行うことができます。
list-delegated-services-for-account
コマンドでアカウントIDを指定することで、対象アカウントが委任されているサービスのサービスプリンシパルを確認することができます。CloudShell から実行しました。
サービスプリンシパルがわかったら、あとは管理アカウントからderegister-delegated-administrator
コマンドでアカウントとサービスプリンシパルを指定します。
私の場合はここまでで無事組織離脱出来るようになりました。
さいごに
本日は AWS Organizations 上で新規作成したメンバーアカウントを組織離脱させる時に必要な追加設定を行ってみました。
CloudTrail 組織証跡が離脱したアカウントから消えることを確認できてよかったのですが、アカウント離脱に委任解除が必要など新しいことを知れて良かったです。
なお、アカウントを離脱させるためのステップは今回のもので良いのですが、例えば組織証跡が消えてしまうように離脱によって意図せず組織リソースが対象アカウントで無効になったり、リソース共有などができなくなる場合もあり、「組織離脱しても良いのか?」の観点は別でチェックする必要があるのでご注意ください。