LoginSignup
2
0

IBM Security Verify API で CSVを使用したユーザー削除を行う

Last updated at Posted at 2023-09-29

はじめに

2023年9月の新機能で、IBM Security Verify APIを利用して、CSVを読み込みユーザー削除する機能がされました。
image.png

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)になります。

deleteuser.csv
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が返ってきます。
image.png

メール通知した場合は、ユーザーには以下のようなメールが送付されます。
image.png

4.処理結果の確認

CSVの処理結果は、/v2.0/CSV/jobs で確認できます。

curl -X GET https://<テナント名>.verify.ibm.com/v2.0/CSV/jobs/<request ID> -H "Authorization: Bearer <アクセストークン>"

処理が無事に完了すると、"state":"COMPLETED"となっていました。
image.png

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回目のユーザー削除がエラーになっています。
image.png

5.3 CSVが10MBを超える場合

EXCELのオートフィル機能で100万件のダミーデータ(ABC0000001~ABC1000000)を生成したところ、11.4 MB (12,000,004 バイト)になりました。
image.png

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からユーザーを一括削除する方法についてについてご紹介しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0