Db2 V11.5 と Luna HSMの連携 - 事前準備

### Db2 V11.5 と Luna ハードウェア・セキュリティー・モジュール (HSM)の連携

# Db2-HSM 連携の事前準備 (クライアント導入からパーティション作成初期化まで)

Luna ハードウェア・セキュリティー・モジュール (以降 単純に"HSM"と表記します)は、高度なセキュリティ機能を有する環境での鍵管理や暗号化などの処理を行う専用のハードウェアアプライアンス製品です。Db2は ネイティブ暗号化でマスター鍵 (MK) を保管する鍵ストアを、HSM をつかって構成することが可能です。

Db2 ネイティブ暗号化でHSMを使用するためには 、 HSM管理者は次のような 準備をする必要があります。

- Db2サーバーが導入されるシステムにHSMクライアント(SafeNet Luna HSM Client Software )を導入する
- HSMアプライアンスに、Db2用のHSM アプリケーションパーティションを作成初期化しておく
- HSMクライアントが、Db2用のHSM アプリケーションパーティションにアクセスできることを確認する

本手順書では　HSMクライアント導入先として AIX 7.2を使用した例を使用して　これらの手順の一例をご紹介します。

------------------------------

 本手順書は、特定の環境・使用状況においての正確性が確認されていますが、すべての環境において同様の結果が得られる保証はありません。
これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。

---------------------------------------

## 構成と手順の概略

![image-HSM-Db2AESEStandalone-prepare.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/e0585931-56f6-4862-f5bc-0ed0251a2981.jpeg)


本検証環境では TCP/IPネットワークでDNSサーバーを使用していないため　IPアドレスを直接指定します。

## 前提

ここではすでに次のような設定が終了していることが前提となります。

- HSM アプライアンス管理者が実施するHSMアプライアンスの設置や初期化などが終了していること

- Luna HSM クライアントが導入されるマシンにはsshクライアントが導入されていること

この手順の中では　HSM アプライアンスの`admin`のパスワードを必要とする箇所があります。　



## 手順

### 手順1 : AIX 7.2にクライアント(SafeNet Luna HSM Client Software )を導入します。

(1) Luna HSM クライアントの/work/img/に展開したLuna HSMクライアント インストールファイルのリストは次の通りです。

```
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]# ls
all_input              lunacmu.bff            lunajspjava.bff
ckdemo.bff             lunaconf.bff           lunajspsamples.bff
cklog.bff              lunajcprovapi.bff      lunalib.bff
common                 lunajcprovdocs.bff     lunavtl.bff
install.sh             lunajcprovjava.bff     noask
libshim.bff            lunajcprovsamples.bff  plink
lunaMT.bff             lunajmt.bff            pscp
lunaSAMP.bff           lunajspapi.bff         salogin.bff
lunacm.bff             lunajspdocs.bff        softtoken.bff
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]# 
```

(2) Luna HSM クライアントを`install.sh` を使用して導入します。全コンポーネントを導入するときは `install.sh all`が使用できます。次は`[2]: Luna JSP (Java)` `[3]: Luna JCProv (Java)`を導入している例です。

デフォルトの導入先はでは`/usr/safenet/lunaclient`です。

**(注意)** install.sh は/bin/bashが前提となっていますが、AIX 7.2には導入されていない可能性があります。　本検証環境では  `/usr/bin/sh install.sh`を実行して導入できました。

<details><summary>install.sh 実行例</summary><div>

