HPCS から VPC Block Storage への移行 Key Protect

VPC Block Storage ボリュームの Hyper Protect Crypto Services (HPCS) 暗号化を、代わりに IBM Key Protect ( Key Protect ) を使用するように移行します。

開始前に

まだ移行していない場合は、 移行の概要に 記載されている情報を確認し、VPCブロック・ストレージ・ボリュームをHPCSの代わりに Key Protect。

移行の前提条件

移行を開始する前に、以下の手順を完了してください。

  1. IBM Key Protect 専用インスタンスを 新規作成 するか、既存のインスタンスを使用する。

  2. Key Protect インスタンスから、宛先のお客様 (CRK)CRN を確認します。

    ibmcloud kp keys -i KP-INSTANCE-ID
    
  3. VPC Block Storage が Key Protect インスタンスへの読み取りアクセス権を持っていることを確認します。 IAMを使ってアクセス権を割り当てる 必要があるかもしれない。 このアクセスはアカウントアカウントである可能性があり、先に進む前に正しく設定する必要がある。

  4. まだの場合は、移行の概要にある 移行ツールをダウンロードして ください。

マイグレーション手順

以下の手順に従って、VPC Block Storage ボリュームを HPCS から Key Protect に移行してください。

  1. ソース HPCS CRK をデスティネーション Key Protect CRK にマップする CSV ファイルを作成します。

    1. HPCSルートキーのCRNを取得してください。
        ibmcloud resource service-instance <hpcs-instance-name>
        ```
    2. Key Protect ルートキーのCRNを取得する。
    
    ```sh {: pre}
        ibmcloud resource service-instance <kp-instance-name>
        ```
    3. 以下のフォーマットで CSV ファイル(例えば、 `hpcs-kms-migration.csv` )を作成する:
    
    ```csv {: codeblock}
        <source-hpcs-crk-crn>,<destination-kp-crk-crn>
        ```
        次に例を示します。
        ```csv {: codeblock}
        crn:v1:staging:public:hs-crypto:us-south:a/1152aa1c1ec54274ac42b807c90c:0ce92f39-69fd-4200-ba53-5ed555689:key:43eb6a-5451-4ea1-8080-0ca2d6cc7,crn:v1:staging:public:kms:us-south:a/1152aa1c1ec54274ac4ad8507c90c:b2ee9d-b658-4939-bb63-ffb6e7442:key:8cf424f4-bd6a-4de9-8ad5-5c60332de
        ```
    
  2. 移行ツールに必要な環境変数を設定する。

    複数の KMS インスタンスがある場合は、この手順で使用するエンドポイントが、移行対象のインスタンスと一致していることを確認してください。

    1. 必要な環境変数をエクスポートします。 プレースホルダーの値を実際のエンドポイントとAPIキーに置き換えてください。
        export HPCS_API_ENDPOINT=https://<hpcs-instance-id>.api.<region>.hs-crypto.appdomain.cloud
        export KP_ST_ENDPOINT=https://<kp-instance-id>.api.<region>.kms.appdomain.cloud
        export IBMCLOUD_API_KEY=<api-key-with-access-to-kms-and-hpcs>
        export IBMCLOUD_API_KEY_KP_ST=$IBMCLOUD_API_KEY
        ```
        ステージング環境についても設定する:
        ```sh {: pre}
        export IBMCLOUD_STAGE=true
        export DEBUG_MODE=true
        ```
    
  3. CSV ファイルを検証し、現在の移行状態をチェックする。 なお、複数のキーが使用されている場合、 CSV ファイルには複数のエントリが含まれることがある点にご注意ください。

    1. status コマンドを実行して、設定が正しいか確認してください。
        ./crk-migration-tool-darwin-arm64-1.1.0 status hpcs-kms-migration.csv
        ```
    2. 出力を確認し、ソースとデスティネーションのCRKが正しく識別されていることを確認する。
    
    
  4. CSV ファイルを使用して CRK マイグレーション・インテントを作成します。

    1. createコマンドを実行して移行インテントを確立する。
        ./crk-migration-tool-darwin-arm64-1.1.0 create hpcs-kms-migration.csv
        ```
    2. コマンド出力をチェックして、インテントが正常に作成されたことを確認する。
    
    
  5. インテントを同期して、実際のCRKマイグレーションを実行する。 なお、複数のクラスターで同じキーが使用されている場合、そのクラスター内でそのキーを使用しているすべてのボリュームも移行されることにご注意ください。

    1. 同期コマンドを実行して、移行処理を実行してください。
        ./crk-migration-tool-darwin-arm64-1.1.0 sync hpcs-kms-migration.csv
        ```
    2. 同期処理が完了するまでお待ちください。 このプロセスは、ボリュームの暗号化キーを移行します。
    
    
  6. ボリュームが Key Protect CRK を参照するようになったことを確認する。

    移行したボリュームのみを確認すれば十分です。 検出スクリプトを使用して、HPCSキーを使用しているボリュームの一覧を取得した場合は、出力に表示されたボリュームを確認してください。

    1. 永続ボリュームを一覧表示し、ボリュームIDをメモする。
        kubectl get pv
        ```
    2. ボリュームIDを取得するには、永続ボリュームを記述します。
    
    ```sh {: pre}
        kubectl describe pv <pv-name>
        ```
    3. IBM Cloud CLIを使用してボリュームの詳細を確認する。
    
    ```sh {: pre}
        ibmcloud is volume <volume-id>
        ```
    4. 出力で、 `Encryption Key` フィールドが HPCS インスタンスではなく、 Key Protect インスタンスの CRK CRN を参照するようになったことを確認します。
    
    
  7. 今後のすべてのPVCが Key Protect CRKを使用するように、ストレージクラスを更新してください。

    この手順は、移行したストレージクラスについてのみ実行すれば十分です。 検出スクリプトを使用して、HPCSキーを使用しているストレージクラスを一覧表示した場合は、出力に表示されたクラスについて、この手順を実行してください。

    1. 既存のストレージクラスをリストアップする。
        kubectl get storageclass
        ```
    2. パラメータで HPCS CRK を参照するストレージクラスを特定する。
    
    3. HPCSでバックアップされているストレージクラスを削除してください。
    
    ```sh {: pre}
        kubectl delete storageclass <storageclass-name>
        ```
    4. Key Protect CRK CRNで新しいストレージクラスを作成する。 以下の例をテンプレートとしてご利用ください:
    
    ```yaml {: codeblock}
        apiVersion: storage.k8s.io/v1
        kind: StorageClass
        metadata:
          name: ibmc-vpc-block-kms
        provisioner: vpc.block.csi.ibm.io
        parameters:
          profile: "general-purpose"
          encrypted: "true"
          encryptionKey: "<key-protect-crk-crn>"
          csi.storage.k8s.io/fstype: "ext4"
        reclaimPolicy: Delete
        allowVolumeExpansion: true
        volumeBindingMode: WaitForFirstConsumer
        ```
    5. 新規のストレージ・クラスを適用します。
    
    ```sh {: pre}
        kubectl apply -f <storageclass-file>
        ```
    

次のステップ

  • 移行したボリュームでアプリケーションが正常に機能し続けることを確認します。
  • アクセスや暗号化の問題がないか、 Key Protect インスタンスを監視します。
  • 新しい Key Protect 構成を反映するように、ドキュメントとランブックを更新してください。
  • Key Protect のルート鍵に キー・ローテーション・ポリシーを 設定することを検討する。