SCPでパスワードポリシーの変更を禁止するならUpdateAccountPasswordPolicyも止めようという話
こんにちは、臼田です。
みなさん、AWSアカウントの管理してますか?(挨拶
今回はIAMユーザーのパスワードポリシーの管理としてSCPを利用する際の注意点をまとめます。
パスワードポリシーの変更を禁止するSCP
結論、下記ポリシーを使いましょう。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PreventIAMPasswordPolicyModification",
"Effect": "Deny",
"Action": [
"iam:DeleteAccountPasswordPolicy",
"iam:UpdateAccountPasswordPolicy"
],
"Resource": "*"
}
]
}
解説
AWS環境全体のセキュリティを強化していく中で、IAMユーザーのパスワードポリシーも重要な強化対象の1つです。
AWS Security HubではIAM.7のセキュリティチェックでパスワードポリシーを下記以上に設定することが求められています。
- パスワードの最小文字数: 8文字以上
- 少なくとも 1 つのアルファベットの大文字 (A~Z) が必要です
- 少なくとも 1 つのアルファベットの小文字 (a~z) が必要です
- 少なくとも 1 つの数字が必要です
- 少なくとも 1 つの英数字以外の文字が必要です
(!@#$%^&*()_+-[]{}|')
ちなみに、以前のデフォルトのパスワードポリシーは6文字以上(つまり本当に最低限)でしたが現在では以下のように変わっています。
- 8文字以上
- 次の4種のうち少なくとも3種を使用する。英字大文字、英字小文字、数字、英数字以外の記号
(!@#$%^&*()_+-[]{}|')
- AWSアカウント名またはメールアドレスと同一ではない
デフォルトのパスワードポリシーの変更は下記も参照してください。
パスワードポリシーは通常AWSアカウントを作成した際に強化し、以後設定変更は行わない性質のため、マルチアカウントの管理を行っている際にはAWS OrganizationsのSCPにてこの変更を禁止する設定を入れるとより良いです。その際には上記のポリシーを設定しましょう。
DeleteAccountPasswordPolicyだけだとこうなるよ
パスワードポリシーの変更禁止を調べている中でiam:DeleteAccountPasswordPolicy
のみを禁止しているポリシーを見かけたので、実際に動作を確かめてみます。
まず下記のSCPを作成して適用してみます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PreventIAMPasswordPolicyModification",
"Effect": "Deny",
"Action": [
"iam:DeleteAccountPasswordPolicy"
],
"Resource": "*"
}
]
}
すると、以下のようにパスワードポリシーをカスタマイズしている状態から、デフォルトの状態に変更しようとするとブロックされます。
よく見てみると、パスワードポリシーがカスタマイズされている状態からデフォルトの状態に変更することは、iam:DeleteAccountPasswordPolicy
が実行されていて、それがブロックされていることがわかります。
一方で、この状態のままパスワードポリシーを弱くしたらどうでしょうか?はい、以下のように変更できてしまいます。
iam:DeleteAccountPasswordPolicy
をブロックするという行為は、カスタマイズしたパスワードポリシーをデフォルトに戻すことを禁止しているに過ぎないということですね。
というわけで冒頭のポリシーに変更してあげると、以下のようにカスタマイズした状態での変更も禁止できました。
まとめ
無事パスワードポリシーの変更を禁止できました。
必要に応じ、管理者のIAMのみ例外として許可するなど、組織の運用に合わせてカスタマイズして使ってください。