【ZABBIX API】ユーザーを作成する(7.0)
Ver.7.0.21での確認
ZABBIX APIを扱うために必須なトークン発行については過去記事で少し触れているため省略
手順
大まかな流れは以下の通り
1. user.loginメソッドで認証トークンを取得
2. ユーザー作成に必要な情報収集
3. 1で取得したトークンと、2で取得した情報をもとにユーザー作成
4. user.logoutメソッドで認証トークンを無効化
-
user.loginメソッドで認証トークンを取得
【user.login】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/user/login# 認証トークンを取得 なおparamsは使用するユーザーに依る curl -sS \ --request POST \ --url 'http://127.0.0.1/zabbix/api_jsonrpc.php' \ --header 'Content-Type: application/json-rpc' \ --data ' { "jsonrpc": "2.0", "method": "user.login", "params": { "username": "Admin", "password": "zabbix" }, "id": 1 }' \ | jq -r 'if .error then .error else .result end'レスポンス(例)
0424bd59b807674191e7d77572075f33 -
ユーザー作成に必要な情報収集
【API】
https://www.zabbix.com/documentation/7.0/jp/manual/api
【メソッドリファレンス】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference
【user.create】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/user/create
まずはユーザー作成に必須のパラメータであるroleidを確認する【role.get】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/role/get# (参考)userオブジェクトの必須パラメータ username ユーザー名 roleid ユーザーロールID
1で取得したトークンを使用し、全ロールの情報を表示curl -sS \ --request POST \ --url 'http://127.0.0.1/zabbix/api_jsonrpc.php' \ --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \ --header 'Content-Type: application/json-rpc' \ --data ' { "jsonrpc": "2.0", "method": "role.get", "params": { "output": "extend" }, "id": 1 }' \ | jq -r 'if .error then .error else .result end'レスポンス
[ { "roleid": "1", "name": "User role", "type": "1", "readonly": "0" }, { "roleid": "2", "name": "Admin role", "type": "2", "readonly": "0" }, { "roleid": "3", "name": "Super admin role", "type": "3", "readonly": "1" }, { "roleid": "4", "name": "Guest role", "type": "1", "readonly": "0" } ] ## typeの値 # 1 - ユーザー # 2 - 管理者 # 3 - 特権管理者 ## readonlyの値 # 0 - いいえ # 1 - はい(読み取り専用)
追加するユーザーにはユーザーグループを割り当てたいので、usrgrpidを確認(オプション)【usergroup.get】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/usergroup/get# 有効なすべてのユーザーグループを取得 curl -sS \ --request POST \ --url 'http://127.0.0.1/zabbix/api_jsonrpc.php' \ --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \ --header 'Content-Type: application/json-rpc' \ --data ' { "jsonrpc": "2.0", "method": "usergroup.get", "params": { "output": [ "usrgrpid", "name" ], "status": 0 }, "id": 1 }' \ | jq -r 'if .error then .error else .result end'レスポンス
[ { "usrgrpid": "7", "name": "Zabbix administrators" }, { "usrgrpid": "8", "name": "Guests" }, { "usrgrpid": "11", "name": "Enabled debug mode" }, { "usrgrpid": "12", "name": "No access to the frontend" } ] -
1で取得したトークンと、2で取得した情報をもとにユーザー作成
【user.create】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/user/create# 特権管理者で"Zabbix administrators"グループに所属するTestmanユーザーを作成する curl -sS \ --request POST \ --url 'http://127.0.0.1/zabbix/api_jsonrpc.php' \ --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \ --header 'Content-Type: application/json-rpc' \ --data ' { "jsonrpc": "2.0", "method": "user.create", "params": { "username": "Testman", "passwd": "Usertest123", "roleid": "3", "usrgrps": [ { "usrgrpid": "7" } ] }, "id": 1 }' \ | jq -r 'if .error then .error else .result end'レスポンス
# 成功するとuseridsが返却される { "userids": [ "3" ] }
GUIを確認するとユーザーが作成されている

-
user.logoutメソッドで認証トークンを無効化
【user.logout】
https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/user/logoutcurl -sS \ --request POST \ --url 'http://127.0.0.1/zabbix/api_jsonrpc.php' \ --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \ --header 'Content-Type: application/json-rpc' \ --data ' { "jsonrpc": "2.0", "method": "user.logout", "params": [], "id": 1 }' \ | jq -r 'if .error then .error else .result end'ログアウトに成功するとtrueが返される
true
以上
Discussion