この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
CloudHSMの料金は結構いい値段
こんにちは、のんピ(@non____97)です。
皆さんはCloudHSMの料金はいい値段だなと思ったことはありますか? 私はあります。
CloudHSMはHSMの稼働時間によって課金されます。東京リージョンの場合、1.81USD/hです。最新の料金はAWS公式の料金表をご覧ください。
加えて、HSMを一時停止すると言うこともできません。
そのため、検証が日を跨いでしまった場合などはは10USDかかってしまうこともあります。
これは困る
ところで、CloudHSMはバックアップを作成できます。
また、2022/7/19時点ではバックアップに料金はかからないようです。
...
......
はい。検証が日を跨いでしまう場合は、バックアップを作成してHSMを削除し、再開時にリストアすれば良いのです。
ということで試してみました。
CloudHSMクラスターのリストア
早速、CloudHSMクラスターのリストアを行います。
以下の検証でCloudHSMクラスターを作成して、検証後に削除しました。
HSMを削除すると、バックアップが作成されます。
バックアップを作成するようサービスに指示することはできませんが、特定の操作を行うことで強制的にバックアップを作成させることは可能です。以下のいずれかのアクションを実行すると、サービスがバックアップを作成します。
- クラスターをアクティベートするには
- HSM をアクティブクラスターに追加します。
- アクティブクラスターから HSM を削除
CloudHSMのコンソールを確認すると、確かにバックアップがありました。バックアップを選択して、バックアップからのクラスターの作成
をクリックします。
VPCとサブネットの設定をして続行
をクリックします。
バックアップの保持期間を入力して続行
をクリックします。
タグは特に変更せずに確認
をクリックします。
設定内容を確認してクラスターの作成
をクリックします。
4分ほど待つと、CloudHSMクラスターの作成が完了しました。状態がActive
になっているのでCA証明書のアップロードやPRECOのパスワード初期化などの操作は不要そうですね。HSM自体はまだ空なので、HSMの作成
をクリックします。
HSMを作成するサブネットを選択してCreate
をクリックします。
8分ほどでHSMの作成が完了しました。こちらも状態がActive
になっています。
HSMへの接続
リストアしたHSMに接続します。
HSMのIPアドレスがリストア前後で変わっているので、再設定します。
$ sudo /opt/cloudhsm/bin/configure -a 172.31.43.109
Updating server config in /opt/cloudhsm/etc/cloudhsm_client.cfg
Updating server config in /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
IPアドレスの更新をしないと、以下のように接続することができません。
/opt/cloudhsm/bin/key_mgmt_util
Failed to connect socket
get_peer_version() returned 0x40000040 : LIQUIDSECURITY: Daemon socket connection error
Failed to connect socket
Cfm3Initialize() returned 0x40000040 : LIQUIDSECURITY: Daemon socket connection error
Cfm3Initialize() returned app id : ffffffff
Failed to connect socket
Could not retrieve/create Thread Info
Cfm3CloseSession returned: 0x40000040
LIQUIDSECURITY: Daemon socket connection error
IPアドレス更新後、CMUでHSMに接続します。
$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
Ignoring E2E enable flag in the configuration file
Connecting to the server(s), it may take time
depending on the server(s) load, please wait...
Connecting to server '172.31.43.109': hostname '172.31.43.109', port 2225...
Connected to server '172.31.43.109': hostname '172.31.43.109', port 2225.
E2E enabled on server 0(172.31.43.109)
aws-cloudhsm>
接続後、ユーザー一覧を表示します。
aws-cloudhsm>listUser
Users on server 0(172.31.43.109):
Number of users found:3
User Id User Type User Name MofnPubKey LoginFailureCnt 2FA
1 CO admin NO 0 NO
2 AU app_user NO 0 NO
3 CU crypto_user NO 0 NO
aws-cloudhsm>quit
disconnecting from servers, please wait...
元々のHSMで追加したcrypto_user
と言うユーザーがいることが確認できました。
KMUでHSM上の鍵一覧も表示してみます。
# KMUのサービスの起動
# IPアドレスを更新する前に起動していた場合は、restart で再起動
$ sudo service cloudhsm-client start
Redirecting to /bin/systemctl start cloudhsm-client.service
# KMUで接続
sh-4.2$ /opt/cloudhsm/bin/key_mgmt_util
Cfm3Initialize() returned app id : 01000000
session_handle 1000000
Current FIPS mode is: 00000002
Help Commands Available:
Syntax: <command> -h
Command Description
======= ===========
exit Exits this application
help Displays this information
Configuration and Admin Commands
getHSMInfo Gets the HSM Information
getPartitionInfo Gets the Partition Information
listUsers Lists all users of a partition
.
.
(中略)
.
.
IsValidKeyHandlefile Checks if private key file has
an HSM key handle or a real key
listAttributes List all attributes for getAttributes
listECCCurveIds List HSM supported ECC CurveIds
# 事前に作成したCUでログイン
Command: loginHSM -u CU -s crypto_user -p cYoav.j8ZG87D!NmFvU.sjVATb8RwE4r
Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS
# 鍵一覧を表示
Command: findKey
Total number of keys present: 3
Number of matching keys from start index 0::2
Handles of matching keys:
6, 7, 9
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS
Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
# HSMから切断
Command: logoutHSM
Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS
Command: exit
HSM上で生成したキーペアや、インポートした秘密鍵が確認できました。
検証が日を跨ぐのであれば一旦HSMを削除してリストアするのもアリ
CloudHSMクラスターをバックアップからリストアしました。
新規にHSMを作成するより断然早く、リストア開始15分程度でHSMに接続できました。このぐらいの時間と手間なのであれば、検証の再開まで時間が開く場合は一旦HSMを削除して、検証再開時にリストアするというのもアリだなと思いました。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!