ルート鍵のインポート
IBM® Key Protect for IBM Cloud® では、既存のルート鍵をインポートして保護および管理することができます。
ルート鍵は、クラウド内の暗号化データのセキュリティーを保護するために使用される対称鍵ラップ鍵です。 Key Protect へのルート鍵のインポートについて詳しくは、クラウドへの独自の暗号鍵の取り込みを参照してください。
鍵素材の作成と暗号化のオプションの検討によって、鍵のインポートについて事前に計画を立ててください。 セキュリティーを強化するため、鍵素材をクラウドに取り込む前にインポート・トークンを使用して暗号化することによって、鍵素材のセキュアなインポートを可能にすることができます。
コンソールを使用したルート鍵のインポート
サービスのインスタンスを作成した後、以下の手順を実行して、IBM Cloud コンソールで鍵をインポートします。
Key Protect インスタンスの二重許可設定 を有効にする場合、 サービスに追加するどの鍵についても、 鍵の削除には 2 人のユーザーからの許可が必要となることに 留意してください。
-
「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。
-
IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。
-
キーをインポートするには、「 追加 」をクリックし、「 キーのインポート 」ウィンドウを選択します。
キーの詳細を以下のように指定します。
| 設定 | 説明 |
|---|---|
| キー・タイプ | Key Protect で管理する鍵のタイプ。 **「ルート鍵」**ボタンを選択します。 |
| 名前 | 鍵を簡単に識別するための、人間が理解できる別名。 2 文字以上 90 文字以下の長さにする必要があります。 プライバシーを保護するため、鍵の名前には、個人の名前や場所などの個人情報 (PII) を含めないように注意してください。 鍵の名前は固有でなくてもかまいません。 |
| キー素材 | サービスで保管および管理する、base64 エンコードの鍵素材 |
(既存の鍵ラップ鍵など)。 詳しくは、[鍵素材の Base64 でのエンコード](#how-to-encode-root-key-material)を確認してください。 鍵素材が 16 バイト、24 バイト、または 32 バイトの長さであり、128 ビット、192 ビット、または 256 ビットの長さに相当することを確認してください。 鍵はまた base64 でエンコードされている必要があります。 |
| キーの説明 | オプション。 説明は、別名またはその名前を使用することができない方法で、キーに関する情報 (例えば、その目的を説明する句) を追加するための便利な方法です。 この説明は、2 文字以上 240 文字以下でなければならず、後で変更することはできません。 プライバシー保護のため、キーの説明文には氏名や所在地などの個人情報を使用しないでください。 | | キー・エイリアス | オプション。 鍵の別名は、表示名の制限を超える鍵の説明を入力して、鍵の識別やグループ化を可能にするものです。
鍵には最大 5 つの別名を指定できます。 | | 鍵リング | オプション。 鍵リングとは、鍵をグループに分けて、各グループを必要に応じて独立して管理できるようにするものです。 どの鍵も 1 つの鍵リングに含まれていなければなりません。 鍵リングを選択しない場合、鍵は default 鍵リングに入れられます。
作成している鍵を鍵リングに配置するには、その鍵リングに対して_マネージャー_の役割を持っている必要があることに注意してください。 役割について詳しくは、ユーザーのアクセス権限の管理を参照してください。 |
キーの詳細の入力が完了したら、「 追加 」をクリックして確定してください。
特定のキーリングの_管理者_であれば、「 キーリング 」パネルから直接キーを追加することができます。 キーリングのアクションメニュー(⋯)から、「 新しいキーを追加 」をクリックします。 「 キー 」ページで「 追加 」をクリックしたときと同じパネルが開きますが、「 キーリング 」フィールドには、選択したキーリング名が事前に入力されています。
アカウント環境間でルート・キーを一貫してインポートおよび管理する必要がある場合、 Key Protect Key モジュールを使用してこれを自動化できます。 Key Protect インスタンスとキーホルダーもプロビジョニングする完全なセットアップについては、包括的な Key Protect モジュールをご覧ください。 概要については Terraform IBM Modulesを 参照。
API を使用したルート鍵のインポート
以下のエンドポイントへの POST 呼び出しを行うことによって、対称鍵を Key Protect にインポートします。
https://<region>.kms.cloud.ibm.com/api/v2/keys
-
以下の
curlコマンドを使用して、 Key Protect API を呼び出します。$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/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_name>", "aliases": [alias_list], "description": "<key_description>", "expirationDate": "<expiration_date>", "payload": "<key_material>", "extractable": <key_type> } ] }'次の表に従って、例の要求内の変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| リージョン | 必須。 us-south や eu-gb といった地域略称は、 Key Protect インスタンスが配置されている地理的エリアを表します。詳細については、「 地域別サービスエンドポイント 」を参照してください。 |
| IAM_token | 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを cURL 要求に組み込みます。 詳細については、「 アクセストークンの取得 」を参照してください。 |
| instance_ID | 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。 詳細については、「 インスタンス ID の取得 」を参照してください。 |
| correlation_ID | トランザクションを追跡し、相互に関連付けるために使用される固有 ID。 |
| return_preference | POST および DELETE の操作に関するサーバーの動作を変更するヘッダー。 return_preference 変数を return=minimal に設定すると、サービスは鍵のメタデータ (鍵の名前や ID 値など) のみを応答のエンティティー本体で返します。 変数を return=representation に設定すると、サービスは鍵の素材と鍵のメタデータの両方を返します。 |
| key_name | 必須。 鍵を簡単に識別するための、人間が理解できる固有の名前。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。 |
| alias_list | オプション。 鍵に割り当てる (人間が理解できる) 1 つ以上の固有の別名。 重要: プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。 各エイリアスは英数字で構成され、大文字と小文字が区別され、スペースや「-」および「_」以外の特殊文字を含んではなりません。 エイリアスはUUIDであってはならず、また Key Protect で予約されている名前(allowed_ip、key、keys、metadata、policy、policies、registration、registrations、ring、rings、rotate、wrap、unwrap、rewrap、version、versions)であってはなりません。 |
| key_description | オプション。 鍵の詳しい説明。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。 |
| expiration_date | オプション。 システムで鍵の有効期限が切れる RFC 3339 形式 (YYYY-MM-DD HH:MM:SS.SS) の日時。例えば、2019-10-12T07:20:50.52Z など。 鍵は、鍵の有効期限日を経過後 1 時間以内に非アクティブ化状態に遷移します。 expirationDate 属性を省略した場合、鍵の有効期限は切れません。 |
| key_material | 必須。 サービスで保管および管理する、base64 エンコードの鍵素材 (既存の鍵ラップ鍵)。 詳細については、 Base64 鍵素材の暗号化 をご覧ください。 鍵素材が以下の要件を満たしていることを確認します。 標準鍵の最大サイズは 7,500 バイトです。 鍵は base64 エンコードでなければなりません。 |
| key_type | 鍵の素材をサービスの外に出すことができるかどうかを決定するブール値。 extractable 属性を false`` に設定すると、サービスはそのキーを、ラップまたはアンラップ操作に使用できるルートキーとして指定します。 |
個人データの機密性を保護するため、サービスに鍵を追加するときに、個人の名前や場所などの個人情報 (PII) を入力しないようにしてください。
成功した POST api/v2/keys 応答は、鍵の ID 値を他のメタデータと共に返します。 この ID は、鍵に割り当てられた固有の ID で、Key Protect API に対する以降の呼び出しに使用されます。
オプション: 次の呼び出しを実行して Key Protect インスタンス内の鍵を表示し、鍵が追加されたことを確認します。
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
鍵素材の Base64 でのエンコード
既存のルート鍵をインポートするときは、サービスで保管および管理する暗号化された鍵素材を含める必要があります。
OpenSSL を使用した既存の鍵素材の暗号化
このプロセスを使用して、ファイル内の鍵素材の内容を暗号化します。
-
OpenSSLをダウンロードしてインストールします。
-
次のコマンドを実行して、鍵素材ストリングを Base64 でエンコードします。
openssl base64 -in <infile> -out <outfile>次の表に従って、例の要求内の変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| infile | 鍵素材ストリングが存在するファイルの名前。 鍵が 16 バイト、24 バイト、または 32 バイトの長さ (128 ビット、192 ビット、または 256 ビットの長さに相当) であることを確認してください。 鍵は base64 エンコードでなければなりません。 |
| outfile | コマンドが実行されると base64 でエンコードされた鍵素材が作成されるファイルの名前。 |
base64 素材をファイルではなくコマンド・ラインで直接出力する場合は、openssl enc -base64 <<< '<key_material_string>'を発行します。ここで、key_material_string は、インポートされる鍵の鍵素材入力です。
OpenSSL を使用した新しい鍵素材の作成とエンコード
このプロセスを使用して、特定のバイト長でランダム base64 エンコードされた鍵素材を作成します。32 バイト (256 ビット) をお勧めします。
-
OpenSSLをダウンロードしてインストールします。
-
次のコマンドを実行して、鍵素材ストリングを Base64 でエンコードします。
openssl rand -base64 <byte_length>次の表に従って、例の要求内の変数を置き換えてください。
| 変数 | 説明 |
|---|---|
| byte_length | 鍵の長さ (バイト単位で測定)。 許容バイト長は、16 バイト、24 バイト、または 32 バイト (128 ビット、192 ビット、または 256 ビットの長さに相当) です。 鍵は base64 エンコードでなければなりません。 |
鍵素材の作成例
-
openssl rand -base64 16は、128 ビットの鍵素材を生成します。 -
openssl rand -base64 24は、192 ビットの鍵素材を生成します。 -
openssl rand -base64 32は、256 ビットの鍵素材を生成します。
次の作業
-
エンベロープ暗号化を使用した鍵の保護について詳しくは、鍵のラッピングを確認してください。
-
キーのプログラムによる管理について詳しく知りたい場合は、 『 Key Protect 』のAPIリファレンスドキュメントをご覧ください。