👁️‍🗨️

【ZABBIX API】ユーザーを作成する(7.0)

に公開

Ver.7.0.21での確認
 
ZABBIX APIを扱うために必須なトークン発行については過去記事で少し触れているため省略
https://zenn.dev/iwanorigoro/articles/9bc762e44ee427

手順

大まかな流れは以下の通り

1. user.loginメソッドで認証トークンを取得
2. ユーザー作成に必要な情報収集
3. 1で取得したトークンと、2で取得した情報をもとにユーザー作成
4. user.logoutメソッドで認証トークンを無効化

 

  1. 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
    

     

  2. ユーザー作成に必要な情報収集

    【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"
      }
    ]
    

     

  3. 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を確認するとユーザーが作成されている

     

  4. user.logoutメソッドで認証トークンを無効化

    【user.logout】
    https://www.zabbix.com/documentation/7.0/jp/manual/api/reference/user/logout

    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.logout",
            "params": [],
            "id": 1
        }' \
      | jq -r 'if .error then .error else .result end'
    

    ログアウトに成功するとtrueが返される

    true
    

 
以上

Discussion