鍵管理相互運用プロトコル(KMIP)の使用

IBM® Key Protect for IBM Cloud® キー管理相互運用プロトコル(KMIP)をネイティブでサポートしており、 Key Protect コンソールから直接KMIPアダプターを作成したり、証明書をアップロードしたりすることができます。

このソリューションでは、 VMware® インスタンスを保護するための、 Key Protect のネイティブKMIPサポートアーキテクチャについて説明します。 Key Protect のネイティブKMIPサポートは、 VMware のネイティブ vSphere 暗号化および vSAN™ 暗号化と連携し、 IBM Cloud® の Key Protect ( お客様 )が持つセキュリティと柔軟性を維持しつつ、ストレージ暗号化の管理を簡素化します。

このソリューションは、 IBM Cloud で提供されている「 VMware 」向け KMIP の代替ソリューションです。 本書では、これらの基盤ソリューションの設定については扱っていません。 基盤ソリューションのアーキテクチャに関する詳細については、「 VMware Solutions の概要 」を参照してください。

この機能は、 VMware 向けの現行のKMIPソリューションと並行して動作します。 VMware ソリューションで作成されたアダプターを Key Protect にインポートすることはできません。その逆も同様です。

メリット

Key Protect KMIPのネイティブサポートには、次のような利点があります:

VMware 認証
Key Protect におけるKMIPのサポートは、 VMware によって認定されており、KMIP KMSサーバーを介した暗号化に対応するあらゆるサービスやプラットフォームと直接統合することができます。 KMIPのサポートは Key Protect に統合・管理されているため、サードパーティ製のKMIPサーバーによるサポートは必要ありません。
ハイパーバイザーレベルの暗号化
VMware、 vSAN 暗号化、および vSphere 暗号化との統合により、ストレージ層や仮想マシン層ではなく、ハイパーバイザー層での暗号化が実現されます。 このアプローチにより、管理が簡素化され、ストレージソリューションとアプリケーションの可視性が向上します。
フルマネージド型のサービス
キー管理サーバーはフルマネージド型であり、 IBM Cloud の多くのマルチゾーンリージョン(MZR)で利用可能です。
お客様鍵
暗号化キーの管理権限はお客様が完全に保持しており、いつでもそのキーを無効化することができます。
費用対効果
KMIPの対称鍵は、 1つの鍵バージョンとして課金される ため、実際に使用した分のみを支払うことになります。

アダプターの作成

単一のインスタンスに作成できるアダプタは最大200個です。 各アダプタは、最大 200 の証明書を関連付けることができる。

KMIP アダプタは、Key Protect ルートキーを使って作成される。 ルート・キーがない場合は、作成してください

作業を開始する前に、そのインスタンスで「 Manager 」ロールまたは「 KmipAdapterManager 」ロールが 割り当てられていることを確認してください。

アダプターを作成するには

  1. ナビゲーションメニューで、「 KMIPアダプタ 」をクリックします。 初めてアダプターを使用する場合は、表は空になっています。

  2. 「作成」 をクリックします。

  3. サイドパネルには、以下の情報を記載してください:

    • 名前- アダプタの名前を入力してください(2~40文字)。
    • 説明 (任意) - アダプタの説明を入力してください(2~240文字)。
    • ルートキー- このアダプタで使用するルートキーを選択します。 ルートキーは、アダプタが生成するKMIPキーを暗号化します。 アダプタが正しく機能するためには、ルートキーが「 active 」状態である必要があります。
  4. オプション:公開 TLS 証明書を追加し、対応する秘密証明書の所有者がKMIPアダプタを介して Key Protect と通信できるようにします。 インスタンスに対してKMIPプロトコルのリクエストを送信できるのは、承認された証明書のみです。

    証明書を追加するには:

    1. 追加 をクリックします。
    2. 証明書の名前を入力してください。
    3. 証明書の内容を、 PEM 形式で入力してください。この際、「 BEGIN CERTIFICATE 」および「 END CERTIFICATE 」というタグも必ず含めてください。
    4. [ 証明書の追加 ] をクリックします。

    証明書の関連付けには数分かかる場合があります。 Key Protect のリージョン内では、1つの証明書を1つのアダプターにのみ関連付けることができます。

KMIPプロトコルを通じて管理されているリソースには、 HTTP API からはアクセスできません。

アップロードした証明書の秘密鍵は、安全に保管してください。 KMIPアダプタにアップロードされた証明書であれば、サポートされているすべてのKMIP操作を実行できます。

アダプタと通信するためのKMIPクライアントの設定

アダプタと通信するには、 VMware を設定するか、 TCP 経由で mTLS と通信し、 KMIP仕様書に記載されている TTLVメッセージ形式を使用してメッセージを送信できるKMIPクライアントを作成する必要があります。

VMware vSphere については、「 vSphere クライアントを使用した標準キープロバイダの追加 」の手順に従ってください。 標準キープロバイダーを追加する際は、インスタンスのリージョンに対応した Key Protect エンドポイント を使用してください。 たとえば、 us-south リージョンにある Key Protect インスタンスの場合、アドレスには us-south.kms.cloud.ibm.com 、ポートには 5696 を指定します。

