【IBM Security Verify Privilege Vault】SDKを使ってAPI実行してみる

# はじめに
IBM Security Verify Privilege Vault（以下、ISVPV）では、複数のAPI実行方法が提供されています。
今回は、SDKを実行してみました。

- **SDK**
- REST API
- SOAP API

https://ibm.docs.thycotic.com/isvp-vault/11.6.x/getting-started-tutorial/15-secret-server-apis-and-cli


# 1.SDKのガイドについて
SDKを使用するためには、ガイドに従いISVPV設定と、クライアントPCにSDK Clientをインストールする必要があります。
 https://ibm.docs.thycotic.com/isvp-vault/11.6.x/api-scripting/sdk-cli/index.md


# 2.ISVPV設定
ガイドの手順に従い、ISVPVを設定します。

## 2.1.Webサービスの有効化
管理画面で、[管理] > [構成] > [アプリケーション設定]セクションで、[Web サービスを有効にする] チェック ボックスがオンになっていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/ad2b5c50-d359-b269-208f-febf45917985.png)


## 2.2.アプリケーション アカウント作成
管理画面で、[管理] > [ユーザー管理]を開き、「ユーザーの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/299467ae-69a8-d200-7e76-0b058a23fa77.png)

任意のユーザー名、表示名、パスワードを入力し、[アプリケーション アカウント]にチェックを入れ、[ユーザーの追加]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/3a10167c-698e-f6fb-4e7d-b067c742a2c2.png)


## 2.3.SDK管理を有効化
管理画面で、[管理] > [SDK クライアント管理] > [構成]タブを開き、SDK Configrationを有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/657035f6-511d-9975-ba46-5510b05ed450.png)

## 2.4.SDK クライアント ルール登録
管理画面で、[管理] > [SDK クライアント管理] > [クライアント オンボーディング]タブを開き、[ルールの作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/b28a4913-cb63-d1c7-ebfc-00d2a1d8d808.png)

以下のように設定して、[保存]をクリックします。
- 任意の名前を設定
- 登録したアプリケーションアカウントを選択
- 許可するIPV 4 アドレスまたはアドレス範囲 (CIDR 表記) を設定
- [Require Onboarding Key]にチェックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/fca38bf8-be86-b959-5f4b-90949e50787f.png)

登録したルールを選択し、「Show Key」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/3df7664b-7f4c-8190-490d-bc10a12d56cb.png)

表示されたキーをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/862c9308-0ea8-3be3-6ee9-b98a66904708.png)

注）役割（ロール）を付与してもSecretを参照できなかったため役割の割り当て手順は割愛しています。

# 3.SDKクライアントのインストール/初期化
マニュアルのリンク先からSDKクライアントをダウンロードします。今回は最新の[SDK Client version 1.5.3]をダウンロードしました。
https://ibm.docs.thycotic.com/isvp-vault/11.6.x/api-scripting/sdk-downloads/index.md

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c599dd99-0c9e-695c-6de2-f48efe696863.png)

secretserver-sdk-1.5.3-win-x64.zipファイルを解凍し、任意のディレクトリに保管します。


Windowsのコマンドプロンプトを開き、SDKクライアントを保存したディレクトリに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/f3f6ae48-203a-794f-82c8-9fd740a20ece.png)


Verify Privilege Vault インスタンスに接続するようにクライアントを初期化します。
クライアント マシン上で 1 回限りの操作になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/5029d7e4-ce65-400d-fe4d-5e9e54e84e75.png)

```
>tss init -u https://<FQDN>/SecretServer -r <登録したルール名> -k <コピーしたキー>
```

SSL証明書に不備がある場合は、以下のようにエラーとなりました。
```
500 - The SSL connection could not be established, see inner exception.
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
～～割愛～～
```

# 4.実行結果のサンプル
SDKクライアントからコマンド実行できる環境が整っため、いくつかコマンドを実行してみます。

```
#ステータス確認
>tss status
Connected to endpoint https://<fqdn>/SecretServer
```
```
#SDKクライアントのバージョン確認
>tss version
1.5.3.0
```
```
#トークンの取得
>tss token
Ag~~割愛~~GQ
```
```
#initで構成した情報の削除（削除した場合は、tss initをもう一度実行する必要がある）
>tss remove
----------
>> Are you sure you want to remove the configuration settings from this machine?
>> [ Y = Yes, N = No ]
> Y
Your configuration settings have been removed.
```
```
#Secretの取得(id=1のSecret情報を取得）
>>tss secret -s 1 -ad
{"machine":"x.x.x.x","username":"root","password":"admin","notes":"","private-key":"*** Not Valid For Display ***","private-key-passphrase":""}


注）サービスアカウントが該当Secretを参照する権限がない場合、[API_AccessDenied]エラーが返ってきます。
マニュアルに記載されている役割（Role）を付与してもエラー解消しませんでした。
このため、Secretの共有設定で、サービスアカウントに表示権限を付与する形としました。
>tss secret -s 2 -ad
400 - Bad Request
Failed to retrieve the secret.
{
  "errorCode": "API_AccessDenied",
  "message": "Access Denied"
}
```

# 最後に
前回の[【IBM Security Verify Privilege Vault】RESTAPIを使ってみる](https://qiita.com/fitz/items/8900f57e37aa4067b2e6) に続き、SDKを使って、API実行を試してみました。
ご参考になれば幸いです。