```
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]# ./install.sh
Installing from /work/img/LunaClient_10.2.0-111_AIX/64

IMPORTANT:  The terms and conditions of use outlined in the software
license agreement document '008-010068-001_EULA_HSM7_SW_revB' ("License")
shipped with the product, constitutes a legal agreement between you and
SafeNet.

Please read the License contained in the packaging of this
product in its entirety before installing this product.

Do you agree to the License contained in the product packaging?

If you select 'yes' or 'y' you agree to be bound by all the terms
and conditions set out in the License.

If you select 'no' or 'n', this product will not be installed.

(y/n) y					<< ライセンス条件に同意する為に'y'を入力する


Products
Choose Luna Products to be installed

  [1]: Luna Network HSM

  [N|n]: Next

  [Q|q]: Quit

 Enter selection:  1	<< 1を選択して　Luna Network HSM　を導入する


Products
Choose Luna Products to be installed

 *[1]: Luna Network HSM

  [N|n]: Next

  [Q|q]: Quit

 Enter selection:  n	<< nを選択して次に進む


Advanced
Choose Luna Components to be installed

  [1]: Luna SDK

  [2]: Luna JSP (Java)

  [3]: Luna JCProv (Java)

  [B|b]: Back to Products selection

  [I|i]: Install

  [Q|q]: Quit

 Enter selection:  2	<< 2 [2]: Luna JSP (Java)を選択して次に進む


Advanced
Choose Luna Components to be installed

  [1]: Luna SDK

 *[2]: Luna JSP (Java)

  [3]: Luna JCProv (Java)

  [B|b]: Back to Products selection

  [I|i]: Install

  [Q|q]: Quit

 Enter selection:  3	<< 3 Luna JCProv (Java)を選択して次に進む


Advanced
Choose Luna Components to be installed

  [1]: Luna SDK

 *[2]: Luna JSP (Java)

 *[3]: Luna JCProv (Java)

  [B|b]: Back to Products selection

  [I|i]: Install

  [Q|q]: Quit

 Enter selection:  i	<< iを入力して導入を開始する

List of Luna Products to be installed:
- Luna Network HSM

List of Luna Components to be installed:
- Luna JSP (Java)
- Luna JCProv (Java)


Installing the Luna HSM Client 10.2.0-111...
Adding new version of lunaconf
+-----------------------------------------------------------------+
                    事前インストール検査...
+-----------------------------------------------------------------+
(省略)
すべてのファイルセットの処理を終了しました。  (合計時間:  0 秒)

+-----------------------------------------------------------------+
                                要約:
+-----------------------------------------------------------------+

インストール要約
----------------
名前                     レベル        部分     イベント    結果
------------------------------------------------------------------
lunajcprovjava.rte      10.2.0.111   USR      APPLY     SUCCESS

Installation of the Luna HSM Client 10.2.0-111 completed.

Added STC ClientIdentitiesDir entry.
Added STC PartitionIdentitiesDir entry.
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]#
```
</div></details>

(3) `lslpp`を使用して　導入されたコンポネントを確認します

```
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]# lslpp -l | grep -i luna
  ckdemo.rte              10.2.0.111  COMMITTED  Luna HSM Client ckdemo
  cklog.rte               10.2.0.111  COMMITTED  Luna HSM Client CkLog Utility
  libshim.rte             10.2.0.111  COMMITTED  Luna HSM Client Shim
  lunaMT.rte              10.2.0.111  COMMITTED  Luna HSM Client Multitoken
  lunacm.rte              10.2.0.111  COMMITTED  Luna HSM Client lunacm
  lunacmu.rte             10.2.0.111  COMMITTED  Luna HSM Client Certificate
  lunaconf.rte            10.2.0.111  COMMITTED  Luna HSM Client Configurator
  lunajcprovapi.rte       10.2.0.111  COMMITTED  Luna HSM Client lunajcprovapi
  lunajcprovdocs.rte      10.2.0.111  COMMITTED  Luna HSM Client lunajcprovdocs
  lunajcprovjava.rte      10.2.0.111  COMMITTED  Luna HSM Client lunajcprovjava
  lunajmt.rte             10.2.0.111  COMMITTED  Luna HSM Client jMultitoken
  lunajspapi.rte          10.2.0.111  COMMITTED  Luna HSM Client lunajspapi
  lunajspdocs.rte         10.2.0.111  COMMITTED  Luna HSM Client lunajspdocs
  lunajspjava.rte         10.2.0.111  COMMITTED  Luna HSM Client lunajspjava
  lunalib.rte             10.2.0.111  COMMITTED  Luna HSM Client Cryptoki
  lunavtl.rte             10.2.0.111  COMMITTED  Luna HSM Client Client VTL
  salogin.rte             10.2.0.111  COMMITTED  Luna HSM Client SALogin
  softtoken.rte           10.2.0.111  COMMITTED  Luna HSM Client SoftToken
  lunalib.rte             10.2.0.111  COMMITTED  Luna HSM Client Cryptoki
[root@psm02:/work/img/LunaClient_10.2.0-111_AIX/64]#
```

