ルートアカウント使用制限の方法について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、ルートアカウント使用制限の方法について解説します。

内容の説明

[IAM.20] ルートユーザーの使用を避けます

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/iam-controls.html#iam-20

AWS はルートアカウントの使用を厳しく制限することを強く推奨しています。代わりに、必要最小限の権限を持つ IAM ユーザーを作成し、多要素認証 (MFA) を有効にすることで、日常的な管理タスクを安全に実行できます。

ルートアカウントの使用は、AWSアカウントの作成時や、特定のアカウント設定の変更など、極めて限られた状況でのみ必要となります。それ以外の場合は、ルートアカウントを使用せず、適切に設定された IAM ユーザーを利用することで、セキュリティリスクを大幅に低減できます。

組織のセキュリティポリシーに関わらず、AWS のベストプラクティスに従ってルートアカウントを保護することは、クラウド環境の安全性を確保する上で不可欠です。

GuardDutyでの検出を確認

GuardDutyを有効化している必要がありますが、有効化した状態で「検出結果をフィルター」に「UnauthorizedAccess:RootCredentialUsage」を入力していただくと、ルートアカウントを使用したイベント結果を確認することができます。

修復手順

AWSコンソールでの修正手順

以下4つの修正方法をご紹介します。

  1. ルートアカウントの MFA(多要素認証)を有効化 ルートアカウントに MFA を強制 することで、不正アクセスのリスクを減らせます。
    1. .AWSコンソールに ルートアカウント でログイン。
    2. [IAM] → [ダッシュボード] に移動。
    3. [ルートアカウントのMFA] をクリックして MFA(多要素認証)を有効化。
    4. 仮想MFA(Google Authenticator など) や ハードウェアMFA(YubiKey など) を設定。

  1. ルートアカウントのアクセスキーを削除 ルートアカウントでのプログラム的な API コールを防ぐために、アクセスキーを削除 します。
    1. [IAM] → [ルートアカウントのセキュリティ情報] に移動。
    2. [アクセスキー] セクションを確認。
    3. 有効なアクセスキーがあれば削除(または少なくとも無効化)。

  1. SCP(サービスコントロールポリシー)でルートアカウントの使用を制限(AWS Organizationsを使用している場合) AWS Organizations を使用している場合、SCP(サービスコントロールポリシー)を適用 することでルートアカウントの使用を制限できます。
    1. AWS Organizations に管理アカウントでログイン。
    2. [ポリシー] → [サービスコントロールポリシー(SCP)] を開く。
    3. 以下のポリシーを適用(ルートアカウントの使用を制限)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}

(※ `123456789012` を自分の AWS アカウント ID に変更)
※ この SCP を適用すると、ルートアカウントによる API コールをすべてブロックできます。
※ ただし、AWS Organizations の管理アカウントには適用できません。

  1. AWS IAM のセッションポリシーを設定 AWS IAM の セッションポリシー を適用して、ルートアカウントの AWS コンソールログインを制限 できます。
    1. AWS コンソールで IAM に移動
    2. [ポリシー]新しいポリシーを作成
    3. 以下のポリシーを適用:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "iam:CreateUser",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalType": "Root"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": "iam:DeleteUser",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalType": "Root"
                }
            }
        }
    ]
}
d.  このポリシーを **IAM ユーザー・グループにアタッチ** して、ルートアカウントの影響を制限。
※ ルートアカウントによる IAM ユーザー作成・削除を防ぐことで、管理者権限の濫用を防げます。

最後に

今回は、ルートアカウントの使用によるリスクや検出方法と修正手順をご紹介しました。 ルートアカウントは強力な権限を持ったアカウントのため、必要なリソースの設定を誤削除、誤設定してしまうリスクや、アカウント情報が漏洩して悪用されてしまうとクレジットカード情報や個人情報の漏洩以外にも、多額の請求や不正アクセスの踏み台とされてしまうリスクがあります。 そのためルートアカウントの利用は最小限に控え、MFA認証や適切なポリシー設定、ルートアカウント利用時の検出の仕組みなど取り入れることが重要かと思います。

この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。

運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。

最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る