標準鍵のインポート
IBM Cloud コンソールを使用して、既存の暗号鍵を追加することができます。
Key Protect API を使用してプログラムで、既存の暗号鍵を追加することができます。
コンソールを使用した標準鍵のインポート
サービスのインスタンスを作成した後、以下の手順を実行して、IBM Cloud コンソールを使用して既存の鍵をインポートします。
Key Protect インスタンスの二重許可設定 を有効にする場合、 サービスに追加するどの鍵についても、 鍵の削除には 2 人のユーザーからの許可が必要となることに 留意してください。
-
「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。
-
IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。
-
新しいキーをインポートするには、「 追加 」をクリックし、「 キーのインポート 」 ウィンドウを選択します。
キーの詳細を以下のように指定します。
| 設定 | 説明 |
|---|---|
| キー・タイプ | Key Protect で管理する鍵のタイプ。 **「標準鍵 (Standard key)」**ボタンをクリックします。 |
| 名前 | 鍵を簡単に識別するための、人間が理解できる別名。 2 文字以上 90 文字以下の長さにする必要があります。 プライバシーを保護するため、鍵の名前には、個人の名前や場所などの個人情報 (PII) を含めないように注意してください。 鍵の名前は固有でなくてもかまいません。 |
| キー素材 | サービスで保管および管理する、base64 エンコードの鍵素材 |
(既存の鍵ラップ鍵など)。 詳しくは、[鍵素材の Base64 でのエンコード](#how-to-encode-standard-key-material)を確認してください。 鍵素材が 16 バイト、24 バイト、または 32 バイトの長さであり、128 ビット、192 ビット、または 256 ビットの長さに相当することを確認してください。 鍵はまた base64 でエンコードされている必要があります。 |
| キー・エイリアス | オプション。 鍵の別名は、表示名の制限を超える鍵の説明を入力して、鍵の識別やグループ化を可能にするものです。 鍵には最大 5 つの別名を指定できます。 | | 鍵リング | オプション。 鍵リングとは、鍵をグループに分けて、各グループを必要に応じて独立して管理できるようにするものです。
どの鍵も 1 つの鍵リングに含まれていなければなりません。 鍵リングを選択しない場合、鍵は default 鍵リングに入れられます。 作成している鍵を鍵リングに配置するには、その鍵リングに対して_マネージャー_の役割を持っている必要があることに注意してください。 役割について詳しくは、ユーザーのアクセス権限の管理を参照してください。
|
キーの詳細の入力が完了したら、「 追加 」をクリックして確定してください。
特定のキーリングの_管理者_であれば、「 キーリング 」パネルから直接キーを追加することができます。 キーリングのアクションメニュー(⋯)から、「 新しいキーを追加 」をクリックします。 「 キー 」ページで「 追加 」をクリックしたときと同じパネルが開きますが、「 キーリング 」フィールドには、選択したキーリング名が事前に入力されています。
アカウント環境間で一貫した標準キーのインポートと管理が必要な場合、 Key Protect Keyモジュールでこれを自動化できます。 Key Protect インスタンスとキーホルダーもプロビジョニングする完全なセットアップについては、包括的な Key Protect モジュールをご覧ください。 概要については Terraform IBM Modulesを 参照。
標準鍵のインポート
以下のエンドポイントへの POST 呼び出しを行うことにより、標準鍵をインポートします。
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" \ -H "correlation-id: <correlation_ID>" \ -H "prefer: <return_preference>" \ -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 属性を true`` に設定すると、サービスはそのキーを、アプリやサービスに保存できる標準キーとして指定します。 |
個人データの機密性を保護するため、サービスに鍵を追加するときに、個人の名前や場所などの個人情報 (PII) を入力しないようにしてください。 PIIのその他の例については、 NIST特別刊行物800-122の2.2節を参照してください。
成功した POST api/v2/keys 応答は、鍵の ID 値を他のメタデータと共に返します。 ID は、鍵に割り当てられ、その後の以下の呼び出しに使用される固有 ID です Key Protect API。
オプション: 標準鍵のインポートの確認
鍵のリスト表示の要求を実行して、標準鍵がインポートされたことを確認できます。
$ 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>"
ここで、<instance_ID> はインスタンスの名前であり、<IAM_token> はご使用の IAM トークンです。
鍵素材の Base64 でのエンコード
既存の標準鍵をインポートするときは、サービスで保管および管理する暗号化された鍵素材を含める必要があります。
OpenSSL を使用した既存の鍵素材の暗号化
鍵素材をエンコードするには、まず OpenSSLをダウンロードしてインストールする必要があります。
OpenSSL をダウンロードしてインストールすると、鍵素材をエンコードするための推奨コマンドが 2 つあります。 どちらの方法も、<key_material_string> であろうと、
```sh {: pre}
openssl base64 -in <infile> -out <outfile>
```
Replace the variables in the example request according to the following table.
| 変数 | 説明 |
|---|---|
| infile | 鍵素材の文字列が格納されているバイナリファイルの名前。 ファイルが 7,500 バイト以下であることを確認してください。 |
| outfile | コマンドが実行されると base64 でエンコードされた鍵素材が作成されるファイルの名前。 |
base64 の資料をファイルではなくコマンド・ラインで直接出力する場合は、コマンドopenssl enc -base64 <<< '<key_material_string>'を実行します。ここで、key_material_string は、インポートされる鍵の鍵素材入力です。
ファイル内にない鍵素材をベース 64 エンコードする場合は、以下を発行できます。
```sh {: pre}
echo -n <password> | base64
```
Where "password" is the key material you want to use.
余分な文字(たとえば、余分な改行など)が入らないようにするため、特に「 base64 」という文字列をコンソールに投稿する場合は、 base64 をクリップボードにコピーしておくことをお勧めします。
OpenSSL を使用した新しい鍵素材の作成とエンコード
このプロセスを使用して、特定のバイト長でランダム base64 エンコードされた鍵素材を作成します。32 バイト (256 ビット) をお勧めします。
ルート鍵と同じ特性を持つ標準鍵にするには、16、24、または 32 バイトの鍵素材を作成して標準鍵として使用してください。 標準鍵は、サービスの外部に出ることができる鍵です。 標準鍵はアプリやサービスでよく使用されます。
-
ダウンロードとインストール 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リファレンスドキュメントをご覧ください。