(4) デフォルトの導入先はでは`/usr/safenet/lunaclient`です。本検証環境では 導入後の`/usr/safenet/lunaclient`は次のようになっています。

```
[root@psm02:/usr/safenet/lunaclient]# ls -l
合計 8
drwxr-xr-x    2 bin      bin            4096 May 22 10:34 bin
drwxr-xr-x    4 bin      bin             256 Mar 26 12:36 cert
drwxr-xr-x    3 root     system          256 May 22 10:34 configData
drwxr-xr-x    4 root     system          256 May 22 10:34 data
drwxr-xr-x    4 bin      bin             256 Mar 26 12:36 jcprov
drwxr-xr-x    4 bin      bin             256 Mar 26 12:36 jsp
drwxr-xr-x    2 bin      bin             256 Mar 26 12:36 lib
[root@psm02:/usr/safenet/lunaclient]#
```



### 手順2 :  HSM アプライアンスと HSM クライアント間のNTL(Network Trust Link)を作成します。

参考文書 : [Create a Network Trust Link - Multi-step setup](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/client_appliance/multi-step_ntl_setup.htm)

Luna HSMクライアントを使用するアプリケーション(今回はDb2)が、鍵を保管するHSMアプリケーションパーティションをアクセスができるように NTL(Network Trust Link)を使用可能にします。　

**(注意)** 複数のHSMアプライアンスの証明書をクライアントへimportする場合、ひとつづつ処理することをお勧めします。

(1) Luna HSMクライアントで作業します。HSM アプライアンスの証明書server.pemをLuna HSMクライアント導入ディレクトリーにコピーします。

```
# 実行コマンド
#Luna HSMクライアント導入ディレクトリーへ移動
cd  /usr/safenet/lunaclient/bin
# HSM アプライアンスHSM#1(192.168.20.110)の証明書server.pemをコピーします。
scp admin@192.168.20.110:server.pem . 

# 実行例
[root@psm02:/usr/safenet/lunaclient/bin]# scp admin@192.168.20.110:server.pem .
Warning: Permanently added '192.168.20.110' (ECDSA) to the list of known hosts.
admin@192.168.20.110's password:

server.pem                                        100% 1180     1.3MB/s   00:00

[root@psm02:/usr/safenet/lunaclient/bin]# ls -lt
合計 168784
-rw-r--r--    1 root     system         1180 May 26 17:46 server.pem
-rwxr-xr-x    1 root     system      2267485 May 22 10:34 pscp
-rwxr-xr-x    1 root     system      2299180 May 22 10:34 plink
(省略)
```
  

(2) `vtl addServer`コマンドを使用してサーバーの証明書をクライアントに登録します。　

```
vtl addServer -n <Network_HSM_hostname_or_IP> -c <server_certificate>
```

HSM#1(192.168.20.110)を登録する実行例は次のとおりです。

```
# 実行コマンド
./vtl addServer -n 192.168.20.110 -c server.pem

# 実行例
[root@psm02:/usr/safenet/lunaclient/bin]# ./vtl addServer -n 192.168.20.110 -c server.pem
vtl (64-bit) v10.2.0-111. Copyright (c) 2020 SafeNet. All rights reserved.


New server 192.168.20.110 successfully added to server list.

[root@psm02:/usr/safenet/lunaclient/bin]#
```

   

(3) `vtl createcert`コマンドを使用してクライアントの証明書とprivate keyを作成します。

