【IBM Security Verify】パスワード・インテリジェンス機能を使って、辞書攻撃に対応する③

# はじめに
3回目は、パスワード・インテリジェンス・レポートについて確認しました。

# 1.パスワード・インテリジェンス・レポーの出力イメージ

[レポート]にパスワード・インテリジェンスのメニューが追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/5517a09e-246a-a2e0-adf6-04e442426354.png)

期間を指定して「レポートの実行」をクリックします。
![qiita (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/e0abd142-e709-ea5c-796a-c32367682b0c.png)

ソースと、パスワード検査結果列に出力されたデータは以下のようなパターンでした。
|ソース列|パスワード検査結果列|
|---|---|
|<ul><li>IBM セキュリティー X-Force list</li><li>カスタム・パスワード・リスト</li>	<li> - (いずれのリストにも該当しない場合）</li></ul> | <ul><li>成功(いずれのリストにも該当しない場合)</li><li>警告（警告アクションが適用された結果）</li><li>適用済み（強制アクションが適用された結果）</li><li>監査済み（監査アクションが適用された結果）</li></ul>|


# 2.REST APIで取得したイベントのサンプル

イベントペイロードの説明には、まだパスワードインテリジェンスに関する情報が反映されていませんでした。
https://www.ibm.com/docs/ja/security-verify?topic=reports-event-payloads

以下は取得してみたイベントデータのサンプルです。

## 2.1 ユーザー・ログイン・フロー（カスタム・リスト）
認証イベントに出力されています。data部分だけ抜粋しています。
"dict_type": "LOCAL"がカスタム・リストのパータンでした。

```
"data": {
                        "dict_type": "LOCAL",
                        "api_grant_type": "urn:ibm:params:oauth:grant-type:apikey",
                        "dict_enabled": "LOCAL",
                        "performedby_type": "intraservice",
                        "sourceinstance": "clouddirectory",
                        "subject": "UNKNOWN",
                        "origin": "xxx.xxx.xxx.xxx",
                        "cause": "The system failed to authenticate user \"testuser\" because of \"PWD_IN_DICTIONARY\".",
                        "messageid": "CSIAM1031E",
                        "devicetype": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                        "dict_op": "AUTH",
                        "result": "failure",
                        "performedby": "shared_apikey",
                        "dict_result": "ENFORCED",
                        "subtype": "user_password",
                        "self": "false",
                        "action": "login",
                        "location": "https://xxx.verify.ibm.com/cdprofilemgmt/v2.0/Users/authentication",
                        "sourcetype": "clouddirectory",
                        "realm": "cloudIdentityRealm",
                        "username": "testuser"
}

```

## 2.2 ユーザー・ログイン・フロー（IBM Security X-force）
認証イベント(event_type="authentication")に出力されています。data部分だけ抜粋しています。
IBM Security X-forceの場合は、"dict_type": "GLOBAL"でした。

```
"data": {
                        "dict_type": "GLOBAL",
                        "api_grant_type": "urn:ibm:params:oauth:grant-type:apikey",
                        "dict_enabled": "GLOBAL",
                        "performedby_type": "intraservice",
                        "sourceinstance": "clouddirectory",
                        "subject": "65200xxxxx",
                        "origin": "xxx.xxx.xxx.xxx",
                        "cause": "Authenticated user \"testuser\" successfully.",
                        "messageid": "CSIAM1030I",
                        "devicetype": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                        "dict_op": "AUTH",
                        "result": "success",
                        "performedby": "shared_apikey",
                        "dict_result": "AUDITED",
                        "subtype": "user_password",
                        "self": "false",
                        "action": "login",
                        "location": "https://xxx.verify.ibm.com/cdprofilemgmt/v2.0/Users/authentication",
                        "sourcetype": "clouddirectory",
                        "realm": "cloudIdentityRealm",
                        "parameters": "lang=ja",
                        "username": "testuser"
}

```

## 2.3 アカウントの作成、パスワードのリセット、およびパスワードの変更のフロー（カスタム・リスト）
管理イベント（event_type="management")に出力されています。data部分だけ抜粋しています。
"dict_type": "LOCAL"がカスタム・リストのパータンでした。

```
"data": {
                        "dict_type": "LOCAL",
                        "api_grant_type": "implicit",
                        "dict_enabled": "LOCAL",
                        "performedby_type": "user",
                        "targetid": "65200xxxxx",
                        "userinfo_lookup": "performedby",
                        "resource": "user",
                        "origin": "xxx.xxx.xxx.xxx",
                        "performedby_username": "testuser",
                        "cause": "\"65200xxxxx\" のパスワード変更が失敗しました。",
                        "messageid": "ユーザー",
                        "devicetype": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                        "performedby_realm": "cloudIdentityRealm",
                        "dict_op": "CHANGE",
                        "result": "failure",
                        "performedby": "65200xxxxx",
                        "dict_result": "ENFORCED",
                        "json": "{\"urn:ietf:params:scim:schemas:extension:ibm:2.0:Notification\":{\"notifyType\":\"EMAIL\",\"notifyManager\":false,\"notifyPassword\":false},\"schemas\":[\"urn:ietf:params:scim:schemas:ibm:core:2.0:ChangePassword\",\"urn:ietf:params:scim:schemas:extension:ibm:2.0:Notification\"],\"newPassword\":\"********\",\"currentPassword\":\"********\"}",
                        "self": "true",
                        "action": "changed password",
                        "location": "https://xxx.verify.ibm.com/v2.0/Me/password",
                        "realm": "cloudIdentityRealm"
                    }

```


## 2.4 アカウントの作成、パスワードのリセット、およびパスワードの変更のフロー（IBM Security X-force）
管理イベント（event_type="management")に出力されています。data部分だけ抜粋しています。
IBM Security X-forceの場合は、"dict_type": "GLOBAL"でした。

