はじめに
Fortanix社の HSM ソリューション、Fortanix Data Security Manager (DSM) には、HSM の機能拡張用に「プラグイン」という追加のアプリケーションを実装するための仕組みがあります。
このプラグインにより、独自のアプリケーションを DSM 内部の機密性が高い、耐タンパ領域で実行することが可能であり、以下のような追加機能を実装することができます。
- Fortanix DSM の鍵に独自の複雑なアクセス制御ポリシーを課す
- Fortanix DSM の鍵を使用する前に複数メンバーの承認を要求する
- Fortanix DSM のRSA 鍵が特定の属性を持つ証明書のみに署名できるようにする
- Fortanix DSM の鍵は、特定の CA によって署名された証明書でのみラップできることを要求する
- 外部アプリに公開するために、カスタム監査ログを含む安全でより高度な暗号化操作を実装
この記事ではプラグインの開発手順と開発した機能を利用する方法について説明しています。
なお、プラグインのプログラミング言語としてサポートされている言語は Lua のみとなりますのであらかじめご了承ください。
実装方法
本記事は以下のバージョンで確認しています。
Version: 4.14.2166
- DSM SaaS にアクセス
DSM SaaSにアクセスして利用するリージョンを選択してログインします。
- プラグインの新規作成
左メニューより Plugins を選択し、「+ NEW PLUGIN」を選択します。
すでに用意されているプラグインを使用するか、新規に作成もしくはインポートするか選択する画面に遷移します。今回は新規に作成するので CREATE/IMPORT A NEW PLUGIN を選択します。
続く画面でプラグイン名を記入し、プラグインを紐づけるグループを選択します。
- プラグインにコードを実装
続いてプラグインの中身のコードを記載する画面になります。処理を以下のように記載したら CREATE 押下するとプラグインの作成が完了となります。この例では引数にとった name を入力として、hello を付与して返す簡単なコードとなっています。
function run(input)
if type(input) ~= 'table' or type(input.name) ~= 'string' then
return nil, 'invalid input'
end
return {
greeting = "hello " .. input.name
}
endプラグイン作成完了時に表示されるUUIDは、後で必要になるのでメモしておきます。
- APP(アプリケーション)の作成
APPは、Fortanix DSM 内で動作するデーモン(サービス)で、API キーやクライアント証明書を使用した認証を行うコンポーネントです。Fortanix DSM 内の鍵やシークレットにアクセスする際には必ず必要になりますので、ここでもプラグインを紐づけたグループと同じグループ内で認証用の App を作成します。作成後に表示される API Key も次のステップで必要になるのでメモしておきます。
- 作成したプラグインの動作を確認
クライアントからプラグインを呼び出すコールを実行します。
例) プラグインのUUID:AAAAAA、App の API KEY:BBBBBB の場合
$curl https://apac.smartkey.io/sys/v1/plugins/AAAAAA -H 'Authorization: Basic BBBBBB' -d '{"name":"SUZUKI"}'
{"greeting":"hello SUZUKI"}上記は1行目が発行したAPIコール、2行目が返ってきた結果となり、作成したプラグインの機能が Web API で簡単に利用することができます。
おわりに
以上が Fortanix 社の プラグイン開発方法になります。簡単な手順で機能を追加でき、Web API で利用できる、利便性が高い仕様となっています。
また、Fortanix 社がすでに開発済みのプラグイン・ライブラリもあるので、これらの内容に興味がある場合はお問い合わせください。
https://support.fortanix.com/hc/en-us/articles/360041950371-User-s-Guide-Plugin-Library
- DUKPT
- X.509 CA
- X.509 TBS CA
- JWS+JWE Encrypt/Decrypt
- AWS BYOK
- Azure BYOK
- SAP Data Custodian BYOK
- Tendermint One Time Signer
参考
本記事は以下の Fortanix 社の記事を参考にマクニカで検証してまとめた内容となっています。内容に相違やご不明点がある場合はお問い合わせください。
https://support.fortanix.com/hc/en-us/articles/360015941372-Plugins-Getting-Started