こんにちは。クラウド活用推進担当の安田です。
AWSアカウントのルートユーザーは、全ての権限を持つ特権アカウントです。そのため、認証情報が漏洩した場合、アカウント内の全てのリソースが危険にさらされます。
今回は、AWS Organizations環境でメンバーアカウントのルートユーザーだけにSCPで接続元IP制限をかけられるのかを検証しました。
この記事の位置づけ
AWS Organizationsでは、新規作成するメンバーアカウントはroot資格情報なしがデフォルトであり、AWSはcentralized root accessによるroot資格情報の削除を推奨しています。
ただし、緊急時の復旧手段や一部のルートユーザー専用操作のために、root資格情報を残して運用するケースもあります。
この記事では、そのような場合の追加対策として、SCPによる接続元IP制限を検証します。
この記事では、以下の内容を紹介します。
・SCPでルートユーザーのみにIP制限をかける方法
・IP制限の動作特性
・許可IP外からのルートユーザー操作がどう拒否されるか
・IAMユーザーの日常業務に影響が出るか
・IP制限だけでは不十分な理由と追加対策
今回は、AWS Organizationsで複数のAWSアカウントを管理している環境を前提とします。
管理アカウント配下にあるメンバーアカウントのルートユーザーに対して、SCPで接続元IP制限を適用できるかを確認しました。
検証のポイント
SCPはアカウント全体に影響するため、条件指定を誤るとIAMユーザーやIAMロールの通常業務まで止めてしまう可能性があります。
今回は、aws:PrincipalArn 条件を使って、対象をルートユーザーに限定できるかを確認します。
| 項目 | 内容 |
|---|---|
| AWS Organizations | 有効化済み |
| 対象アカウント | メンバーアカウント1つ |
| 検証方法 | 特定アカウントにSCPを直接アタッチ |
| 影響範囲 | 検証対象アカウントのみ |
以下のSCPポリシーを作成しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyRootUserOutsideApprovedIP",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"ArnLike": {
"aws:PrincipalArn": ["arn:*:iam::*:root"]
},
"NotIpAddress": {
"aws:SourceIp": [
"xxx.xxx.xxx.xxx/xx",
"yyy.yyy.yyy.yyy/yy"
]
}
}
}
]
}
| 設定 | 意味 |
|---|---|
| aws:PrincipalArn | ルートユーザー(arn:*:iam::*:root)のみを対象にする |
| NotIpAddress | 許可IPリスト以外からの操作を拒否する |
| Action: "*" | 全てのAWS操作を対象にする |
| Effect: Deny | 条件に一致した操作を明示的に拒否する |
結果:成功
・許可IPからルートユーザーでログイン成功結果:期待通りに拒否
・コンソールへのログイン自体は成功
結果:今回のSCP条件では影響なし
・IAMユーザーでログイン成功| 検証内容 | 結果 | 補足 |
|---|---|---|
| 許可IPからルートユーザーで操作 | 成功 | 通常通りAWSサービスを操作できる |
| 許可IP外からルートユーザーで操作 | 拒否 | ログイン後のAPI操作が拒否される |
| IAMユーザーで操作 | 影響なし | aws:PrincipalArn 条件で対象外になる |
今回の検証では、許可IP外からでもルートユーザーのコンソールログイン自体は成功しました。
ただし、ログイン後に各AWSサービスへアクセスすると、API操作が拒否されます。
セキュリティ上の重要な注意点
ログイン自体が成功するため、攻撃者は「認証情報が正しい」ことを確認できてしまいます。
そのため、SCPによるIP制限だけで安心するのは危険です。CloudTrailでルートユーザーログインを監視し、アラートを出す仕組みが必要です。
今回のSCPでは、aws:PrincipalArn に arn:*:iam::*:root を指定しました。
この条件により、IAMユーザーは制限対象外となり、接続元IPに関係なく通常通り操作できました。
実用上の意味
・日常運用はIAMユーザーまたはIAMロールで実施するSCPによるIP制限は、ルートユーザーの操作を抑止する対策として有効でした。
ただし、ログイン自体は成功すること、またSCPの対象外となる操作が存在することを考えると、これだけで十分とは言えません。
この記事で検証したIP制限は有効ですが、ルートユーザー保護の対策としては一部にすぎません。
IP制限だけでは不十分な理由
1. ログイン自体は成功するため、認証情報の正当性が確認される・ルートユーザーにMFAを設定する
・CloudTrailでルートユーザーログインを監視する
・許可IPリストの管理手順を明確にする
・緊急時の復旧手順を文書化する
・状況に応じてroot資格情報の削除も検討する
今回の検証では、SCPでメンバーアカウントのルートユーザーだけに接続元IP制限をかけられることを確認しました。
aws:PrincipalArn 条件でルートユーザーに対象を絞ることで、IAMユーザーの日常業務には影響を与えずに、ルートユーザーの操作だけを制限できます。
今回の結論
・SCPでルートユーザーのIP制限は可能ルートユーザーを完全に使わない運用にできるなら、root資格情報の削除を検討するのが望ましいです。
一方で、組織の事情によりroot資格情報を残す必要がある場合は、MFA、監視、IP制限を組み合わせて多層的に保護することが重要です。
Root user best practices for your AWS account
Service Control Policies (SCPs)
AWS Global Condition Context Keys