【IBM Security Verify】カスタムパスワードポリシーのユーザー・グループへの割り当てについて

# はじめに
Cloud Directory内のユーザーに割り当てできるパスワードポリシーは全ユーザーで共通でした。

「ユーザーおよびグループへのパスワード・ポリシーの割り当て」機能のリリースにより、下記イメージ図のように、Cloud Directoryのユーザー/グループに、異なるパスワードポリシーを割り当てできるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0216c4b8-9f76-d03f-7b78-51df1c7fcd82.png)

# 1.機能の有効化について

IBM Security Verifyの管理画面では有効化できませんので、マニュアルに従い、機能を有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1e85dd86-18fb-6aef-bc67-03f9c9e0da91.png)

画像の引用元：

https://www.ibm.com/docs/ja/security-verify?topic=passwords-assigning-password-policies-users-groups

# 2.パスワードポリシー概要
機能を有効化すると、3種類のパスワードポリシーが存在することになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/5a5c5fcf-c223-65c6-700b-e1e626d4c98d.png)

|No  |パスワードポリシー  |説明  |
|---|---|---|
|①  |デフォルトのパスワード・ポリシー  |すべてのユーザーは、このパスワード・ポリシーが付加された、公開されていない内部グループのメンバーです。 このポリシーは、グループに添付されたパスワード・ポリシーとしてすべてのユーザーに適用されます。 このポリシーは、パスワードの有効期限およびパスワードの最小使用日数の設定が可能な唯一のパスワード・ポリシーです。 このポリシー内のすべてのパスワード・ポリシー属性を変更できます。  |
|②  |デフォルトの有効期限なしパスワード・ポリシー  |このパスワード・ポリシーには、**パスワードの有効期限が設定されておらず、パスワードの最小使用日数も設定されていません。** これらの設定を変更することはできません。 グループには適用できません。 これは通常、ユーザーに直接付加することにより、ユーザーのデフォルトのパスワード・ポリシー (特に、パスワードの有効期限属性と最小存続期間属性) をオーバーライドするために使用されます。 このポリシー内の他のパスワード・ポリシー属性は変更できます。|
|③  |カスタム・パスワード・ポリシー  |追加のカスタム・パスワード・ポリシーを作成、変更、および削除できます。 これらのポリシーには、**パスワードの有効期限および最小経過期間が存在しないか、設定できません。** これらのポリシーは、ユーザーへの影響を判別する際に、これらの値に影響を与えません。 これらのポリシー内の他のパスワード・ポリシー属性は変更できます。  |

各ポリシーで設定できる項目は以下のようになります。
|項目名  |デフォルトのパスワード・ポリシー |デフォルトの有効期限なしパスワード・ポリシー |カスタム・パスワード・ポリシー  |
|---|---|---|---|
|パスワードの最小の長さの文字数|〇（設定可能）|〇|〇|
|英字が必要|〇|〇|〇|
|　英字の最小数|〇|〇|〇|
|　小文字の最小数|〇|〇|〇|
|　大文字の最小数|〇|〇|〇|
|数字または特殊文字が必要|〇|〇|〇|
|　数字または特殊文字の最小数|〇|〇|〇|
|　数字の最小数|〇|〇|〇|
|　特殊文字の最小数|〇|〇|〇|
|連続する反復文字の制限|〇|〇|〇|
|　連続する反復文字の最大数|〇|〇|〇|
|パスワードの再使用を許可しない|〇|〇|〇|
|　許可しない直近パスワードの数|〇|〇|〇|
|ログイン失敗後にアカウントをロックする|〇|〇|〇|
|　パスワードのロックアウト期間 (分)|〇|〇|〇|
|許可される試行の回数|〇|〇|〇|
|**パスワードの最大存続期間の設定**|**〇**|**×（パスワード有効期限なしで固定）**|**×（設定不可。デフォルトパスワードポリシーの設定が適用）**|
|　**パスワードの有効期限 (日)**|**〇**|**×（同上）**|**×（同上）**|
|**パスワードの最短存続期間の設定**|**〇**|**×（パスワード最短存続期間なしで固定）**|**×（同上）**|
|　**パスワードの最短存続期間 (時間)**|**〇**|**×（同上）**|**×（同上）**|


