あらゆるベストプラクティス等で、AWSのルートアカウントを利用するのは最小にするよう言われています。
そのため、IAMユーザを利用されている方も多いでしょう。(SSOという方もいるかと思いますが……)
今回は、IAMユーザがコンソールへログインする時に利用するパスワードのポリシー(IAMパスワードポリシー)を紹介します。
IAMパスワードポリシーとは
AWS IAMではパスワードポリシーの設定ができます。
これにより、IAMユーザのパスワード設定に制限をかけることが可能です。
パスワードポリシーはデフォルトでも一定の設定がされていますが、カスタマイズすることが多いかと思います。
設定可能な項目は以下になります。
- パスワード最小文字数(1~128文字)
- パスワード強度
- アルファベット大文字を1つ必要とする
- アルファベット小文字を1つ必要とする
- 数字を1つ必要とする
- 英数字以外の文字を1つ必要とする
- パスワードの有効期限(無効・1~1095日)
- 失効したパスワードに管理者のリセットが必要
- ユーザにパスワードの変更を許可
- パスワードの再利用を禁止(無効・1~24個前までのパスワード再利用禁止)
残念ながら、辞書にある単語の利用禁止等は設定できません。
CISベンチマークでのパスワードポリシー
セキュリティは高度な専門知識が必要な分野です。 そのため、業界標準となるベストプラクティスやガイドラインにしたがって(または参考にして)設計・設定を行っていきます。
CISベンチマークはその1つです。
AWSのページでも紹介されていますし、AWS Security Hubでも使用可能なセキュリティ基準です(バージョンは古いですが)。
今回は、CIS Amazon Web Services Foundations Benchmark 1.5.0を紹介したいと思います。
CIS AWS Foundations Benchmark 1.5.0でIAMユーザのコンソールログインに関わる項目は以下になるかと思います。(アクセスキーの扱い等の項目は他にもあります)
- 1.8 Ensure IAM password policy requires minimum length of 14 or greater (Automated)
- 1.9 Ensure IAM password policy prevents password reuse (Automated)
- 1.10 Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password (Automated)
- 1.12 Ensure credentials unused for 45 days or greater are disabled (Automated)
これは、以下のような内容です。
- パスワードポリシーで、最小文字数を14文字以上にする
- パスワードポリシーで、パスワードの再利用を禁止する(中の設定手順では24個前まで)
- すべてのコンソールパスワードを設定したユーザにMFAを設定する
- 45日以上利用していない認証情報は無効化する
この中でパスワードポリシーに関わるのは上の2つだけです。
パスワードポリシーとしては以下のみ設定すればいいというようになります。
- パスワード最小文字数14文字
- ユーザにパスワードの変更を許可
- パスワードの再利用を禁止(24個前までのパスワード再利用禁止)
有効期限と文字種別に関する設定
これまで、複雑なパスワードを設定させるために大文字小文字数字記号それぞれ必須にしたり、定期的にパスワードを変更させるよう設定してきた方も多いかと思います。
私もそのような設定をよく実施していましたが、時代は変わっています。
CIS AWS Foundations Benchmarkの変更履歴を見ると1.3.0で以下のように項目が削除されています。
- DELETE - Ensure IAM password policy expires passwords within 90 days or less (Ticket 10883)
- DELETE - Ensure IAM password policy require at least one lowercase letter (Ticket 10880)
- DELETE - Ensure IAM password policy require at least one number (Ticket 10882)
- DELETE - Ensure IAM password policy require at least one symbol (Ticket 10881)
- DELETE - Ensure IAM password policy requires at least one uppercase letter (Ticket 10879)
NIST(米国国立標準技術研究所)から出た2017年付けのガイドラインであるSP800-63-3の考えを反映したものと思われます。
辞書やデータベース等を使ったパスワード強度の判定や表示がないし、他の項目との整合性は大丈夫なのだろうかと気にもなりますが……
人が覚えにくい複雑なパスワードよりも複数単語からなる覚えやすくて十分に長いパスフレーズの方が良いという考え方です。 たとえば『View from Techfirm ConferenceRoom is Instagrammable.』みたいな形でしょうか。最小20文字ぐらいでも良い気がしてきます。
また、定期的なパスワード変更も推奨されず、問題があった時のみパスワードリセットするのが良いとされています。
終わりに
上記内容から、改めてパスワードポリシーは以下のようになります。
- パスワード最小文字数14文字
- ユーザにパスワードの変更を許可
- パスワードの再利用を禁止(24個前までのパスワード再利用禁止)
同時に、『パスワード』では無く文章になっている『パスフレーズ』を設定するようユーザを教育した方が良いように思います。
セキュリティに対する正しい考え方は1つとは限らないと思いますし、時期によって推奨されるものも変わります。
これも1つの参考として考え、設定時は最新のセキュリティガイドライン等を参照してください。