```
"data": {
                        "dict_type": "GLOBAL",
                        "api_grant_type": "implicit",
                        "dict_enabled": "GLOBAL",
                        "performedby_type": "user",
                        "targetid": "65200xxxxx",
                        "userinfo_lookup": "performedby",
                        "resource": "user",
                        "origin": "xxx.xxx.xxx.xxx",
                        "performedby_username": "testuser",
                        "cause": "\"65200xxxxx\" のパスワード変更が失敗しました。",
                        "messageid": "ユーザー",
                        "devicetype": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                        "performedby_realm": "cloudIdentityRealm",
                        "dict_op": "CHANGE",
                        "result": "failure",
                        "performedby": "65200xxxxx",
                        "dict_result": "ENFORCED",
                        "json": "{\"urn:ietf:params:scim:schemas:extension:ibm:2.0:Notification\":{\"notifyType\":\"EMAIL\",\"notifyManager\":false,\"notifyPassword\":false},\"schemas\":[\"urn:ietf:params:scim:schemas:ibm:core:2.0:ChangePassword\",\"urn:ietf:params:scim:schemas:extension:ibm:2.0:Notification\"],\"newPassword\":\"********\",\"currentPassword\":\"********\"}",
                        "self": "true",
                        "action": "changed password",
                        "location": "https://xxx.verify.ibm.com/v2.0/Me/password",
                        "realm": "cloudIdentityRealm"
                    }
```

# 最後に
パスワード・インテリジェンス機能について3回にわたって紹介させて頂きました。

- [【IBM Security Verify】パスワード・インテリジェンス機能を使って、辞書攻撃に対応する①](https://qiita.com/fitz/items/86de0400e346a8c70c88)
- [【IBM Security Verify】パスワード・インテリジェンス機能を使って、辞書攻撃に対応する②](https://qiita.com/fitz/items/bbcfa712de1dc7cda343)
- [【IBM Security Verify】パスワード・インテリジェンス機能を使って、辞書攻撃に対応する③](https://qiita.com/fitz/items/bb6b85883dfc63d2c6bf)