```
vtl createcert -n <SafeNet_HSM_client_hostname_or_IP>
```

HSM クライアントpsm02(192.168.20.12)での実行例は次の通りです。

```
# 実行コマンド
./vtl createcert -n 192.168.20.12

# 実行例
[root@psm02:/usr/safenet/lunaclient/bin]# ./vtl createcert -n 192.168.20.12
vtl (64-bit) v10.2.0-111. Copyright (c) 2020 SafeNet. All rights reserved.

Private Key created and written to: /usr/safenet/lunaclient/cert/client/192.168.20.12Key.pem
Certificate created and written to: /usr/safenet/lunaclient/cert/client/192.168.20.12.pem
[root@psm02:/usr/safenet/lunaclient/bin]#
```

証明書とprivate keyは  `<client_install_dir>/cert/client`  に `<client_hostname_or_IP>.pem `と `<client_hostname_or_IP>Key.pem`　として保管されます。本検証環境では次の通りです。

```
[root@psm02:/usr/safenet/lunaclient/bin]# ls -l /usr/safenet/lunaclient/cert/client
合計 16
-rw-rw-r--    1 root     system         1172 May 26 17:50 192.168.20.12.pem
-rw-rw-r--    1 root     system         1743 May 26 17:50 192.168.20.12Key.pem
[root@psm02:/usr/safenet/lunaclient/bin]#
```

   

(4) HSMクライアントの証明書を HSMアプライアンスにコピーします。

```
# 実行コマンド
# HSM クライアントpsm02(192.168.20.12)の証明書を HSM アプライアンスHSM#1(192.168.20.110)にコピーします。
scp /usr/safenet/lunaclient/cert/client/192.168.20.12.pem admin@192.168.20.110:

# 実行例
[root@psm02:/usr/safenet/lunaclient/bin]# scp /usr/safenet/lunaclient/cert/client/192.168.20.12.pem admin@192.168.20.110:
admin@192.168.20.110's password:

192.168.20.12.pem                                     100% 1172     1.4MB/s   00:00

[root@psm02:/usr/safenet/lunaclient/bin]#
```

(5) ここからは、HSMアプライアンス(`lunash`)で作業します。 `client register`を使用して  HSMクライアントの証明書をHSM アプライアンスに登録します。

```
# 実行コマンド
#-- HSM アプライアンスHSM#1(192.168.20.110)へsshする。
#-- ssh が成功するとHSMアプライアンスのlunash環境にはいっている。
ssh admin@192.168.20.110
# HSMクライアントpsm02(192.168.20.12)の証明書をip addressを使って登録する。
client register -client 192.168.20.12 -ip 192.168.20.12

# 実行例
[root@psm00:/db2work/HSM_supportInfo]# ssh admin@192.168.20.110
admin@192.168.20.110's password:
Last login: Tue May 26 10:08:31 2020 from 192.168.20.12

Luna Network HSM Command Line Shell v7.4.0-226. Copyright (c) 2018 SafeNet. All rights reserved.

[local_host] lunash:>client register -client 192.168.20.12 -ip 192.168.20.12


'client register' successful.


Command Result : 0 (Success)
[local_host] lunash:>
```

   

(6) NTLS サービスを再起動します。

```
# 実行コマンド
service restart ntls

# 実行例
[local_host] lunash:>service restart ntls

Checking for connected clients before stopping NTLS service:

There are no connected clients.  Proceeding...
Stopping ntls:                                             [  OK  ]

Starting ntls:                                             [  OK  ]

Command Result : 0 (Success)
[local_host] lunash:>   
```

`client list`を実行すると　登録されたクライアントが表示されます。　

```
# 登録されたクライアント192.168.20.12 (psm02)が表示されます。
[local_host] lunash:>client list

registered client 1: 192.168.20.12


Command Result : 0 (Success)
[local_host] lunash:>
```

   

### 手順3 :  HSM アプライアンス上にパーティションを作成します。

