ルート鍵の作成

ルートキーの作成には IBM® Key Protect for IBM Cloud®。

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

あるリージョンで作成された暗号鍵は、IBM Cloud 内のあらゆるリージョンに配置されたデータ・ストアの暗号化に使用できます。

コンソールでのルート鍵の作成

サービスのインスタンスを作成した後、次の手順を実行して、以下でルート鍵を作成します。 IBM Cloud コンソールにアクセスすることによって、指定されたキーの ID をリトリーブできます。

Dedicated Key Protect オファリングを デプロイする場合、リソースを作成する前に、まず インスタンスを初期化する 必要があります。

Key Protect インスタンスの二重許可設定 を有効にする場合、 サービスに追加するどの鍵についても、 鍵の削除には 2 人のユーザーからの許可が必要となることに 留意してください。

  1. IBM Cloud コンソールにログインしてください

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

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

  4. 新しいキーを作成するには、「 キーの追加 」をクリックしてください。 サイド・パネルが開きます。 「鍵の作成 (Create a key)」オプションが選択されていることを確認します。 なお、この鍵に対して鍵エイリアスキーリングまたはローテーションポリシー を設定するには、「 詳細オプション 」タブをクリックしてこれらの項目を表示させる必要があります。

Manager ではない場合 (または同等のレベルの権限を持っている場合)、 「ローテーション・ポリシー」 オプションは表示されません。

Specify the key's details:
Create a key の設定について説明します。
設定 説明
タイプ Key Protect で管理する鍵のタイプ。 デフォルトでは、ルート鍵が選択されています。
キーの名前 鍵を簡単に識別するための (人間が理解できる) 表示名。 2 文字以上 90 文字以下の長さにする必要があります。 プライバシーを保護するため、鍵の名前には、個人の名前や場所などの個人情報 (PII) を含めないように注意してください。 鍵の名前は固有でなくてもかまいません。
キーの説明 オプション。 説明は、別名またはその名前を使用することができない方法で、キーに関する情報 (例えば、その目的を説明する句) を追加するための便利な方法です。 この説明は、2 文字以上 240 文字以下でなければならず、後で変更することはできません。 プライバシー保護のため、キーの説明文には氏名や所在地などの個人情報を使用しないでください。
キー・エイリアス オプション鍵の別名 は、鍵を記述する方法でもあります。 鍵には最大 5 つの別名を指定できます。
鍵リング オプション鍵リングとは、鍵をグループに分けて、各グループを必要に応じて独立して管理できるようにするものです。 どの鍵も 1 つの鍵リングに含まれていなければなりません。 鍵リングを選択しない場合、鍵は default 鍵リングに入れられます。 作成している鍵を鍵リングに配置するには、その鍵リングに対して_マネージャー_の役割を持っている必要があることに注意してください。 役割について詳しくは、ユーザーのアクセス権限の管理を参照してください。
ローテーション・ポリシー オプション「管理者」 役割 を保持している場合は、鍵の作成時に鍵のローテーション・ポリシーを設定できます。 デフォルトで鍵にローテーション・ポリシーを作成するための インスタンス・ポリシー が存在する場合は、鍵作成時にそのポリシーを別の間隔で上書きすることもできます。 インスタンスでローテーション・ポリシーが有効になっていて、鍵の作成時にローテーション・ポリシーを 無効に しても、ポリシーは引き続き 「無効」 状態で鍵に書き込まれることに注意してください。 このポリシーを後で有効にする場合は、有効にすることができます。 詳しくは、 鍵の作成後にローテーション・ポリシーを設定する を参照してください。

キーの詳細の入力が完了したら、「 追加 」をクリックして確定してください。

どのキーリングに鍵を追加したいかが決まっており、かつそのキーリングの_管理者_である場合は、「 キーリング 」パネルに移動し、⋯を選択して「 新しい鍵を追加 」をクリックすることもできます。 この場合は、**「鍵」ページで「追加」をクリックするのと同じパネルが、「鍵リング (Key rings)」**変数に鍵リング名が入力された状態で開かれます。

本サービスで生成される鍵は、AES_KWアルゴリズムによってサポートされる256ビットの対称鍵です。 セキュリティーを強化するために、鍵はセキュアな IBM Cloud データ・センターにある FIPS 140-2 レベル 3 認定ハードウェア・セキュリティー・モジュール (HSM) で生成されます。

アカウントまたは環境間で一貫してルート鍵をプロビジョニングする必要がある場合、 Key Protect Keyモジュールでこれを自動化できます。 Key Protect インスタンスとキーホルダーもプロビジョニングする完全なセットアップについては、包括的な Key Protect モジュールをご覧ください。 概要については Terraform IBM Modulesを 参照。

API を使用したルート鍵の作成

Dedicated Key Protect オファリングを デプロイする場合、リソースを作成する前に、まず インスタンスを初期化する 必要があります。

以下のエンドポイントへの POST 呼び出しを行うことにより、ルート鍵を作成します。

https://<region>.kms.cloud.ibm.com/api/v2/keys
  1. サービス内で鍵の処理を行うために、認証資格情報を取得します

  2. 以下の curl コマンドを実行して、ルート鍵を作成します。

    $ 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 "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -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>",
                        "extractable": <key_type>
                    }
                ]
            }'
    

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

