ルート鍵のインポート

IBM Cloud® Hyper Protect Crypto Services を使用して既存のルート鍵を保護することも、 Hyper Protect Crypto Services 鍵管理サービス API を使用してプログラムで保護することもできます。

ルート鍵は、クラウド内の暗号化データのセキュリティーを保護するために使用される対称鍵ラップ鍵です。 ルート鍵のインポートについて詳しくは、クラウドへの独自の暗号鍵の取り込みを参照してください。

鍵素材の作成と暗号化のオプションの検討によって、鍵のインポートについて事前に計画を立ててください。 セキュリティーを強化するため、鍵素材をクラウドに取り込む前にインポート・トークンを使用して暗号化することによって、鍵素材のセキュアなインポートを可能にすることができます。

UI を使用したルート鍵のインポート

サービスのインスタンスを作成したら、Hyper Protect Crypto Services GUI で以下の手順を実行して既存のルート鍵を追加します。

  1. UI にログインします

  2. 「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。

  3. IBM Cloud リソース・リストで、Hyper Protect Crypto Services のプロビジョン済みインスタンスを選択します。

  4. 鍵をインポートするには、サイド・メニューの**「KMS 鍵 (KMS keys)」**タブを選択します。

  5. **「鍵」テーブルで「鍵の追加」をクリックし、「鍵のインポート」**を選択します。

    キーの詳細を以下のように指定します。

    表 1. ルート鍵をインポートするための設定について説明します。
    設定 説明
    キー・タイプ Hyper Protect Crypto Services で管理する鍵のタイプ。 キー・タイプのリストから、**「ルート・キー」**を選択します。
    キーの名前 鍵を簡単に識別するための、人間が理解できる固有の別名。 プライバシーを保護するため、鍵の名前には、個人の名前や場所などの個人情報 (PII) を含めないように注意してください。
    キー・エイリアス (オプション) 鍵を認識しやすくするために鍵に割り当てる (人間が理解できる) 1 つ以上の固有の別名。 別名の長さは 2 文字から 90 文字です。 最大 5 つの別名を (コンマ区切りにして) 鍵に設定することができます。

    注: 各別名は、大/小文字の区別がある英数字でなければならず、スペースやダッシュ (-) や下線 (_) 以外の特殊文字を含めることはできません。 別名は、バージョン 4 の UUID であってはならず、 Hyper Protect Crypto Services の予約名 ( allowed_ipkeykeysmetadatapolicypoliciesregistrationregistrationsringringsrotatewrapunwraprewrapversionversions) であってはなりません。

    鍵リング ID 既存の鍵リングのリストから鍵リングを選択します。 鍵リングを割り当てない場合は、default の鍵リングに鍵が追加されます。 鍵リングについて詳しくは、鍵リングの管理を参照してください。
    キー素材

    サービスで保管および管理する、base64 エンコードの鍵素材 (既存の鍵ラップ鍵など)。 詳細については、キー素材の Base64 エンコードを参照してください。 鍵素材が以下の要件を満たしていることを確認してください。

    • 鍵は、128 ビット、192 ビット、または 256 ビットに対応する、16 バイト、24 バイト、または 32 バイトの長さでなければなりません。
    • 鍵は base64 エンコードでなければなりません。
    有効期限の日付 (オプション) 鍵の有効期限が切れる日時を設定します。 有効期限が切れると、鍵は「非アクティブ化」状態に移行します。 鍵の状態について詳しくは、暗号鍵のライフサイクルのモニターを参照してください。
    説明 (オプション) 鍵の詳しい説明を追加します。 長さは 2 から 240 文字でなければなりません。
  6. 鍵の詳細の記入が完了したら、**「鍵のインポート (Import key)」**をクリックして確認します。

API を使用したルート鍵のインポート