参考文書 : [Creating a Password-Authenticated Partition](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/partition_create/hsm-so_action_to_config_appliance_pw-ppso_partition_1a.htm)

HSMアプライアンス(`lunash`)で作業します。

(1) SO(Security Officer )としてログインします。使用するコマンドは `hsm login`です。

```
# 実行例
[local_host] lunash:>hsm login

  Please enter the HSM Administrators' password:
  > *********


'hsm login' successful.


Command Result : 0 (Success)
[local_host] lunash:>
```

(2) `partition create` コマンドを使用して新規パーティション `hsminst2`を作成します。

```
# 実行コマンド
partition create -partition hsminst2
#-- 短縮して　"par c -par hsminst2" で実行できます。　

# 実行例
[local_host] lunash:>partition create -partition hsminst2


          Type 'proceed' to create the partition, or
          'quit' to quit now.
          > proceed				<< 'proceed' と入力します。
'partition create' successful.


Command Result : 0 (Success)
[local_host] lunash:>
```

(3) 作成したパーティションを確認します。
まず`hsm show`で見てみましょう。

```
# 実行コマンド 
hsm show

# 実行例
[local_host] lunash:>hsm show


   Appliance Details:
   ==================
   Software Version:                7.4.0-226

   HSM Details:
   ============
	(省略)
	
   Partitions created on HSM:
   ==============================
   Partition:        1431591540408, Name: db2aese
   Partition:        1431591540409, Name: hsminst2 << 新規作成した
                                                      パーティション
   Number of partitions allowed:        5
   Number of partitions created:        2

   FIPS 140-2 Operation:
   =====================
   The HSM is in FIPS 140-2 approved operation mode.
	(以降省略)
```

次に`partition show` コマンドで詳細な情報を確認しましょう。

```
# 実行コマンド
partition show -partition hsminst2
#-- 短縮して　"par s -par hsminst2" で実行できます。　

# 実行例
[local_host] lunash:>par s -par hsminst2



   Partition Name:                            hsminst2
   Partition SN:                              1431591540409
   Partition Label:
   Partition SO     is not initialized.
   Crypto Officer   is not initialized.
   Crypto User      is not initialized.
   Legacy Domain Has Been Set:                no
   Partition Storage Information (Bytes):     Total=409782, Used=0, Free=409782
   Partition Object Count:                    0


Command Result : 0 (Success)
[local_host] lunash:>
```

   



### 手順4 : Luna HSMクライアントがHSMパーティションにアクセスできるようにします。

参照文書 : [Enable the Client to Access a Partition](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/client_partition/client_partition.htm)

#### まずは、HSMアプライアンス(`lunash`)で作業します。

(1) `client assignPartition`コマンドを実行して　Luna HSMクライアントが作成したパーティションをアクセスできるよう登録します。

```
# 実行コマンド例　パーティションhsminst2を　クライアント192.168.20.12に割り当てる。
client assignPartition -partition hsminst2 -c 192.168.20.12

# 実行例
[local_host] lunash:>client a -pa hsminst2 -c 192.168.20.12


'client assignPartition' successful.


Command Result : 0 (Success)
[local_host] lunash:>
```

   

(2) NTLSがバインドされていることを確認します。

```
# 実行コマンド
NTLS SHOW

# 実行例
[local_host] lunash:>ntls show


NTLS is currently bound to IP Address: "0.0.0.0" (all)


Command Result : 0 (Success)
[local_host] lunash:>
```

(3) 新規作成したパーティション hsminst2についての詳細情報を取得します。

```
[local_host] lunash:>partition show -partition hsminst2



   Partition Name:                            hsminst2
   Partition SN:                              1431591540409 << 注目
   Partition Label:
   Partition SO     is not initialized.
   Crypto Officer   is not initialized.
   Crypto User      is not initialized.
   Legacy Domain Has Been Set:                no
   Partition Storage Information (Bytes):     Total=409782, Used=0, Free=409782
   Partition Object Count:                    0


Command Result : 0 (Success)
[local_host] lunash:>
```