カスタムパスワードポリシーは、マニュアルに記載の通り、ユーザー/グループ単位で割り当て可能です。
```
各ユーザーおよびグループに、1 つのデフォルト・ポリシーまたは 1 つのカスタム・ポリシーを割り当てることができます。 
ユーザーにパスワード・ポリシーが割り当てられている場合、そのパスワード・ポリシーがユーザーに適用されます。
そうでない場合、適用では、ユーザーがメンバーになっているグループに付加されている結合パスワード・ポリシーが使用されます。 
この組み合わせには、常に「デフォルトのパスワード・ポリシー」が含まれます。 
すべてのユーザーは、このパスワード・ポリシーが関連付けられている、公開されていない内部グループのメンバーです。 
ユーザーのグループ・パスワード・ポリシーが結合されると、より制限の厳しい要件が適用されます。 
例えば、デフォルト・ポリシーが 4 文字の英字を必要とするが、カスタム・ポリシーが 2 文字の英字を必要とする場合、制約は 4 文字の英字を必要とします。
```

ユーザーにカスタムポリシーを割り当てると、値がそのまま適用されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/d88278fd-c54d-becc-bbbc-7d0ebce08986.png)

一方、グループに割り当てた場合は、デフォルトのパスワードポリシー含めて適用されているカスタムポリシーで最も要件の厳しいものが適用されます。
この点を注意してパスワードポリシーを設定する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c6e92fce-c589-6731-0ae2-fc9018d93954.png)


# 2．カスタムポリシーの作成について

①IBM Security Verifyの管理画面で、[セキュリティ]->[パスワードの管理]を開き、カスタムポリシーで「ポリシーの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/47f3f034-4de0-df46-1845-dc9e5da3afcc.png)

②任意の名前を設定して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/4268facc-0c17-2554-4fcd-82502e40afa5.png)


②パスワードストレングスの設定を行い、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0e8872e5-bc11-cb56-c82c-884c740f3e1c.png)


③パスワードセキュリティーの設定を行い、「ポリシーの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/ae1c0103-5f49-2e2a-1e7f-d6788ee2e7b1.png)

次に、ユーザー・グループに割り当てしてみます。



# 3. カスタムポリシーのユーザー・グループへの割り当てについて

## 3.1　ユーザーへの個別割り当て

①作成されたポリシーを開き、「ユーザー&グループ」タブをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/a47e6654-479d-9731-08b3-cf0cb17ff5f8.png)

②「ユーザーおよびグループの割り当て」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/d1267e90-9983-248d-703b-b057bae843e2.png)

③任意のユーザーを選択して「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/2d0d5bd6-1c56-4708-2dc2-f46ce02e7bb5.png)

④ユーザーが追加されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/b5d5de6a-8e85-8b38-ca3a-0109e936aed5.png)

⑤ユーザー情報を参照すると、有効なパスワードポリシーに適用されている条件が表示されます。
割り当て済みのパスワードポリシー欄は、ユーザーに直接ポリシーを割り当てたときのみ表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/34e15f26-3b05-7ef0-56e3-8e79ce42eaa6.png)

パスワードポリシーをユーザーに割り当てると、ユーザー属性が追加されます。

例）urn:ietf:params:scim:schemas:extension:ibm:2.0:User:attachedPasswordPolicy.value:	2354d705-767b-44d1-8aa9-0de3f02db440
```
      "urn:ietf:params:scim:schemas:extension:ibm:2.0:User": {
        "lastLogin": "2024-09-10T07:48:34Z",
        "lastLoginRealm": "cloudIdentityRealm",
        "attachedPasswordPolicy": {
          "name": "length 15",
          "value": "2354d705-767b-44d1-8aa9-0de3f02db440",
          "$ref": "https://>tenant>elisv01.verify.ibm.com/v3.0/PasswordPolicies/2354d705-767b-44d1-8aa9-0de3f02db440"
```

また、ユーザー属性が更新された旨、通知メールを受け取ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/ac2f93fd-92a0-3490-3e9b-18f9265446a0.png)


パスワードポリシーの割り当てを解除すると、同様に通知メールを受け取ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/afcd4781-feb0-e9d3-ce46-c743020765c2.png)


## 3.2　グループへの割り当て

