HPCS에서 클래식 Block Storage 으로 마이그레이션 Key Protect
클래식 Block Storage 볼륨에 대한 Hyper Protect Crypto Services (HPCS) 암호화를 마이그레이션하여 IBM Key Protect ( Key Protect )을 대신 사용하세요.
시작하기 전에
시작하기 전에 HPCS 대신 Key Protect 을 사용하도록 클래식 Block Storage 볼륨을 마이그레이션해야 하는지 확인하세요. 이 섹션의 단계에 따라 이 프로세스를 수동으로 완료하거나 마이그레이션 개요에서 자동 감지 스크립트 사용에 대한 자세한 내용을 확인할 수 있습니다.
클래식 Block Storage 볼륨을 마이그레이션해야 하는지 수동으로 확인하려면 다음 단계를 따르세요.
-
클러스터의 블록 스토리지 플러그인에서 HPCS 암호화를 사용하고 있는지 확인합니다.
- 클러스터의 모든
kms-config비밀을 나열합니다.
kubectl get secrets -A --field-selector type=ibm.io/kms-config ``` 2. 발견된 각 `kms-config` 비밀에 대해 구성에 `hs-crypto` 이 포함되어 있는지 확인하여 `hpcs` 유형인지 확인합니다. ```sh {: pre} kubectl get secret <kms-config-name> -n <namespace> -o json | jq '.data | map_values(@base64d)' | grep "hs-crypto" ``` 3. 발견된 각 HPCS 구성에 대해 이를 사용하는 PVC를 식별합니다. ```sh {: pre} kubectl get pvc -A -l "encryptionKeySecret=<kms-config-name>" ``` - 클러스터의 모든
-
HPCS로 암호화된 PVC를 찾을 수 없는 경우 마이그레이션이 필요하지 않습니다. HPCS로 암호화된 PVC가 발견되면 마이그레이션 단계를 진행합니다.
마이그레이션을 위한 전제 조건
마이그레이션을 시작하기 전에 다음 단계를 완료하세요.
-
마이그레이션 프로세스를 시작하기 전에 모든 클러스터 리소스를 백업하세요.
롤백이 필요한 경우를 대비하여 몇 주 동안 리소스 백업을 보관해 두세요.
kubectl get pvc --all-namespaces -o yaml > all-pvcs.yaml kubectl get pv -o yaml > all-pv.yaml kubectl get storageclass -o yaml > all-storage-classes.yaml kubectl get secrets --field-selector type=ibm.io/kms-config --all-namespaces -o yaml > all-kms-config.yaml kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret -o yaml > all-dek-secrets.yaml -
새 또는 기존 IBM Key Protect 인스턴스를 사용하세요.
-
Key Protect 인스턴스에서 루트 키를 생성합니다. 마이그레이션 단계에서 사용할 루트 키 ID를 기록해 두세요.
-
HPCS 및 Key Protect 인스턴스 모두에 액세스하는 데 필요한 IAM 권한이 있는지 확인합니다.
-
아직 설치하지 않은 경우 Key Protect CLI 플러그인을 설치합니다.
ibmcloud plugin install kp -r "IBM Cloud"
마이그레이션 단계
클래식 Block Storage 볼륨을 HPCS에서 Key Protect 으로 마이그레이션하려면 다음 단계를 따르세요.
1단계: HPCS 비밀번호를 Key Protect 구성으로 바꾸기
-
Key Protect 인스턴스에 대한 새 KMS 구성 파일을 만듭니다. 다음 파일을
target-kp-config.yaml으로 저장합니다. 플레이스홀더 값을 Key Protect 인스턴스 세부 정보로 바꾸어야 합니다.apiVersion: v1 kind: Secret metadata: name: <kms-config-name> namespace: <namespace> stringData: config: |- { "api_key":"<your-api-key>", "iam_endpoint":"https://iam.cloud.ibm.com", "key_protect_endpoint":"https://<region>.api.<region>.kms.appdomain.cloud", "instance_id":"<kp-instance-id>", "root_key_id":"<kp-root-key-id>" } type: ibm.io/kms-config값
<kms-config-name>: 기존 HPCS KMS 구성 비밀의 이름입니다.<namespace>: 시크릿이 위치한 네임스페이스입니다.<your-api-key>: Key Protect 인스턴스에 액세스할 수 있는 API 키입니다.<region>: Key Protect 인스턴스가 위치한 지역입니다.<kp-instance-id>: 귀하의 Key Protect 인스턴스 ID입니다.<kp-root-key-id>: Key Protect 에서 생성한 루트 키 ID입니다.
-
기존 HPCS KMS 구성 비밀번호를 삭제합니다.
kubectl delete secret <kms-config-name> -n <namespace> -
Key Protect 구성 비밀번호를 새로 만듭니다.
kubectl create -f target-kp-config.yaml
2단계: 사용할 PVC 암호화 키 업데이트하기 Key Protect
마이그레이션해야 하는 각 암호화된 PVC에 대해 다음 단계에 따라 HPCS에서 데이터 암호화 키(DEK)를 언래핑하고 Key Protect 로 다시 래핑합니다.
-
Key Protect CLI가 HPCS 인스턴스를 가리키도록 구성합니다.
export KP_PRIVATE_ADDR=https://<hpcs-instance-id>.api.<region>.hs-crypto.appdomain.cloud export KP_INSTANCE_ID=<hpcs-instance-id> export ROOT_KEY_ID=<hpcs-root-key-id> -
암호화된 PVC에 대한 HPCS 래핑된 DEK(WDEK)를 검색합니다.
- PVC에 대한 DEK 비밀을 찾아보세요.
kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret | grep <pv-name> ``` 2. 시크릿에서 포장된 DEK를 추출합니다. ```sh {: pre} kubectl get secrets -n ibm-block-secrets <pv-secret-name> -o yaml | grep wrappedDEK | awk '{print $2}' | base64 --decode ``` -
HPCS 루트 키를 사용하여 래핑된 DEK의 래핑을 해제합니다. 출력에서 래핑 해제된 DEK를 저장합니다.
ibmcloud kp key unwrap $ROOT_KEY_ID <wrapped-dek> -
Key Protect 인스턴스를 가리키도록 Key Protect CLI를 구성합니다.
HPCS와 Key Protect 구성 간에 실수로 전환하지 않으려면 별도의 터미널 창을 사용하세요.
export KP_PRIVATE_ADDR=https://<kp-instance-id>.api.<region>.kms.appdomain.cloud export KP_INSTANCE_ID=<kp-instance-id> export ROOT_KEY_ID=<kp-root-key-id> -
Key Protect 루트 키를 사용하여 DEK를 다시 래핑합니다. 출력에서 래핑된 DEK를 저장합니다.
ibmcloud kp key wrap $ROOT_KEY_ID -p UNWRAPPED-DEK-BASE64 -
PVC 시크릿에서 HPCS 래핑된 DEK를 Key Protect 래핑된 DEK로 바꿉니다.
- 새 래핑된 DEK를 base64 로 인코딩합니다.
echo <kp-wrapped-dek> | base64 ``` 2. DEK 비밀번호를 편집하고 `wrappedDEK` 값을 새 base64-encoded Key Protect 래핑된 DEK로 바꿉니다. ```sh {: pre} kubectl edit secret -n ibm-block-secrets <pv-secret-name> ``` -
선택 사항: 암호화된 PVC를 사용하는 파드를 다시 시작하여 볼륨을 확인합니다.
kubectl delete pod <pod-name> -n <namespace> -
HPCS에서 Key Protect 으로 마이그레이션해야 하는 모든 암호화된 PVC에 대해 이 단계를 반복합니다.
-
암호화된 PVC를 사용하는 모든 파드가 실행 중인지 확인합니다.
kubectl get pods -A
다음 단계
- 새로운 Key Protect 구성을 반영하도록 문서와 런북을 업데이트하세요.
- Key Protect 루트 키에 대한 키 순환 정책을 설정하는 것이 좋습니다.
- 마이그레이션 중 또는 마이그레이션 후에 문제가 발생하면 IBM Cloud 지원 티켓을 개설하세요.