ここで`Partition SN:`が `1431591540409`となっていることに注目ください。

#### Luna HSMクライアントの`lunacm`での確認作業です。

- 新規作成したパーティションが見えることを確認するために　Luna HSM Clientのコマンド`lunacm`を実行します.

```
[root@psm02:/usr/safenet/lunaclient/bin]# ./lunacm
lunacm (64-bit) v10.2.0-111. Copyright (c) 2020 SafeNet. All rights reserved.


        Available HSMs:

        Slot Id ->              0
        Label ->                db2aese
        Serial Number ->        1431591540408
        Model ->                LunaSA 7.4.0
        Firmware Version ->     7.3.3
        Configuration ->        Luna User Partition With SO (PW) Key Export With Cloning Mode
        Slot Description ->     Net Token Slot
        FM HW Status ->         Non-FM

        Slot Id ->              1
        Label ->
        Serial Number ->        1431591540409 << 注目
        Model ->                LunaSA 7.4.0
        Firmware Version ->     7.3.3
        Configuration ->        Luna User Partition With SO (PW) Key Export With Cloning Mode
        Slot Description ->     Net Token Slot
        FM HW Status ->         Non-FM


        Current Slot Id: 0


lunacm:>
```

上の出力では　使用可能なHSMのパーティションとして　`Slot Id`が0と1の2つが表示されています。 

ここで　Slot Id 1 でリストされているパーティションの`Serial Number`が`1431591540409`となっています。これは、 HSM アプライアンス上で`partition show -partition hsminst2`で確認した`Partition SN:`と同じです。これで、新規に作成したパーティションが クライアントから見えていることがわかります。



### 手順5 : パーティションを初期化します。

新規作成したパーティションのPartition SO,Crypto Officer,Crypto Userを初期化します。

(1) HSM アプライアンス(`lunash`)で、新規作成したパーティション hsminst2の詳細情報を取得します。

```
[local_host] lunash:>partition show -partition hsminst2



   Partition Name:                            hsminst2
   Partition SN:                              1431591540409
   Partition Label:
   Partition SO     is not initialized.				<< 要初期化
   Crypto Officer   is not initialized.				<< 要初期化
   Crypto User      is not initialized.				<< 要初期化
   Legacy Domain Has Been Set:                no
   Partition Storage Information (Bytes):     Total=409782, Used=0, Free=409782
   Partition Object Count:                    0


Command Result : 0 (Success)
[local_host] lunash:>
```

Partition SO,Crypto Officer,Crypto Userが初期化されていない状態(is not initialized.)であることがわかります。
   

(2) Luna HSM Clientでコマンド `lunacm`を起動します。

**重要** : `lunacm`起動後 `Current Slot Id:`が指しているスロットが初期化するパーティションであることを`Serial Number`で確認してください。ここでは初期化対象パーティションのSlot IDが`1`で`Current Slot Id: 0`となっています。このため   `slot set -s 1`を使用して`Current Slot Id:`を　1に変更しています。

```
[root@psm02:/usr/safenet/lunaclient/bin]# ./lunacm
lunacm (64-bit) v10.2.0-111. Copyright (c) 2020 SafeNet. All rights reserved.


        Available HSMs:

        Slot Id ->              0
		(省略)
		
        Slot Id ->              1	<< 初期化対象パーティションのSlot IDが1
        Label ->
        Serial Number ->        1431591540409　<< 初期化対象パーティションのシリアル
        Model ->                LunaSA 7.4.0
        Firmware Version ->     7.3.3
        Configuration ->        Luna User Partition With SO (PW) Key Export With Cloning Mode
        Slot Description ->     Net Token Slot
        FM HW Status ->         Non-FM


        Current Slot Id: 0			<<　現行のSlot IDが0になっている
                                        Slot IDを1へ変更する必要がある

lunacm:>slot set -s 1

        Current Slot Id:    1     (Luna User Slot 7.3.3 (PW) Key Export With Cloning Mode)

Command Result : No Error


lunacm:>
```

   

