このトピックでは、新しい鍵バージョンとして Cloud Key Management Service に鍵をインポートするコンセプトについて説明します。詳しい手順については、鍵バージョンのインポートをご覧ください。
はじめに
オンプレミスまたは外部鍵マネージャーで作成した既存の暗号鍵を利用している可能性があります。アプリケーションを Google Cloud に移行する場合、または既存の Google Cloud アプリケーションに暗号サポートを追加する場合は、関連する鍵を Cloud KMS にインポートできます。
- Cloud KMS 内の Cloud HSM 鍵またはソフトウェア鍵にインポートできます。
- 鍵マテリアルは転送中に保護をするためにラッピングされます。Google Cloud CLI を使用して鍵を自動的にラップすることも、鍵を手動でラップすることもできます。
- Google Cloud は、インポート ジョブのスコープ内でのみラッピング鍵にアクセスできます。Cloud HSM 鍵の場合、ラッピング鍵は Cloud HSM の外部に存在しません。
このトピックでは、鍵のインポートに関する制限事項と要件について詳細に説明し、鍵のインポートの仕組みについて概要を説明します。
制限事項と要件
このセクションでは、鍵を Cloud KMS または Cloud HSM 鍵にインポートできることを確認します。
サポートされている鍵の形式
暗号化の対称鍵は 16 バイト(未加工の対称暗号化の場合のみ)または 32 バイトのバイナリデータである必要があり、エンコードはできません。鍵が 16 進数または Base-64 でエンコードされている場合、インポートを試みる前にデコードする必要があります。
署名用の対称鍵(MAC 鍵)は、使用する暗号ハッシュ関数の出力の長さと等しくする必要があり(HMAC-SHA256 鍵の長さは 32 バイトでなければなりません)、エンコードする必要はありません。鍵が 16 進数または Base-64 でエンコードされている場合、インポートを試みる前にデコードする必要があります。
暗号化または署名用の非対称鍵は、PKCS #8 形式であり、DER エンコードされている必要があります。PCKS #8 形式は、RFC 5208 で定義されています。DER エンコードは、国際電気通信連合 X.680で定義されています。非対称鍵では、Cloud KMS でサポートされている長さとアルゴリズムの組み合わせのいずれかを使用する必要があります。
鍵の長さなど、鍵の一部の要素は鍵の作成後に変更できません。この場合、鍵を Cloud KMS にインポートすることはできません。
インポート用に鍵を確認して再フォーマットするには、インポート用の鍵のフォーマットをご覧ください。
サポートされる保護レベル
鍵の保護レベルを SOFTWARE
または HSM
に設定することで、Cloud KMS 鍵または Cloud HSM 鍵に鍵をインポートできます。Cloud HSM 鍵では追加の費用が発生します。Cloud External Key Manager 鍵(保護レベルが EXTERNAL
の鍵)にインポートすることはできません。
サポートされるラッピング鍵のサイズ
インポート ジョブの作成時に、インポート ジョブのインポート メソッドを構成することで、Google に転送中の鍵を保護するために使用するラッピング鍵のサイズを管理できます。ラッピング鍵のデフォルトのサイズは 3072 です。特定の要件がある場合は、代わりに 4096 ビットの鍵を使用するようにインポート ジョブを構成できます。
鍵のラッピングに使用されるアルゴリズムや、インポート ジョブの構成を確認できます。
鍵のインポートの仕組み
このセクションでは、鍵をインポートした場合の動作について説明します。鍵の自動ラッピングを使用するか手動でラップするかによって、フローの一部が異なります。自動ラッピングを使用することをおすすめします。具体的な手順については、鍵バージョンをインポートするをご覧ください。インポートする前に鍵を手動でラッピングする方法については、Linux で OpenSSL を使用して鍵をラップするをご覧ください。
次の図は、自動鍵ラッピングを使用した鍵インポート プロセスを示しています。図で示されるフェーズは、このセクションで説明されています。
鍵をインポートする準備ができました。
まず、最終的にインポート ジョブとインポートした鍵マテリアルを含むターゲット キーリングを作成します。この時点で、ターゲットキーに鍵バージョンは含まれていません。
次に、インポート ジョブを作成します。インポート ジョブは、インポートした鍵マテリアルのターゲット鍵リングと鍵を定義します。インポート ジョブでは、インポート メソッドも定義します。インポート メソッドはインポート リクエスト中に鍵マテリアルを保護するラッピング鍵の作成に使用されるアルゴリズムです。
- 公開鍵は、クライアントにインポートされる鍵をラッピングするために使用されます。
- 秘密鍵は Google Cloud 内に保存され、Google Cloud プロジェクトにアクセスした後に鍵のラッピングを解除するために使用されます。
このように分離すると、インポート ジョブの範囲外で鍵マテリアルのラッピングを解除できなくなります。
鍵は Google に送信する前に暗号でラッピングする必要があります。ほとんどのユーザーは、次のステップで説明するように、gcloud CLI を使用して、鍵を自動的にラッピング、送信、インポートします。鍵を手動でラッピングするコンプライアンス要件や規制要件がある場合は、現時点では鍵の手動ラッピングは可能です。ローカル システムで鍵を手動でラッピングするには、次の操作を実施します。
- OpenSSL を構成します。
- インポート ジョブごとにインポート ジョブに関連するラッピング鍵をダウンロードします。
- 鍵ごとに、複数の環境変数を設定し、鍵をラッピングします。
インポート ジョブが期限切れになるまで、最大 3 日間、インポート リクエストを使用して 1 つ以上の鍵をインポートできます。次のインポート リクエスト中。
- 鍵が手動でラッピングされなかった場合、Google Cloud CLI によってインポート ジョブの公開鍵が Google Cloud からローカル システムにダウンロードされ、その公開鍵とクライアントに関連付けられた秘密鍵を使用して、ローカル鍵マテリアルがラッピングされます。
- ラッピングされた鍵マテリアルは、Google Cloud プロジェクトに送信されます。
- 鍵マテリアルは、インポート ジョブの秘密鍵を使用してラッピング解除され、ターゲット鍵リング上のターゲット鍵の新しいバージョンとして挿入されます。 これはアトミック オペレーションです。
- 対称鍵の場合、インポートした鍵バージョンをメインの鍵バージョンに設定します。
インポート リクエストが正常に完了したら、インポートした鍵バージョンを使用して Google Cloud 内のデータを保護できます。