vSphere クライアントは、KMIPアダプタと通信するために、自身のクライアント証明書をアダプタにアップロードする必要があります。 「 証明書オプションを使用して、標準キープロバイダーとの信頼された接続を確立する 」の手順に従ってクライアント証明書をダウンロードし、それをアダプタにアップロードしてください。

KMIPへのアクセスを許可する

IBM Cloud IAM 役割と Key Protect アクションの対応関係については、役割と許可を参照してください。

以下のIAMアクションは、KMIPリソースへのアクセスを管理するために使用される リソースを管理する:

  • kms.kmip-management.create
  • kms.kmip-management.list
  • kms.kmip-management.read
  • kms.kmip-management.delete

各アクションは、インスタンス内のすべての kmip_adapter certificatekmip_object リソースに対して、粒度を変えずに前述の振る舞いを許可します。

アダプターの詳細の表示と更新

アダプタの詳細パネルには、アダプタに関する情報が表示され、証明書の追加などの操作を行うことができます。

アダプターの詳細を表示するには:

  1. アダプターのアクションメニュー(⋯)をクリックしてください。
  2. 詳細 」を選択してください。

詳細パネルには、アダプタの名前、説明、関連付けられたKMIP対称鍵、およびアップロードされた証明書が表示されます。 このパネルから、追加の証明書をアップロードすることもできます。

KMIPの対称鍵は、コンソールからは削除できません。 キーを削除するには、 CLI を使用してください。 Active 状態(状態 1 )ではないKMIP対称鍵のみを削除できます。 Active 状態のキーが含まれているアダプタは削除できません。

各アダプタのリソースは、ルートキーによって保護されています。 アクティブ状態で、かつアダプタに関連付けられているルートキーは削除できません。

作成される各KMIP対称キーは、1つのキーバージョンとしてカウントされ、 1つのキーバージョンの料金が発生します。 KMIPの対称鍵の削除は取り消すことができません。

KMIPがサポートするオブジェクトと操作

サポートされていない操作に対するリクエストのような、予想される失敗 の理由については、KMIPバージョン 1.4 ドキュメントの Result Reasonを参照のこと。

KMIP対応オペレーション

以下の操作のみがサポートされています。

対応しているKMIP操作
セクション 操作 要約
4.1 作成 KMIPオブジェクトを作成します。
4.9 位置の特定 指定された条件や属性メタデータに一致するオブジェクトを検索します。
4.11 取得 オブジェクト情報、具体的には鍵データを取得します。
4.12 属性の取得 オブジェクトに関する属性メタデータを取得します。
4.14 属性の追加 オブジェクトに属性メタデータを追加します。
4.19 アクティブ化 オブジェクトを「アクティブ」状態に設定します。 アクティブ状態にある間は、そのオブジェクトを破棄することはできません。
4.20 取り消し 失効理由コードが「鍵の漏洩」または「CAの侵害」である場合、そのオブジェクトを「侵害済み」の状態に設定します。 それ以外の場合は、オブジェクトを「無効」状態に設定します。
4.21 破棄 オブジェクトの鍵データを破棄します。 This action cannot be reversed.
4.26 バージョン一覧を見る サーバーに対し、サポートされているKMIPプロトコルのバージョンを問い合わせます。 v1.4 のみが返されます。

サポート対象

サポートされているKMIPオブジェクト
セクション オブジェクト
2.2 対称鍵

APIにおけるKMIPアダプタの作成と使用

このセクションでは、プロファイル「 native_1.0 」のKMIPアダプタをAPIで使用する方法について説明します。これには、KMIPクライアント証明書の追加および削除、ならびにKMIPオブジェクトの表示および削除が含まれます。

以下のエンドポイントに対して POST 呼び出しを行うことで、KMIPアダプタを作成できます。

https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters

KMIP クライアント証明書や KMIP オブジェクトなど、KMIP アダプタのサブリ ソースに対する操作は、以下のエンドポイントで行う:

https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>/certificates
https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>/kmip_objects
  1. サービス内で鍵を処理するための認証資格情報を取得します。

  2. KMIPアダプタの作成に使用するルート・キーのIDをコピーする。

    鍵の ID は、以下の場所にあります。 Key Protect インスタンスの鍵の ID は、鍵のリストを取得するか、または Key Protect ダッシュボードにアクセスすることで見つけることができます。 ダッシュボード

  3. 以下の curl コマンドでKMIPアダプターを作成します:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json" \
        -d '{
                "metadata": {
                    "collectionType": "application/vnd.ibm.kms.kmip_adapter+json",
                    "collectionTotal": 1
                },
                "resources": [
                    {
                    "name": "<adapter_name>",
                    "description": "<adapter_description>",
                    "profile": "native_1.0",
                    "profile_data": {
                        "crk_id": "<root_keyID_or_alias>"
                    }
                    }
                ]
            }'
    

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

Key ProtectでKMIPアダプタを作成するために必要な変数を記述します。
変数 説明
リージョン 必須us-southeu-gb といった地域略称は、 Key Protect インスタンスが配置されている地理的エリアを表します。

