パスワードポリシー
パスワードポリシー(Password Policy) は、テナントごとにパスワードの要件を定義し、セキュリティ基準に準拠したパスワード管理を実現する仕組みです。
パスワードポリシーの目的
パスワードポリシーを使うことで、以下のようなセキュリティ管理が可能になります:
-
組織のセキュリティ基準への準拠 OWASP、NIST SP 800-63Bなどの業界標準への対応
-
テナントごとの要件のカスタマイズ 金融機関は厳格、一般サービスは利便性重視など、用途に応じた設定
-
パスワード変更時の検証 新しいパスワードがポリシーに準拠しているかをリアルタイムで検証
-
セキュリティイベントの発行 パスワード変更の成功・失敗を記録し、監査証跡を確保
パスワードポリシーの設定項目
基本設定
パスワードポリシーは、テナントの identity_policy_config.password_policy で設定します。
{
"identity_policy_config": {
"password_policy": {
"min_length": 8,
"require_uppercase": false,
"require_lowercase": false,
"require_number": false,
"require_special_char": false
}
}
}
設定可能な項目
| 項目 | 型 | デフォルト | 説明 |
|---|---|---|---|
min_length | integer | 8 | 最小文字数 |
require_uppercase | boolean | false | 大文字(A-Z)を含む必要があるか |
require_lowercase | boolean | false | 小文字(a-z)を含む必要があるか |
require_number | boolean | false | 数字(0-9)を含む必要があるか |
require_special_char | boolean | false | 記号(`!@#$%^&*(),.?": |
custom_regex | string | null | カスタム正規表現パターン(高度な検証) |
custom_regex_error_message | string | null | カスタム正規表現エラー時のメッセージ |
max_attempts | integer | 5 | ブルートフォース対策: 最大連続失敗回数(0で無制限) |
lockout_duration_seconds | integer | 900 | ブルートフォース対策: ロックアウト期間(秒、デフォルト15分) |
デフォルトポリシー
idp-server のデフォルトポリ シーは NIST SP 800-63B の推奨に従い、最小8文字のみを要求します。
NIST SP 800-63B の推奨事項
NIST(アメリカ国立標準技術研究所)は、複雑性要件よりも長さを重視することを推奨しています:
推奨: 最小8文字以上 非推奨: 大文字・小文字・数字・記号の強制的な組み合わせ
理由:
- 複雑性要件は、ユーザーがパスワードを忘れやすくする
- 結果的に、パスワードをメモしたり、予測可能なパターン(
Password1!)を使用してしまう - 長いパスワード(パスフレーズ)の方が、複雑で短いパスワードより安全
デフォルトポリシーの例
{
"identity_policy_config": {
"password_policy": {
"min_length": 8
}
}
}
受け入れられるパスワード:
mypassword✅ (8文字、複雑性不要)12345678✅ (8文字、数字のみでもOK)ALLCAPS❌ (7文字、短すぎる)
ユースケース別の設定例
1. デフォルト(一般サービス向け)
用途: 一般的なWebサービス、SNS、eコマース
{
"password_policy": {
"min_length": 8
}
}
特徴:
- NIST推奨に準拠
- ユーザビリティ重視
- 長いパスワード(パスフレーズ)を推奨
推奨するユーザー向けメッセージ:
「8文字以上のパスワードを設定してください。 例:
my favorite coffee shopのような覚えやすいフレーズがおすすめです」