Amazon Web Services ブログ

AWS Organizations でシンプルかつセキュアにメンバーアカウントを閉鎖できるようになりました

AWS Organizations の管理アカウントからメンバーアカウントを閉鎖できるようになりました。
今後は AWS 環境のアカウント管理をより簡単かつ効率的に行うことができます。つまり、ルートユーザの認証情報を使用して各メンバーアカウントに個別にログインしなくても、組織の管理アカウントからメンバーアカウントを閉鎖できます。
また、Identity and Access Management (IAM) のアクセス権限ポリシーを活用して、承認された IAM ロールと IAM ユーザーのみがアカウント閉鎖を実行するようにし、環境内で重要な AWS アカウントを誤って閉鎖するリスクを防ぐこともできます。この機能は、AWS Organizations コンソール、AWS コマンドラインインターフェイス (CLI)、およびプログラムによる使用のための API/SDK から利用できます。

アカウントを一元的に閉鎖する機能は、既存のアカウント作成アクションを補完し、AWS Organizations のメンバーアカウントのエンドツーエンドなライフサイクル管理を可能にします。このブログでは、組織内の AWS アカウントを一元的に閉鎖する方法を、架空の AWS 管理チームのストーリーを例として示します。また、AWS Organizations コンソールと AWS CLI の両方の操作についても説明します。

概要

あなたの会社では全てのビジネスアプリケーションを AWS にデプロイし、単一の AWS Organizations で管理する AWS アカウント数は合計 300 になりました。
図 1 に示すように、Organizations Unit (OU) の使用に関する AWS ガイドラインに従って、組織の OU 階層を構築しました。

図 1: 組織レイアウトの例

Sample organization layout

最新化プロジェクトを実施した後、チームが既に置き換えた全ての非推奨ソフトウェアのリソースを含むレガシーアカウントを特定しました。次に AWS のガイドラインに従い、削除する予定のレガシーアカウントを Suspended OU に移動し、全てのアクションを拒否する Service Control Policy (SCP) を適用することで、これらのアカウント上でアクションが実行されないようにしました。レガシーアカウントの一部は会社の元従業員によって作成されたものであり、ルート認証情報はすぐには利用できません。レガシーアカウントにログインするのではなく、全てのレガシーアカウントを効率的に削除する方法が必要です。

権限の設定

まず、権限を定義します。アカウントを閉鎖するアクセス権限を持つ管理アカウントの IAM プリンシパル (IAM ユーザーまたは IAM ロール) が組織内の特定のアカウントを閉鎖するのを防ぐために、それらのアカウントの閉鎖を明示的に拒否する追加のポリシーをアタッチできます。以下のコードスニペットは例を示しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PreventCloseAccount",
            "Effect": "Deny",
            "Action": "organizations:CloseAccount",
            "Resource": [
                "arn:aws:organizations::555555555555:account/o-12345abcdef/123456789012",
                "arn:aws:organizations::555555555555:account/o-12345abcdef/123456789014"
            ]
        }
    ]
}

上記のコードスニペットでは、Resource を使用して、削除から保護する重要な AWS アカウントを全てリストしています。また、タグを活用して、ポリシードキュメントに各アカウントが記載されないようにすることもできます。このアプローチを効果的に機能させるには、全ての重要な AWS アカウントに適切にタグを付ける必要があります。以下のコードスニペットは、タグを使用して重要なアカウントが削除されないようにするポリシーの例を示しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PreventCloseAccountForTaggedAccts",
            "Effect": "Deny",
            "Action": "organizations:CloseAccount",
            "Resource": "*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/AccountType": "Critical"}
            }
        }
    ]
}

上記のポリシードキュメントでは、aws: resourceTag の条件キーを活用して、accountType: Critical のキーペアでタグ付けされたアカウントが閉鎖されないようにしています。StringEquals を条件に使用することにより、適切にタグ付けされたアカウントのみが保護されるため、異なるタグが付けられた AWS アカウント、もしくはタグ付けされていない AWS アカウントの閉鎖が許可されています。セキュリティモデルでタグを使用するときは、AWS アカウントに適切なタグ付けがされるように、ガイドラインとコントロールを確立することを検討する必要があります。リソース作成時のタグの適用など、タグを使用して組織のリソースに権限を割り当てる方法については、こちらを参照してください。

レガシーアカウントを閉鎖する

適切な権限が設定されたので、組織のレガシーアカウントの閉鎖に進みます。AWS Organizations コンソールを使用して、閉鎖する個々のアカウントを選択し、アカウントの詳細画面で「閉じる」を選択する必要があります。図 2 を参照してください。

図 2: AWS Organizations コンソールでアカウントを閉鎖する

Close Account in Organizations console

次に、図 3 に示すようにポップアップが表示され、閉鎖猶予期間が 90 日間であること、閉鎖猶予期間の終了後はアカウントの再開はできないこと、閉鎖猶予期間の終了後にコンテンツが削除されること、の 3 点を確認します。

図 3: アカウントを閉鎖する確認

Close Account confirmation

レガシーアカウントをプログラムで閉鎖する場合は、AWS CLI または AWS SDK を介して CloseAccount API を使用できます。以下は AWS CLI を使用してこのタスクを実行するコードスニペットを示しています。

aws organizations close-account --account-id 555555555555
{
   "CloseAccountStatus": {
      "AccountId": "555555555555",
      "State": "IN_PROGRESS",
      "RequestedTimestamp": "2022-03-27T19:51:03.563000-07:00",
      "CompletedTimestamp": "2022-03-27T19:51:04.589000-07:00"
   }
}

30 日間で一元的に閉鎖することができる AWS アカウントの最大数は、組織内のアクティブなアカウントの最大 10% で上限は 200 アカウントになります。アカウントの閉鎖に関するクォータとレート制限の詳細については、こちらを参照してください。

組織内のアカウントを一元的に閉鎖すると、ルート認証情報を使用して請求管理コンソールからアカウントを閉鎖した場合と同じ効果があります。90 日間、閉鎖されたアカウントの再開をリクエストする機会があります。リクエストする際には、アカウントにログインし、カスタマーサポートチケットでアカウントの再開を依頼してください。90 日が経過すると、アカウントは完全に削除され、元に戻すことはできません。

AWS Control Tower を使用してマルチアカウント管理している場合、追加の考慮事項があります。閉鎖する AWS アカウントが Control Tower の Account Factory で作成されている場合や、AWS Service Catalog を使用してランディングゾーンに登録されている場合は、アカウントを閉鎖する前に、まずメンバーアカウントの管理を解除する必要があります。メンバーアカウントの管理を解除する方法の詳細については、こちらを参照してください。

まとめ

AWS Organizations で不要になったメンバーアカウントを一元的に閉鎖することで、AWS アカウントのライフサイクル管理を効率化できるようになりました。このブログでは、不要になった AWS アカウントをどのように管理できるかを示しました。閉鎖する AWS アカウントにログインすることなく、AWS Organizations コンソール、AWS CLI、または API/SDK を使用して、組織のメンバーアカウントを効率的かつ安全に閉鎖できるため、これらの管理タスクを実施にかかる時間を節約できます。

この機能の詳細については、ドキュメントページを参照してください。

著者について

 

Eric は AWS Identity チームのシニアテクニカルプロダクトマネージャーで、AWS Organizations のコア機能に取り組んでいます。仕事以外では、エリックはバスケットボールやサッカーを楽しんでいます。エリックは MIT スローン経営大学院で MBA を取得しています。

 

 

翻訳は SA 桂井が実施しました。原文はこちらです。