Key Protect API を使用してルートキーを追加するために必要な変数について説明します。
変数 説明
リージョン 必須。 Key Protect インスタンスが存在している地理的領域を表す、地域の省略形 (例: us-south または eu-gb)。 詳しくは、地域のサービス・エンドポイントを参照してください。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを curl 要求に組み込みます。 詳細については、アクセス・トークンのリトリーブを参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。 詳細については、インスタンス ID のリトリーブを参照してください。
key_ring_ID オプション。 新規作成する鍵を入れるターゲットの鍵リングの固有 ID。 指定しない場合は、ヘッダーに自動的に「default」が設定され、指定した Key Protect サービス・インスタンスのデフォルトの鍵リングに鍵が入れられます。 詳しくは、鍵のグループ化を参照してください。
correlation_ID トランザクションを追跡し、相互に関連付けるために使用される固有 ID。
key_name 必須。 鍵の識別に役立つ、人間が理解できる名前。 重要: プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
alias_list 鍵に割り当てる (人間が理解できる) 1 つ以上の固有の別名。 重要: プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。 各別名は英数字で大文字と小文字を区別する必要があり、ダッシュ (-) または下線 (_) 以外のスペースや特殊文字を含めることはできません。別名は、バージョン 4 UUID にすることはできず、Key Protect の予約名 (allowed_ip、key、keys、metadata、policy、policies、registration、registrations、ring、rings、rotate、wrap、unwrap、rewrap、version、versions) にすることはできません。 別名のサイズは 2 文字以上 90 文字以下です。
key_description 鍵の詳しい説明。 重要: プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
expiration_date オプション。 システム上で鍵の有効期限が切れる日時を、RFC 3339 形式(YYYY-MM-DD HH:MM:SS.SS、例: 2019-10-12T07:20:50.52Z )で表したものです。 有効期限を設定して作成された鍵は、有効期限満了後1時間以内に自動的に Deactivated 状態に移行するため、有効期限を設定する際には注意が必要である。 この状態では、キーに対して許されるアクションは、アンラップ、リラップ、ローテート、デリートのみである。 非アクティブ化された鍵は、たとえ非アクティブ化中にローテートされたとしても、新しいデータを暗号化(ラップ)するために使用することはできない。 ローテーションは、有効期限をリセットしたり延長したりするものではなく、日付を変更することもできない。 サービスの中断を防ぐため、有効期限切れまたは期限切れの鍵で暗号化されたデータは、元の CRK の有効期限が切れる前に、新しいカスタマ・ルート鍵(CRK)を使用して再暗号化することを推奨する。 非アクティブ化されたキーを削除して復元しても、 _アクティブ_状態には戻らない。 expiration_date 属性が省略された場合、そのキーには有効期限が設定されません。
key_type 鍵の素材をサービスの外に出すことができるかどうかを決定するブール値。 extractable 属性を false に設定すると、サービスは wrap または unwrap の操作に使用できるルート鍵を作成します。

有効期限を設定して作成された鍵は、有効期限満了後1時間以内に自動的に Deactivated 状態に移行するため、有効期限を設定する際には注意が必要である。 この状態では、キーに対して許されるアクションは、アンラップ、リラップ、ローテート、デリートのみである。 非アクティブ化された鍵は、たとえ非アクティブ化中にローテートされたとしても、新しいデータを暗号化(ラップ)するために使用することはできない。 ローテーションは、有効期限をリセットしたり延長したりするものではなく、日付を変更することもできない。 サービスの中断を防ぐため、有効期限切れまたは期限切れの鍵で暗号化されたデータは、元の CRK の有効期限が切れる前に、新しいカスタマ・ルート鍵(CRK)を使用して再暗号化することを推奨する。 非アクティブ化されたキーを削除して復元しても、 _アクティブ_状態には戻らない。 expiration_date 属性が省略された場合、そのキーには有効期限が設定されません。

有効期限のあるキーの使用状況を監視するには IBM Cloud Logs. ログは、有効期限を持つキーのJSONプロパティ responseData.expirationDateresponseData.daysToKeyExpire 、 以下の action の値を使用して、有効期限と残り日数を示す: kms.secrets.wrap kms.secrets.unwrapkms.secrets.rewrapkms.secrets.readkms.secrets.readmetadatakms.secrets.createkms.secrets-with-policy-overrides.createkms.secrets.expire。 さらに、 GET /api/v2/keys への REST 呼び出しが成功すると、有効期限を持つ各キーの expirationDate プロパティが返される。

個人データの機密性を保護するため、サービスに鍵を追加するときに、個人の名前や場所などの個人情報 (PII) を入力しないようにしてください。

成功した POST api/v2/keys 応答は、鍵の ID 値を他のメタデータと共に返します。 この ID は、鍵に割り当てられた固有の ID で、Key Protect API に対する以降の呼び出しに使用されます。

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "02fd6835-6001-4482-a892-13bd2085f75d",
            "name": "test-root-key",
            "aliases": [
                "alias-1",
                "alias-2"
              ],
            "description": "A test root key",
            "state": 1,
            "extractable": false,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
            "imported": false,
            "creationDate": "2020-03-12T03:37:32Z",
            "createdBy": "...",
            "algorithmType": "Deprecated",
            "algorithmMetadata": {
                "bitLength": "256",
                "mode": "Deprecated"
            },
            "algorithmBitSize": 256,
            "algorithmMode": "Deprecated",
            "lastUpdateDate": "2020-03-12T03:37:32Z",
            "keyVersion": {
                "id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
                "creationDate": "2020-03-12T03:37:32Z"
            },
            "dualAuthDelete": {
                "enabled": false
            },
            "deleted": false
        }
    ]
}

応答パラメータの詳細については、『 Key Protect REST API リファレンスドキュメント 』を参照してください。

次の作業