詳しくは、地域のサービス・エンドポイントを参照してください。
root_keyID_or_alias 必須。 アダプタで使用するルートキーの一意の識別子またはエイリアス。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを curl 要求に組み込みます。
詳細については、「 アクセストークンの取得 」を参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。

詳細については、「 インスタンス ID の取得 」を参照してください。
アダプター名 オプション。 kmsインスタンス内でユニークなKMIPアダプタの人間が読める名前。 指定がない場合は、kmip_adapter_<random_string> の形式で自動生成されます。 プライバシー保護のため、KMIPアダプタの名前として、氏名や所在地などの個人情報を使用しないでください。 名前は英数字でなければならず、スペースや「-」「_」以外の特殊文字を含めることはできない。名前はUUIDにはできません。
アダプタの説明 オプション KMIPアダプタの説明。 最大文字数は240文字です。 プライバシー保護のため、KMIPアダプタの説明文には、氏名や所在地などの個人情報を記載しないでください。
  1. オプション:以下の curl コマンドで、インスタンスに存在するKMIPアダプタをリストアップできます:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    以下の curl コマンドを使って、特定のKMIPアダプターを取得することもできます:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    特定のアダプタを取得するには、アダプタの UUID またはアダプタ名のいずれかを使用できることに注意してください。

  2. 以下の curl コマンドでKMIPアダプターを削除できます:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    KMIP アダプタを削除できるのは、そのアダプタ配下のすべての KMIP オブジェクトが削除されている場合のみです。

KMIP アダプタへの KMIP クライアント証明書の追加

KMIPアダプタを作成した後、そのアダプタに関連付けるKMIPクライアント証明書を追加することができます。 証明書の登録が完了すると、KMIP仕様書に記載されているとおり、 mTLS を使用して、その証明書をKMIPサーバーとの通信に利用できるようになります。 証明書の登録には、最大5分ほどかかる場合があります。 証明書は同一地域内で一意でなければならない。

  1. サービス内で鍵を処理するための認証資格情報を取得します。

  2. 証明書を追加する KMIP アダプタを特定する。

  3. 以下の curl コマンドでKMIPクライアント証明書を追加する:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -d '{
                "metadata": {
                    "collectionType": "application/vnd.ibm.kms.kmip_client_certificate+json",
                    "collectionTotal": 1
                },
                "resources": [
                    {
                    "certificate": "<certificate_pem>",
                    "name": "<certificate_name>"
                    }
                ]
            }'
    

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

Key ProtectのKMIPクライアント証明書を作成するために必要な変数を記述する。
変数 説明
リージョン 必須us-southeu-gb といった地域略称は、 Key Protect インスタンスが配置されている地理的エリアを表します。

詳しくは、地域のサービス・エンドポイントを参照してください。
ADAPTER_ID 必須。 証明書を登録する KMIP アダプタの一意の識別子または名前。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを curl 要求に組み込みます。
詳細については、「 アクセストークンの取得 」を参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。

詳細については、「 インスタンス ID の取得 」を参照してください。
証明書 必須 KMIPクライアント証明書の内容。 x509 PEM 形式でなければならない。 明示的にBEGIN CERTIFICATE タグと END CERTIFICATE タグを持つ必要があります。
certificate_name オプション。 指定されたアダプタ内で証明書を一意に識別する、人間が読み取り可能な名前。 指定がない場合は、kmip_cert_<random_string> の形式で自動生成されます。 プライバシー保護のため、KMIPアダプタの名前として、氏名や所在地などの個人情報を使用しないでください。 名前は英数字でなければならず、スペースや「-」「_」以外の特殊文字を含めることはできない。名前はUUIDにはできません。
  1. オプション:以下の curl コマンドで、アダプタに関連付けられたKMIPクライアント証明書を一覧表示できます:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    また、以下の curl コマンドを使って、特定のKMIPクライアント証明書を取得することもできます:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates/<certificate_name_or_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    特定のアダプタを取得するには、証明書のUUIDまたは証明書の名前のいずれかを使用できることに注意してください。

  2. 以下の curl コマンドでKMIPクライアント証明書を削除できます:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    KMIP アダプタを削除できるのは、そのアダプタ配下のすべての KMIP オブジェクトが削除されている場合のみです。

アダプタ内の KMIP オブジェクトの表示と削除

KMIPオブジェクトはREST APIを通じて作成することはできないが、閲覧や削除は可能である。

  1. サービス内で鍵を処理するための認証資格情報を取得します。

  2. 証明書を追加する KMIP アダプタを特定する。

  3. 以下の curl コマンドで、KMIPアダプタ内のKMIPオブジェクトを表示できます:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    
  4. 以下の curl コマンドで、KMIPアダプタ内の特定のKMIPオブジェクトを表示できます:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects/<object_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    
  5. KMIP アダプタ内の特定の KMIP オブジェクトを削除するには、次の curl コマンドを使用します:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects/<object_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    ここで <object_id> はKMIPオブジェクトのUUIDである。 アクティブ(state=2)状態のKMIPオブジェクトは削除できない。