TL;DR
- AWS Organizationsで組織に属しているアカウントは、アカウントにログインして(AssumeRoleではダメ)からアカウントの解約を実行すれば可能。組織から離す必要はない。
- AWS Organizationsで作成したアカウントを組織から外すときは、大量の追加情報が必要。
- ~~組織に属したままアカウントを解約しようとすると「アクセス権限が必要です」というエラーが出る。~~ルートアカウントでログインした後、「アカウント解約」を実行するとアカウントを消すことができた。
- 組織内のアカウントが悪さした時には、アカウントを消すのではなく権限を全て奪うことで対処する方法もある
はじめに
みなさんAWS使ってますか?
僕は記事作成時点で1週間ほど業務で使っています。会社で「AWS Organizationsで複数アカウント管理したいから、調査よろしくね」とお願いされまして、あれこれ毎日奮闘しています。ちなみに僕は、AWSにめっちゃ興味ありまくりのAWS実務未経験者です。
色々調査している中で、組織で管理しているアカウントがもし誰かに乗っ取られたら、そのアカウント速攻で抹消したいという要望が湧いてきまして、じゃあそれ具体的にどうやるんだろう、ということで実際にアカウント消す方法を色々試してみることにしました。
AWS Organizations管理下のアカウントを消す方法
まずOrganizations管理下のアカウントを消すために、まず所属している組織からアカウントを切り離す方法を試しました。
公式の資料を読むとわかるのですが、消したいアカウントがもしAWS Organizationsで作成されたアカウントだった場合、アカウントを組織から離す際に、電話番号やクレジットカードなどのパーソナリティ度の高い追加情報を入力しないといけません。
組織からアカウントを切り離した後、アカウント情報のページから「アカウント解約」を選択することでアカウントを消すことができます。(アカウントを解約してもすぐに消えるわけではなく、90日間はアカウントにアクセスできます。詳しくはこちらを参照)
この方法なのですが追加情報の入力が地味に面倒臭いですし、何より消したいアカウントにクレジット情報みたいなクリティカルな情報を入力したくありません。なんとか別の方法でアカウント消せないかな〜と足掻いてみました。
組織内のアカウントを直接解約してみた
組織から離さなくても、直接アカウント解約できたら良いのでは?ということで早速実践。
AssumeRoleで目的のアカウントにアクセスし解約したいアカウントのアカウントページで「アカウント解約」を押すと

「アクセス権限が必要です」と怒られて解約に失敗しました。じゃあ権限付与したら良いんだよね、ということで請求情報のフルアクセス権限用SCP作成して適応。作ったSCPは以下です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"aws-portal:*"
],
"Resource": [
"*"
]
}
]
}
もう一度チャレンジすると...

ダメかぁ。やはり組織から離してからアカウントを解約する以外にアカウントを消す方法はなさそう。
しかしここでミスが発覚。AssumeRoleで消したいアカウントに入って「アカウント解約」を実行していたのがダメだったんじゃないの?。というわけで、きちんとアカウントにルートでログインして試してみると、無事アカウントが解約できました。
アカウントのステータスが「停止」なっているのがわかるかと思います。
そもそもアカウントを消す必要はあるのか?
悪さをしている組織内アカウントがあったらサクッと消したいという要望は叶いました。
しかしアカウントが消さなくても、それ以上余計な操作ができないように権限を全て奪ってしまえば良いのではないか?と考えました。いざアカウントが不正利用された場合は、SCPで可能な限りの権限を剥奪するプランもありかなと考えております。
さいごに
今回はAWS Organizations管理下のアカウントをなるべく簡単に消す方法を試してみました。
アカウントを消す方法は「消したいアカウントのルートアカウントでログインしてからを解約」です。もし組織内のアカウントが不正利用などされた場合は、アカウントを解約するかもしくは即座にアクセス権限を奪うような対処をしようと思います。
もっと良い方法があるよ〜といった知見をお持ちの方は是非ご一報いただければと存じます。ここまで記事を読んでいただきありがとうございました。