(3) `lunacm`内で　パーティションを初期化するために`partition init`を実行します。`partition init `のパラメータには次のようなものがあります。

   - `-label [Partition Label]`  	Luna HSM Clientが参照するパーティション名を付ける
   - ` -password [Security Officer password] ` 　SOのパスワードの指定
   - `-domain [Partition Domain Name]`　ドメイン名を指定

```
# 実行コマンド
partition init -label hsminst2 -password HSM4so! -domain hsm_isel
短縮して　"par init -l hsminst2 -p HSM4so! -d hsm_isel" で実行できます。　

# 実行例
lunacm:>par init -l hsminst2 -p HSM4so! -d hsm_isel

        You are about to initialize the partition.
        All contents of the partition will be destroyed.

        Are you sure you wish to continue?

        Type 'proceed' to continue, or 'quit' to quit now ->proceed
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<< 'proceed'と入力
Command Result : No Error


lunacm:>
```

HSM アプライアンス(`lunash`)でパーティションの詳細情報を取得し　Partition SOが初期化されたことを確認します。

```
[local_host] lunash:>par s -par hsminst2



   Partition Name:                            hsminst2
   Partition SN:                              1431591540409
   Partition Label:                           hsminst2
   Partition SO     PIN To Be Changed:        no	<< ここが設定できた	
   Partition SO     Zeroized:                 no	<< ここが設定できた
   Partition SO     Login Attempts Left:      10	<< ここが設定できた
   Crypto Officer   is not initialized.				<< 要初期化
   Crypto User      is not initialized.				<< 要初期化
   Legacy Domain Has Been Set:                no
   Partition Storage Information (Bytes):     Total=409782, Used=0, Free=409782
   Partition Object Count:                    0


Command Result : 0 (Success)
[local_host] lunash:>
```

   

(4) `lunacm`内で　次の手順でCrypto Officerを初期化します。

   1. Partition SOを使用してlogin (`role login -name Partition SO`)
   2. Crypto Officerを初期化 (`role init -name co`)
   3. Partition SOからlogout (`role logout`)
   4. Crypto Officerを使用してlogin (`role login -name co`)
   5. Crypto Officerのパスワードを変更する。(初回PWD変更は必須) `role changepw -name co`

<details><summary>Crypto Officer初期化実行例</summary><div>

```
# 実行コマンド
cd /usr/safenet/lunaclient/bin ; ./lunacm
#-- Current Slot Id を1に変更
slot set -s 1
#-- 1. Partition SOを使用してlogin
role login -name Partition SO
#-- 2. Crypto Officerを初期化　Crypto Officerを短縮してcoで指定可能
role init -name Crypto Officer
#-- 3. Partition SOからlogout
role logout
#-- 4. Crypto Officerを使用してlogin
role login -name co
#-- 5. Crypto Officerのパスワードを変更する。(初回PWD変更は必須)
role changepw -name co

# 実行例
lunacm:>role login -name Partition SO


        enter password: *********


Command Result : No Error


lunacm:>role init -name co


        enter new password: *********


        re-enter new password: *********


Command Result : No Error


lunacm:>role logout

Command Result : No Error


lunacm:>role login -name co


        enter password: *********


Command Result : No Error


lunacm:>role changepw -name co


        enter existing password: *********



        enter new password: *********


        re-enter new password: *********


Command Result : No Error


lunacm:>
```

</div></details>


(5) `lunacm`内で　次の手順でCrypto Userを初期化します。

   1. Crypto Officerを使用してlogin (`role login -name co`)
   2. Crypto Userを初期化 (`role init -name cu`)
   3. Crypto Officerからlogout (`role logout`)
   4. Crypto Userを使用してlogin (`role login -name cu`)
   5. Crypto Userのパスワードを変更する。(初回PWD変更は必須) `role changepw -name cu`

<details><summary>Crypto User初期化実行例</summary><div>

