はじめに
2023年9月の新機能で、IBM Security Verify APIを利用して、CSVを読み込みユーザー削除する機能がされました。
APIのリファレンスは、Delete users for the specified tenant from a (CSV) file.を参照ください。
注意)今回はEUのトライアルテナントで試しました。2023/9/29時点で、日本のテナントには新機能がリリースされていないようで、404エラーが返ってきています。
1.事前準備について
APIクライアントの準備や、アクセストークンの発行は、「IBM Security Verify API で ユーザーのアカウントを無効化する」と同じです。以下をご参照ください。
https://qiita.com/fitz/items/7874a95245eea3ecef13
2.CSVの準備
CSVの1行目は列ヘッダーで、「id」を固定で設定します。
2行目から削除するユーザーのユーザーID(ユーザー登録時にランダムに採番される値)を指定します。
登録したい属性値にあわせて1行目を変更します。
なお、CSVファイルのサイズは、最大10MB (10485760 bytes)になります。
id
60P7273T7P
60A7471A9Q
3.CSVによるユーザー削除
アクセストークンを取得します。
curl -X POST "https://<テナント名>.verify.ibm.com/oidc/endpoint/default/token" --header "Content-Type: application/x-www-form-urlencoded" --data-urlencode "grant_type=client_credentials" --data-urlencode "client_id=<クライアントID>" --data-urlencode "client_secret=<クライアント秘密鍵>"
CSVによるユーザー削除リクエストは以下のような形になります。
ユーザーにメール通知する場合
curl -i -X POST https://<テナント名>.verify.ibm.com/v2.0/CSV/deleteUsers -H "Content-Type: multipart/form-data;charset=UTF-8" -H "Authorization: Bearer <アクセストークン>" -F file=@<CSVのファイルパス>
メール通知をしない場合は、リクエストに「?notifyType=NONE」を追加します。
curl -i -X POST https://<テナント名>.verify.ibm.com/v2.0/CSV/deleteUsers?notifyType=NONE -H "Content-Type: multipart/form-data;charset=UTF-8" -H "Authorization: Bearer <アクセストークン>" -F file=@<CSVのファイルパス>
成功すると、レスポンスはHTTP/1.1 202 Acceptedがかえり、戻り値としてrequest IDが返ってきます。
メール通知した場合は、ユーザーには以下のようなメールが送付されます。
4.処理結果の確認
CSVの処理結果は、/v2.0/CSV/jobs で確認できます。
curl -X GET https://<テナント名>.verify.ibm.com/v2.0/CSV/jobs/<request ID> -H "Authorization: Bearer <アクセストークン>"
処理が無事に完了すると、"state":"COMPLETED"となっていました。
5.エラー系
5.1 CSVにidヘッダーがない場合
1行目がidでないため、400 Bad Requestが返る。
HTTP/1.1 400 Bad Request
~省略~
{"schemas":["urn:ietf:params:scim:api:messages:2.0:Error"],"status":"400","detail":"CSIAI0221E The CSV header \"60P7273T7P\" is not a valid SCIM name. The valid header names are: \"id\" "}
5.2 CSVに重複する値が含まれる場合
以下のようなCSVで同じユーザーIDを2回記載しました。
id
642000S6P4
642000S6P4
アップロード時は重複チェックは行われず、正常時と同様にアップロードが成功しました。
HTTP/1.1 202 Accepted
~省略~
{"_id":"c982650b-19fd-4da5-9715-70c56cfe9e4b_aad6477e-aa97-4938-9d51-dc5e1a829e2b"}
ジョブの結果を確認すると、2回目のユーザー削除がエラーになっています。
5.3 CSVが10MBを超える場合
EXCELのオートフィル機能で100万件のダミーデータ(ABC0000001~ABC1000000)を生成したところ、11.4 MB (12,000,004 バイト)になりました。
10MBを超えるファイルをアップロートしたところ、413 Request Entity Too Large が返ってきました。10485760バイト(=10MB)が上限と表記されていました。
HTTP/1.1 100 Continue
X-Note: Gateway Ack
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
HTTP/1.1 413 Request Entity Too Large
~省略~
{"schemas":["urn:ietf:params:scim:api:messages:2.0:Error"],"status":"413","detail":"CSIAI0223E The CSV file size [12000004 bytes] exceeds the maximum file size of [10485760 bytes]."}
最後に
IBM Security VerifyのAPIを利用してCSVからユーザーを一括削除する方法についてについてご紹介しました。