암호화된 사용자 정의 이미지 작성
IBM Cloud® Virtual Private Cloud 요구 사항을 충족하는 qcow2 사용자 정의 이미지를 가지고 있다면, 이를 암호화할 수 있습니다. 다음 절차는 QEMU와 고유한 암호를 사용하여 LUKS 암호화로 사용자 정의 이미지를 암호화하는 방법을 설명합니다. 이미지를 암호화한 후 고객 루트 키 (CRK) 로 비밀번호 문구를 랩핑합니다. 랩핑된 (또는 암호화된) 데이터 암호화 키는 IBM Cloud VPC로 가져올 때 이미지 메타데이터와 함께 저장됩니다.
암호화된 사용자 정의 이미지를 작성하는 빠른 방법은 볼륨의 이미지를 사용하는 것입니다. 이 기능을 사용하여 인스턴스의 부트 볼륨에서 사용자 정의 이미지를 작성하고 고객 관리 암호화를 지정할 수 있습니다. 자세한 정보는 볼륨의 이미지 작성 정보를 참조하십시오.
개인용 카탈로그 또는 베어메탈 서버에서 암호화된 사용자 정의 이미지를 사용할 수 없습니다.
자세한 정보는 SSH키 시작하기 를 참조하십시오.
암호화된 사용자 정의 이미지가 작동되는 방법
고유 비밀번호 문구로 사용자 정의 이미지를 암호화한 후 IBM Cloud Object Storage로 업로드합니다. 암호화된 이미지를 IBM Cloud VPC로 가져오기 전에 키 관리 서비스(KMS)를 설정하고 고객 루트 키(CRK)를 작성해야 합니다. 그런 다음, CRK를 사용하여 이미지를 암호화하는 데 사용하는 암호를 보호하십시오. CRK로 시크릿 비밀번호 문구를 랩핑하여 KMS에서 랩핑된 데이터 암호화 키(WDEK)라고 하는 항목을 작성합니다. 암호화 데이터를 래핑하면 암호화되어 안전하게 보호되므로 암호화를 일반 텍스트로 공유할 필요가 없습니다.
이미지를 가져오는 경우 KMS에 저장되는 고객 루트 키(CRK)에 대한 클라우드 리소스 이름(CRK)을 지정해야 합니다. 랩핑된 데이터 암호화 키(WDEK)에 대한 암호문도 지정해야 합니다. 비밀번호 문구는 항상 WDEK에 암호화되어 저장됩니다. 암호화된 이미지를 사용하는 가상 서버가 시작되는 경우에만 랩핑 해제됩니다.
암호화된 이미지를 사용하여 가상 서버를 프로비저닝할 준비가 되면 암호화 정보가 필요하지 않습니다. CRK의 WDEK 및 CRN은 이미지와 함께 메타데이터로 저장됩니다. 자세한 정보는 암호화된 사용자 정의 이미지 정보를 참조하십시오.
암호화된 이미지 프로세스 개요
다음 단계는 암호화된 이미지의 작성 및 가져오기를 성공하기 위해 완료되어야 하는 상위 레벨 프로세스를 요약하여 보여줍니다. 다음 절에서는 단계를 완료하는 방법에 대한 세부사항을 제공합니다.
- LUKS 암호화로 qcow2 파일을 암호화하려면 QEMU와 원하는 비밀번호 문구를 사용하여 암호화된 이미지를 작성하십시오.
- 암호화된 이미지 파일을 IBM Cloud Object Storage에 업로드하십시오.
- 키 관리 서비스를 작성하고, 고객 루트 키(CRK)를 작성한 후 CRK로 비밀번호 문구를 랩핑하여 랩핑된 데이터 암호화 키(WDEK)를 생성하십시오.
- Cloud Identity and Access Management에서 이미지를 가져오고 데이터 암호화에 WDEK를 사용할 수 있도록 필요한 IBM IBM Cloud Object Storage 권한이 있는지 확인하십시오.
- 이미지를 IBM Cloud VPC로 가져오십시오. IBM Cloud Object Storage 위치, KMS가 저장되는 CRK 및 WDEK 암호문을 지정해야 합니다.
이미지 암호화
이 단계에서는 QEMU를 사용하여 자신만의 암호를 지정하고 LUKS 암호화로 사용자 정의 이미지를 암호화합니다.
암호화할 사용자 정의 이미지는 IBM Cloud VPC 인프라에 대한 사용자 정의 이미지 요구사항을 충족해야 합니다. 다음 항목에서 이미지 준비 요건을 완료했는지 확인하십시오
암호화 작업을 완료하려면 QEMU 버전 2.12 이상이 설치되어 있어야 합니다.
Linux 또는 Windows 운영 체제를 사용하여 QEMU 암호화 지시사항을 완료하십시오. Mac 운영 체제는 지원되지 않습니다.
QEMU를 사용하여 사용자 정의 이미지의 두 번째 암호화된 qcow2 파일을 생성하여 다음 단계를 완료하십시오.
-
이미지를 암호화하는 데 사용할 고유 비밀번호 문구를 결정하십시오. 이 태스크의 샘플 명령은
abc123
이라는 비밀번호 문구를 사용합니다. 비밀번호 문구를 사용 가능한 상태로 유지하십시오. 나중에 패스프레이즈를 래핑하여 래핑된 데이터 암호화 키(WDEK)를 만들어야 합니다. WDEK는 이미지를 IBM Cloud VPC로 가져올 때 필요합니다. -
다음 명령을 사용하여 현재 qcow2 사용자 정의 이미지를 확인하십시오.
qemu-img info my_100G_custom_image.qcow2
이 예제에서는 다음 출력과 유사한 응답을 볼 수 있습니다.
image: my_100G_custom_image.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.28 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
-
동일한 크기의 비어 있는 새 qcow2 파일을 작성하고 LUKS 암호화로 이 파일을 암호화하십시오. 선택한 비밀번호 문구(예:
abc123
)를 사용하여 파일을 암호화하십시오.qemu-img create --object secret,id=sec0,data=abc123 -f qcow2 -o encrypt.format=luks,encrypt.key-secret=sec0 my_100G_custom_image-encrypted.qcow2 100G
-
qcow2 이미지(
my_100G_custom_image.qcow2
)를 암호화된 이미지(my_100G_custom_image-encrypted.qcow2
)로 변환하십시오.qemu-img convert --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 --target-image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -n -p
-
두 파일을 비교하여 동일한지 확인하십시오.
qemu-img compare --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -p
-
오류가 있는지 파일을 확인하십시오.
qemu-img check --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2
이 예제에서는 다음 출력과 유사한 응답을 볼 수 있습니다.
No errors were found on the image. 16343/1638400 = 1.00% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 1074790400
-
info
를 실행하여 새로운 암호화된 파일이 예상한 크기와 암호화 수준인지 확인하십시오.qemu-img info my_100G_custom_image-encrypted.qcow2
이 예제에서는 다음 출력과 유사한 응답을 볼 수 있습니다.
image: my_100G_custom_image-encrypted.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.27 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
IBM Cloud Object Storage에 암호화된 이미지 업로드
이미지 파일이 LUKS 암호화와 고유 암호를 통해 암호화된 경우, 다음 단계를 완료하여 IBM Cloud Object Storage 업로드할 수 있습니다
- 나중에 쉽게 식별할 수 있도록 사용자 정의된 이미지 파일에 설명 이름이 있는지 확인하십시오.
- IBM Cloud Object Storage 버킷의 오브젝트 페이지에서 업로드를 클릭하십시오. 200MB가 넘는 이미지를 업로드하려면 Aspera 고속 전송 플러그인을 사용할 수 있습니다.
키 관리 서비스 및 키 설정
암호화된 사용자 정의 이미지를 IBM Cloud VPC 가져오려면 키 관리 서비스가 제공되어야 합니다. 고객 루트 키(CRK) 및 랩핑된 데이터 암호화 키(WEDK)도 필요합니다. WDEK는 사용자만 암호화 문구를 알고 있도록 CRK로 랩핑된 이미지를 암호화하는 데 사용한 비밀번호 문구입니다. WDEK는 암호화된 이미지를 사용하는 가상 서버 인스턴스가 시작될 때 암호화된 이미지에 액세스하는 데 사용됩니다.
다음 목록은 핵심 관리 전제 조건의 요약입니다
- 지원되는 키 관리 서비스 ( Key Protect 또는 Hyper Protect Crypto Services) 를 프로비저닝하십시오.
- 고객 루트 키(CRK)를 키 관리 서비스로 가져오거나 키 관리 서비스에 CRK를 작성하십시오.
- 랩핑된 데이터 암호화 키(WDEK)를 작성하기 위해 고객 루트 키로 이미지를 암호화하는 데 사용한 비밀번호 문구를 랩핑(보호)하십시오.
다음 예제 단계는 Key Protect에 한정되지만 일반 플로우는 Hyper Protect Crypto Services에도 적용됩니다. Hyper Protect Crypto Services를 사용 중인 경우 해당 지시사항은 Hyper Protect Crypto Services 정보를 참조하십시오.
-
Key Protect 서비스를 프로비저닝하십시오.
새로운 Key Protect 서비스 인스턴스를 프로비저닝하면 고객 관리 암호화에 필요한 최신 업데이트가 포함됩니다.
-
IBM Key Protect에서 고객 루트 키(CRK)를 작성하거나 가져오십시오.
키 자료 작성 및 암호화를 위한 옵션을 검토하여 키 가져오기를 계획하십시오. 보안을 추가하려면 클라우드로 키 자료를 가져오기 전에 이 키 자료를 암호화하도록 가져오기 토큰을 사용하여 키 자료의 보안 가져오기를 사용하도록 설정할 수 있습니다.
-
고객 루트 키(CRK)를 사용하여 LUKS 암호화로 이미지를 암호화하는 데 사용한 고유 암호화 문구를 랩핑하거나 보호하십시오. 이미지 암호화 예에서는
abc123
이라는 비밀번호 문구를 사용했습니다.-
Key Protect 의 CLI 플러그인이 설치되어 있는지 확인하여 WDEK를 생성할 수 있도록 하십시오. 자세한 정보는 Key Protect CLI 플러그인 설치 를 참조하십시오.
-
비밀번호 문구를 Base64 인코딩으로 인코딩하여 CRK로 랩핑하도록 준비하십시오. 비밀번호 문구를
abc123
으로 대체하여 다음 명령을 실행하십시오. 랩핑된 비밀번호 문구가 적용되지 않는 원인이 되는 줄 바꾸기 문자를 인코딩하지 않도록 -n 매개변수가 필요합니다.echo -n "abc123"|base64
이 예제에서는 다음 출력과 유사한 응답을 볼 수 있습니다.
YWJjMTIz
-
ibmcloud kp key wrap
명령을 실행하여 CRK로 인코딩된 비밀번호 문구를 랩핑하십시오. 암호화된 이미지를 생성하는 데 사용되는 패스프레이즈는 기술적으로 데이터 암호화 키는 아니지만, Key Protect 래핑과 언래핑을 위한 데이터에 사용하는 용어입니다. Key Protect 에서 리턴되는 데이터를 WDEK라고합니다. 자세한 정보는 kp 키 랩핑을 참조하십시오.ibmcloud kp key wrap KEY_ID -i INSTANCE_ID -p PLAINTEXT
여기서 KEY_ID 는 래핑에 사용하고자 하는 루트 키의 ID이고, INSTANCE_ID는 Key Protect 식별하는 인스턴스 ID이며, PLAINTEXT 는 인코딩된 패스프레이즈입니다. 예를 들어, YWJjMTIz입니다.
이 예제에서는 다음 출력과 유사한 응답을 볼 수 있습니다.
Wrapping key... SUCCESS Ciphertext eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
-
WDEK의 암호문을 스토리지에 저장하거나 영구 저장하십시오. 암호화된 이미지를 IBM Cloud VPC로 가져오면 WDEK 암호문을 지정하십시오.
-
IAM 인증 전제조건
IBM Cloud Identity and Access Management에서 필수 권한을 작성했는지 확인하십시오.
- IBM Cloud Identity and Access Management(IAM)에서 Cloud Block Storage(소스 서비스)와 키 관리 서비스(대상 서비스) 간에 권한을 작성하십시오. 권한은 IBM Cloud 백플레인 서비스가 데이터 암호화를 위해 WDEK를 사용할 수 있도록 허용합니다.
- Image Service for VPC 와 IBM Cloud Object Storage 간에 IAM 권한을 작성했는지 확인하십시오. 소스 서비스로 인프라 서비스를 지정하십시오. 리소스 유형으로 VPC용 이미지 서비스를 지정하십시오. IBM Cloud Object Storage 을 대상 서비스로 지정하십시오. 이 권한은 VPC용 이미지 서비스가 IBM Cloud Object Storage 이미지에 액세스할 수 있도록 하기 위한 것입니다. 자세한 정보는 이미지를 가져오기 위해 액세스 권한을 IBM Cloud Object Storage에 부여를 참조하십시오.
다음 단계
이미지가 성공적으로 암호화되고, KMS가 설정되고, 필요한 키가 생성되면 이미지를 IBM Cloud VPC 가져올 수 있습니다. 사용자 정의 이미지를 IBM Cloud VPC에서 사용할 수 있는 경우 이를 사용하여 인스턴스를 프로비저닝할 수 있습니다. 이미지를 가져오기 위해 IBM Cloud Object Storage 에 대한 액세스 권한을 부여했는지 확인하십시오.
암호화된 이미지로 새 가상 서버 인스턴스를 프로비저닝할 준비가 되면 암호화 정보가 필요하지 않습니다. 랩핑된 데이터 암호화 키(WDEK) 및 고객 루트 키(CRK)의 CRN은 이미지와 함께 메타데이터로 저장됩니다.