HPCS에서 Block Storage 으로 VPC 마이그레이션하기 Key Protect

VPC Block Storage 볼륨에 대한 Hyper Protect Crypto Services (HPCS) 암호화를 마이그레이션하여 IBM Key Protect ( Key Protect )을 대신 사용하세요.

시작하기 전에

아직 마이그레이션하지 않았다면 마이그레이션 개요 에 있는 정보를 검토하여 HPCS 대신 Key Protect 을 사용하도록 VPC 블록 스토리지 볼륨을 마이그레이션해야 하는지 확인하세요.

마이그레이션을 위한 전제 조건

마이그레이션을 시작하기 전에 다음 단계를 완료하세요.

  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. 상태 명령어를 실행하여 구성을 확인하십시오.
        ./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 루트 키에 대한 키 순환 정책을 설정하는 것이 좋습니다.