AWSアカウントで最も怖いのはIAMの設定ミスです。過剰な権限を持つIAMユーザーが1人でもいれば、アカウント全体が危険にさらされます。この記事ではIAMのセキュリティベストプラクティスを具体的な設定例とともに解説します。
ルートユーザーを封印する
AWSアカウント作成時のルートユーザーは、全権限を持つ最も危険なアカウントです。MFAを設定した上で、日常業務では一切使わないようにします。アクセスキーが発行されている場合は即座に削除してください。
# ルートアカウントのアクセスキーがないか確認
aws iam get-account-summary --query 'SummaryMap.AccountAccessKeysPresent'
# 結果が0であることを確認
IAMユーザーではなくIAM Identity Centerを使う
個々のIAMユーザーにアクセスキーを発行する運用は、退職者のキー削除漏れや長期キーの漏洩リスクがあります。AWS IAM Identity Center(旧AWS SSO)を使えば、一時的な認証情報でのアクセスが可能になり、管理が格段に楽になります。
最小権限ポリシーの作り方
「とりあえずAdministratorAccess」は禁物です。IAM Access Analyzerを使えば、CloudTrailのログから実際に使用されたアクションだけを含むポリシーを生成できます。
# 実際のアクセスログからポリシーを生成
aws accessanalyzer generate-policy \
--policy-generation-details '{
"principalArn": "arn:aws:iam::123456789012:role/MyAppRole"
}' \
--cloud-trail-details '{
"trails": [{"cloudTrailArn": "arn:aws:cloudtrail:...","regions": ["ap-northeast-1"]}],
"startTime": "2025-12-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z"
}'
条件キーでさらに絞る
IAMポリシーの Condition を使えば、特定のIPアドレスやリージョン、タグの有無に基づいてアクセスを制限できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "ap-northeast-1"
},
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}
]
}
定期的な監査を仕組み化する
IAMの設定は一度作って終わりではありません。AWS Configルールを使って、MFA未設定のユーザーや90日以上使われていないアクセスキーを自動検出する仕組みを作りましょう。Security Hubを有効にすれば、CIS AWS Foundations Benchmarkに基づいた包括的なチェックも可能です。
まとめ
IAMのセキュリティは地味ですが、ここを怠ると一発で大事故になります。ルートユーザーの封印、Identity Centerの導入、最小権限ポリシーの適用、そして定期監査の仕組み化。この4つを実行するだけで、AWSアカウントのセキュリティレベルは劇的に向上します。

コメント