鍵パーツ・ファイルを使用したマスター鍵のローテート
業界標準や暗号のベスト・プラクティスに合わせるには、IBM Cloud® Hyper Protect Crypto Services インスタンスのマスター鍵を定期的にローテートする必要があります。 ローカル・ワークステーション上のマスター鍵パーツ・ファイルを使用してマスター鍵をローテートするには、以下の手順を実行します。
マスター鍵がローテートされている場合でも、一部の KMS 鍵アクション (鍵のリスト、鍵メタデータの取得、鍵の削除など) を実行できますが、鍵を作成したり鍵をローテートしたりすることはできません。 マスター鍵のローテーション中に PKCS #11 API も GREP11 API も呼び出すことはできません。
マスター・キーをローテーションすると、新規マスター・キーの値を使用して、キー・ストレージのキーが再暗号化されます。キー・ストレージのキーが再暗号化されたら、新規マスター・キー・レジスターの値は、現行マスター・キー・レジスターにプロモーションされます。 マスター鍵のローテートを開始する前に、以下のステップを実行する必要があります。
- マスター鍵がどのようにローテートされるか 標準プランの場合 または Unified Key Orchestrator プランの を理解します。
- TKE CLI 操作を実行するには、 管理者 のサービス・アクセス役割または 暗号装置管理者 役割を割り当てます。 アクセス管理について詳しくは、 標準プランの場合はユーザー・アクセス権限の管理 、 Unified Key Orchestrator プランの場合は を参照してください。
- サービス・インスタンス内のすべての暗号装置を同じように構成します。
メモリー内の鍵ストア内の鍵オブジェクトは、マスター鍵のローテーション後に自動的にローテートされません。 サービス・インスタンスで PKCS #11 鍵ストアが有効になっている場合は、マスター鍵のローテーションの完了後に、すべてのアクティブな PKCS #11 アプリケーションを再始動して、メモリー内の鍵ストアをクリアする必要があります。 詳しくは、 PKCS #11 実装コンポーネント を参照してください。
開始前に
開始する前に、必ず以下のステップを実行します。
-
以下のコマンドを実行して、現行のマスター鍵レジスターが
Valid状態にあり、 現行のマスター鍵がロードされている こと、新規マスター鍵レジスターが空であること、およびサービス・インスタンスの暗号装置がインプリント・モードになっていないことを確認します。ibmcloud tke cryptounit-compare -
新規マスター鍵パーツをローテーション用に準備しておきます。 新規マスター鍵パーツを作成する方法について詳しくは、使用する一連のマスター鍵パーツの作成を参照してください。
鍵パーツ・ファイルを使用したマスター鍵のローテート
ワークステーション上の鍵パーツ・ファイルを使用してマスター鍵をローテートするには、以下の手順を実行します。
-
以下のコマンドを使用して、新規マスター鍵パーツを新規マスター鍵レジスターにロードします。
ibmcloud tke cryptounit-mk-loadマスター鍵レジスターにロードするには、使用するすべてのマスター鍵パーツ・ファイルと署名鍵ファイルが、共通のワークステーションに存在する必要があります。 ファイルが別々のワークステーションで作成された場合は、衝突を避けるためにファイル名にそれぞれ別の名前を付けてください。 マスター鍵パーツ・ファイルの所有者と署名鍵ファイルの所有者は、マスター鍵レジスターが共通のワークステーションにロードされるときにファイル・パスワードを入力する必要があります。
ワークステーションで検出されたマスター鍵パーツのリストが表示されます。
プロンプトが出されたら、新規マスター鍵レジスターにロードするマスター鍵パーツ、使用する署名鍵ファイルのパスワード、選択した各鍵パーツ・ファイルのパスワードを順次入力します。
新規マスター鍵は、新規マスター鍵レジスターで
Full uncommitted状態になります。新規マスター鍵をロードするには、少なくとも 2 つのマスター鍵パーツを入力する必要があります。 現在のマスター鍵に使用されていないマスター鍵パーツが 1 つ以上あることを確認してください。 そうでない場合、同じマスター鍵が生成されるので、新規マスター鍵レジスターにロードすることができません。
-
次のコマンドを使用して、新しいマスター鍵をコミットします。
ibmcloud tke cryptounit-mk-commitプロンプトが出されたら、使用する署名鍵ファイルのパスワードを入力します。 クォーラム認証を実施するには、完全な署名セットが必要です。
新規マスター鍵は、新規マスター鍵レジスターで
Full committed状態になります。 -
GREP11 の API で現行マスター鍵を使用して暗号化した暗号鍵のうち、Hyper Protect Crypto Services の鍵ストアに保管していないものがある場合は、RewrapKeyBlob GREP11 API を呼び出して、新規マスター鍵で鍵を再暗号化します。
マスター鍵をローテートする前に、必ずこの手順を実行してください。 そうしないと、現行マスター鍵で暗号化された鍵を、再暗号化して使用することができません。
GREP11 の API の概要については、EP11 over gRPC の概要を参照してください。 また、 Golang および JavaScript で作成されたコード例を GREP11 API 使用法で見つけることもできます。
-
以下のステップを実行して、現在のマスター鍵を新しいマスター鍵でローテートし、管理対象の鍵を再暗号化します。
-
次のコマンドを実行して、マスター鍵ローテーションを開始します。
ibmcloud tke cryptounit-mk-rotate -
プロンプトが出されたら、
yと入力して、事前検査に進みます。以下の設定が検査されます。
- サービス・インスタンスが 1 つだけ選択され、そのサービス・インスタンスのすべての暗号装置が選択されていること。
- 選択されたすべての暗号装置がインプリント・モードを終了していて、最低必要署名数が同じであること。
- 選択された管理者が、暗号装置にインストールされている管理者と一致していること。
- すべての暗号装置の新規鍵レジスターと現行鍵レジスターが正しく構成されていること。
-
マスター鍵をローテートして新規マスター鍵をアクティブにするために、使用する署名鍵ファイルのパスワードをプロンプトに入力します。
マスター鍵のローテーションが完了すると、成功メッセージが表示されます。 3000 個の鍵を再暗号化するには、約 60 秒かかる場合があります。
新規マスター鍵が、現行マスター鍵レジスター内で
Validな状態になります。 鍵の状態の変更方法について詳しくは、 標準プランのマスター鍵のローテーション または Unified Key Orchestrator プランのマスター鍵のローテーション を確認してください。 -
これで、暗号鍵が新しいマスター鍵によって保護されます。
マスター鍵のローテーション中にエラーが発生した場合は、鍵パーツ・ファイルを使用してマスター鍵をローテーションできないのはなぜですか? を参照してください。
次の作業
- プログラムで鍵を管理する方法について詳しくは、 Hyper Protect Crypto Services 鍵管理サービスの API リファレンス資料 または Unified Key Orchestrator API リファレンス資料を確認してください。
- Hyper Protect Crypto Servicesのクラウド HSM 機能を使用したデータの暗号化について詳しくは、 PKCS #11 API リファレンス および GREP11 API リファレンス資料 を確認してください。