グループはより厳しい要件が適用されるため、想定通りのポリシーが適用されるか確認します。
「連続する反復文字の最大数」「許可される試行の回数」は最大数のため、小さい値のほうが厳しい要件です。
それ以外は最小値のため、大きな値のほうが厳しい要件となります。

|項目名  |デフォルトのパスワード・ポリシー |カスタム・パスワード・ポリシー|厳しい要件|
|---|---|---|---|
|パスワードの最小の長さの文字数|8|10|10|
|英字が必要|チェック|チェック|チェック|
|　英字の最小数|3|5|5|
|　小文字の最小数|2|3|3|
|　大文字の最小数|1|2|2|
|数字または特殊文字が必要|チェック|チェック|チェック|
|　数字または特殊文字の最小数|3|5|5|
|　数字の最小数|2|3|3|
|　特殊文字の最小数|1|2|2|
|連続する反復文字の制限|チェック|チェック|チェック|
|　**連続する反復文字の最大数**|1|2|**1**|
|パスワードの再使用を許可しない|チェック|チェック|チェック|
|　許可しない直近パスワードの数|1|2|2|
|ログイン失敗後にアカウントをロックする|チェック|チェック|チェック|
|　パスワードのロックアウト期間 (分)|10|11|11|
|**許可される試行の回数**|5|6|**5**|

この条件でデフォルトポリシー、カスタムポリシーを用意して、グループに割り当てしていきます。

①作成したポリシーを開き、「ユーザー&グループ」タブをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/6bb3bfde-1343-b097-11dc-c7ed82eaeb4a.png)

②グループが割り当てされていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/4dd6b97d-2c61-a9e6-be83-dbb6ec9f5db9.png)

③ユーザー情報を参照すると、有効なパスワードポリシーに適用されている条件が表示されます。
割り当て済みのパスワードポリシー欄は、表示がありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/5dda5497-c699-d8c3-a601-351d7fd6ee5c.png)


要件の厳しいパスワードポリシーが適用されていることが確認できました。
```
パスワードの最小長は 10 文字です。
パスワードには 5 文字以上の英字を含める必要があります。
パスワードには、少なくとも 3 個の小文字 (a..z) を含める必要があります。
パスワードには、少なくとも 2 個の大文字 (A..Z) を含める必要があります。
パスワードには 5 文字以上の数字および特殊文字を含める必要があります。
パスワードには、少なくとも 3 個の数字 (0..9) を含める必要があります。
パスワードには、少なくとも 2 個の特殊文字を含める必要があります。 特殊文字は、アルファベットの大文字または小文字ではなく、数字でもありません。
パスワードには、連続して繰り返される同じ文字の 1 個を超えるインスタンスを含めることはできません。
パスワードを再使用するには、少なくとも 2 個の異なるパスワードが履歴に存在している必要があります。
ログインの連続失敗回数が所定回数を超えた場合、ログインを試行することはできません。
連続してログインに失敗したため、パスワードは 11 分経過するまで認証のために使用できません。
5 回連続でログインに失敗すると、アカウントはロックされます。
```

RESTAPIでグループ情報を確認すると、グループに属性が追加されていることがかわります。
```
"urn:ietf:params:scim:schemas:extension:ibm:2.0:Group": {
        "groupType": "standard",
        "attachedPasswordPolicy": {
          "name": "カスタムパスワード",
          "value": "82146a16-a896-43db-afa6-72d0da3a0347",
          "$ref": "https://<tenant>.verify.ibm.com/v3.0/PasswordPolicies/82146a16-a896-43db-afa6-72d0da3a0347"
```
ユーザーに割り当てたときのようにユーザー属性にattachedPasswordPolicyが追加されませんでした。
また、ユーザー属性に変更がないため、通知メールも受け取りませんでした。

# 最後に
IBM Security VerifyのCloud Directory内の、特定ユーザー、グループに対して、異なるパスワードポリシーを適用できました。
今回の機能で、管理者グループのユーザーのみ強力なパスワードポリシーを割り当てるとった運用が可能となるため、利用頻度が高い機能になります。
カスタムポリシーをグループに割り当てた際に、厳しい要件が適用されるという点を気を付けたいと思います。

# 参考
https://www.ibm.com/docs/en/security-verify?topic=overview-whats-new

https://www.ibm.com/docs/ja/security-verify?topic=passwords-assigning-password-policies-users-groups