以下のエンドポイントへの POST 呼び出しを行うことによって、対称鍵を Hyper Protect Crypto Services にインポートします。

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys
  1. サービス内で鍵の処理を行うために、サービス資格情報および認証資格情報を取得します

  2. 以下の cURL コマンドを使用して、 Hyper Protect Crypto Services 鍵管理サービス API を呼び出します。

    curl -X POST \
      https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'content-type: application/vnd.ibm.kms.key+json' \
      -d '{
     "metadata": {
       "collectionType": "application/vnd.ibm.kms.key+json",
       "collectionTotal": 1
     },
     "resources": [
       {
       "type": "application/vnd.ibm.kms.key+json",
       "name": "<key_alias>",
       "description": "<key_description>",
       "expirationDate": "<YYYY-MM-DDTHH:MM:SS.SSZ>",
       "payload": "<key_material>",
       "extractable": <key_type>
       }
     ]
    }'
    

    次の表に従って、例の要求内の変数を置き換えてください。

    表 2. API を使用してルート鍵を追加するために必要な変数について説明します。
    変数 説明
    region 必須。 Hyper Protect Crypto Services インスタンスが配置されている地理的領域を表す地域の省略形 ( us-southau-syd など)。 詳細については、リージョナル・サービス・エンドポイントを参照してください。
    port 必須。 API エンドポイントのポート番号。
    IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを cURL 要求に組み込みます。 詳細については、アクセス・トークンのリトリーブを参照してください。
    instance_ID 必須。 Hyper Protect Crypto Services インスタンスに割り当てられた固有 ID。 詳細については、インスタンス ID のリトリーブを参照してください。
    correlation_ID トランザクションを追跡し、相互に関連付けるために使用される固有 ID。
    key_alias 必須。 鍵を簡単に識別するための、人間が理解できる固有の名前。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
    key_description 鍵の詳しい説明。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
    YYYY-MM-DD

    HH:MM:SS.SS

    システム内の鍵の有効期限が切れる日時 (RFC 3339 形式)。 expirationDate 属性を省略すると、キーの有効期限は切れません。
    key_material

    サービスで保管および管理する、base64 エンコードの鍵素材 (既存の鍵ラップ鍵など)。 詳細については、キー素材の Base64 エンコードを参照してください。 鍵素材が以下の要件を満たしていることを確認してください。

    • 鍵は、128 ビット、192 ビット、または 256 ビットに対応する、16 バイト、24 バイト、または 32 バイトの長さでなければなりません。
    • 鍵は base64 エンコードでなければなりません。
    key_type 鍵の素材をサービスの外に出すことができるかどうかを決定するブール値。 extractable 属性を false に設定すると、サービスは、 wrap または unwrap 操作に使用できるルート鍵として鍵を指定します。

    個人データの機密性を保護するため、サービスに鍵を追加するときに、個人の名前や場所などの個人情報 (PII) を入力しないようにしてください。 PII のその他の例については、 NIST Special Publication 800-122のセクション 2.2 を参照してください。

    成功した POST api/v2/keys 応答は、鍵の ID 値を他のメタデータと共に返します。 この ID はキーに割り当てられた固有 ID であり、今後の Hyper Protect Crypto Services キー管理サービス API の呼び出しに使用されます。

  3. オプション: 次の呼び出しを実行して Hyper Protect Crypto Services サービス・インスタンス内の鍵を表示し、鍵が追加されたことを確認します。

    curl -X GET \
    https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
    -H 'accept: application/vnd.ibm.collection+json' \
    -H 'authorization: Bearer <IAM_token>' \
    -H 'bluemix-instance: <instance_ID>'
    

CLI を使用したルート鍵のインポート

Hyper Protect Crypto Services に統合されている Key Protect CLI を使用してルート・キーをインポートするには、以下の手順を実行します。

  1. Key Protect CLI をセットアップします

  2. 次のコマンドを使用してルート鍵をインポートします。

    ibmcloud kp key create
    

    このコマンドの他のパラメーターについては、Key Protect CLI リファレンスを参照してください。

鍵素材の Base64 でのエンコード

既存のルート鍵をインポートするときは、サービスで保管および管理する暗号化された鍵素材を含める必要があります。

OpenSSL を使用した既存の鍵素材のエンコード

  1. OpenSSLをダウンロードしてインストールします。

  2. 次のコマンドを実行して、Base64 エンコードの鍵素材ストリングをデコードします。

    $ openssl base64 -in <infile> -out <outfile>
    

    次の表に従って、例の要求内の変数を置き換えてください。

    表 3. base64 で鍵素材をエンコードするために必要な変数について説明します。
    変数 説明
    infile キー素材文字列が配置されているファイルの名前。 キーの長さは必ず、128 ビット、192 ビット、256 ビットにそれぞれ対応する 16 バイト、24 バイト、32 バイトにしてください。
    outfile コマンドが実行されたときに base64-encoded キー素材が作成されるファイルの名前。

    base64 の素材をファイルではなくコマンド・ラインに直接出力する場合は、コマンド openssl enc -base6<<< '<key_material_string>' を実行します。ここで、key_material_string は、インポートされたキーのキー素材入力を指します。

OpenSSL を使用した新しい鍵素材の作成とエンコード

  1. OpenSSLをダウンロードしてインストールします。

  2. 次のコマンドを実行して、Base64 エンコードの鍵素材ストリングをデコードします。

    $ openssl rand <byte_length> -base64
    

    要求例の byte_length 変数を、キーの長さ (バイト単位で測定) に置き換えます。 許容されるバイト長は、128 ビット、192 ビット、256 ビットにそれぞれ対応する 16 バイト、24 バイト、32 バイトです。

次の作業