```
# 実行コマンド 
#-- 1. Crypto Officerを使用してlogin
role login -name co
#-- 2. Crypto Userを初期化
role init -name cu
#-- 3. Crypto Officerからlogout
role logout
#-- 4. Crypto Userを使用してlogin 
role login -name cu
#-- 5. Crypto Userのパスワードを変更する。(初回PWD変更は必須) 
role changepw -name cu

# 実行例
lunacm:>role login -name co


        enter password: *********


Command Result : No Error


lunacm:>role init -name cu


        enter new password: *********


        re-enter new password: *********


Command Result : No Error


lunacm:>role logout

Command Result : No Error


lunacm:>role login -name cu


        enter password: *********


Command Result : No Error


lunacm:>role changepw -name cu


        enter existing password: *********



        enter new password: *********


        re-enter new password: *********


Command Result : No Error


lunacm:>
```

</div></details>

   HSM アプライアンス(`lunash`)でパーティションの詳細情報を取得し　Crypto Officer,Crypto Userが初期化されたことを確認します。

```
[local_host] lunash:>par s -par hsminst2



   Partition Name:                            hsminst2
   Partition SN:                              1431591540409
   Partition Label:                           hsminst2
   Partition SO     PIN To Be Changed:        no
   Partition SO     Zeroized:                 no
   Partition SO     Login Attempts Left:      10
   Crypto Officer   PIN To Be Changed:        no	<< 初期化されている
   Crypto Officer   Locked Out:               no	<< 初期化されている
   Crypto Officer   Login Attempts Left:      10	<< 初期化されている
   Crypto User      PIN To Be Changed:        no	<< 初期化されている
   Crypto User      Locked Out:               no	<< 初期化されている
   Crypto User      Login Attempts Left:      10	<< 初期化されている
   Legacy Domain Has Been Set:                no	<< 初期化されている
   Partition Storage Information (Bytes):     Total=409782, Used=0, Free=409782
   Partition Object Count:                    0


Command Result : 0 (Success)
[local_host] lunash:>
```

(6) `lunacm`内で　`partition contents`を使用して　Crypto Officerがアクセスできるオブジェクトをリストします。初期化したばかりなので　オブジェクトは存在しません。

```
lunacm:>role login -name co


        enter password: *********


Command Result : No Error


lunacm:>partition contents

        The 'Crypto Officer' is currently logged in. Looking for objects
        accessible to the 'Crypto Officer'.

        No objects viewable to 'Crypto Officer' are currently stored in the partition.

Command Result : No Error


lunacm:>
```

### 手順6 : パーティションが参照できることを確認します。

`vtl verify` コマンドを実⾏して、アサインされたパーティションが参照できることを確認します。

```
[root@psm02:/usr/safenet/lunaclient/bin]# ./vtl verify
vtl (64-bit) v10.2.0-111. Copyright (c) 2020 SafeNet. All rights reserved.


The following Luna SA Slots/Partitions were found:

Slot    Serial #                Label
====    ================        =====
		(省略)
   1       1431591540409        hsminst2

[root@psm02:/usr/safenet/lunaclient/bin]#
```



## 検証環境情報

本手順書は次の環境で作成しました。

- LUNA NETWORK HSM A700

  - Software Version:        7.4.0-226
  - Firmware:              7.3.3

- Luna Client 環境

  - AIX V7.2　(oslevel –s : 7200-03-03-1914)

  - LunaClient_10.2.0-111_AIX610-000399-002_SW_Universal_Client_10.2_AIX_RevA.tar 

## 参考文書
### Luna HSM 

- [Product Documentation](https://thalesdocs.com/gphsm/Content/luna/network/luna_network_releases.htm)
  - [Create a Network Trust Link - Multi-step setup](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/client_appliance/multi-step_ntl_setup.htm)

  - [Creating a Password-Authenticated Partition](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/partition_create/hsm-so_action_to_config_appliance_pw-ppso_partition_1a.htm)

  - [Enable the Client to Access a Partition](https://thalesdocs.com/gphsm/luna/7.5/docs/network/Content/configuration/client_partition/client_partition.htm)