16.8. IBM Z에서 IBM Secure Execution 설정
IBM Z 하드웨어를 사용하여 RHEL 8 호스트를 실행하는 경우 VM에 대한 IBM Secure Execution 기능을 구성하여 VM(가상 머신)의 보안을 개선할 수 있습니다.
IBM Secure Execution(보호된 가상화이라고도 함)을 사용하면 호스트 시스템이 VM의 상태 및 메모리 콘텐츠에 액세스할 수 없습니다. 따라서 호스트가 손상되어도 게스트 운영 체제를 공격하기 위한 벡터로 사용할 수 없습니다. 또한 Secure Execution을 사용하여 신뢰할 수 없는 호스트가 VM에서 중요한 정보를 얻지 못하도록 할 수 있습니다.
IBM Secure Execution를 활성화하여 IBM Z 호스트의 기존 VM을 보안 VM으로 변환할 수 있습니다.
프로덕션 환경 보안을 위해 워크로드를 더욱 안전하게 보호하는 방법을 설명하는 Secure Execution를 사용하여 워크로드를 완전히 보호하는 방법에 대한 IBM 설명서 를 참조하십시오.
사전 요구 사항
시스템 하드웨어는 다음 중 하나입니다.
- IBM z15 이상
- IBM LinuxONE III 이상
시스템에 대해 보안 실행 기능이 활성화되어 있습니다. 확인하려면 다음을 사용합니다.
grep facilities /proc/cpuinfo | grep 158
# grep facilities /proc/cpuinfo | grep 158
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면 CPU가 Secure Execution과 호환됩니다.
커널에는 보안 실행 지원이 포함됩니다. 확인하려면 다음을 사용합니다.
ls /sys/firmware | grep uv
# ls /sys/firmware | grep uv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령이 출력을 생성하는 경우 커널은 보안 실행을 지원합니다.
호스트 CPU 모델에는
압축 해제
기능이 포함되어 있습니다. 확인하려면 다음을 사용합니다.virsh domcapabilities | grep unpack
# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령이 위의 출력을 생성하는 경우 CPU 호스트 모델은 Secure Execution과 호환됩니다.
VM의 CPU 모드는
host-model
로 설정되어 있습니다.virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"
# virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령에서 출력을 생성하는 경우 VM의 CPU 모드가 올바르게 설정됩니다.
호스트에서 직접 VM 이미지를 수정하려는 경우
guestfs-tools
패키지가 호스트에 설치됩니다.yum install guestfs-tools
# yum install guestfs-tools
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - IBM Z 호스트 키 문서를 얻고 확인했습니다. 자세한 내용은 IBM 문서의 호스트 키 문서 확인을 참조하십시오.
절차
호스트에서 다음 단계를 수행합니다.
prot_virt=1
커널 매개 변수를 호스트의 부팅 구성에 추가합니다.grubby --update-kernel=ALL --args="prot_virt=1"
# grubby --update-kernel=ALL --args="prot_virt=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 부팅 메뉴를 업데이트합니다.
# zipl
-
virsh edit
를 사용하여 보안하려는 VM의 XML 구성을 수정합니다. <
;launchSecurity type="s390-pv"/
>를 </devices
> 줄 아래에 추가합니다. 예를 들면 다음과 같습니다.[...] </memballoon> </devices> <launchSecurity type="s390-pv"/> </domain>
[...] </memballoon> </devices> <launchSecurity type="s390-pv"/> </domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
구성의 <
devices
> 섹션에virtio-rng
장치( <rng model="virtio"
>)가 포함된 경우 <rng> </rng
> 블록의 모든 행을 제거하십시오.
다음 섹션 중 하나에서 단계를 진행합니다. 게스트에 로그인하여 보안 실행을 위해 수동으로 구성하거나 스크립트 및 guestfs-tools
를 사용하여 호스트에서 직접 게스트 이미지를 구성할 수 있습니다.
보안 실행을 위해 VM 수동 구성
보호하려는 VM 의 게스트 운영 체제에서 다음 단계를 수행합니다.
매개 변수 파일을 생성합니다. 예를 들면 다음과 같습니다.
touch ~/secure-parameters
# touch ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /boot/loader/entries
디렉토리에서 최신 버전으로 부트 로더 항목을 식별합니다.ls /boot/loader/entries -l
# ls /boot/loader/entries -l [...] -rw-r--r--. 1 root root 281 Oct 9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 부트 로더 항목의 커널 옵션 행을 검색합니다.
cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 매개 변수 파일에 options 행의 내용을 추가하고
swiotlb=262144
를 추가합니다.echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
# echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 IBM Secure Execution 이미지를 생성합니다.
예를 들어 다음은
secure
생성합니다.-parameters 파일,
보안 이미지를/boot/
imageinitramfs-4.18.0
초기 RAM 디스크 파일을 기반으로 /boot/secure--000201C048.crt 호스트 키 문서를 사용하여 /boot/vmlinuz-4.18.0-
imggenprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image
# genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow genprotimg
유틸리티를 사용하면 커널 매개 변수, 초기 RAM 디스크 및 부팅 이미지가 포함된 보안 이미지를 생성합니다.VM의 부팅 메뉴를 업데이트하여 보안 이미지에서 부팅합니다. 또한
initrd
및옵션으로
시작하는 행을 필수가 아니므로 제거합니다.예를 들어 RHEL 8.3 VM에서
/boot/loader/entries/
디렉터리에서 부팅 메뉴를 편집할 수 있습니다.cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf title Red Hat Enterprise Linux 8.3 version 4.18.0-240.el8.s390x linux /boot/secure-image [...]
# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf title Red Hat Enterprise Linux 8.3 version 4.18.0-240.el8.s390x linux /boot/secure-image [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 부팅 가능한 디스크 이미지를 생성합니다.
zipl -V
# zipl -V
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 보호되지 않은 원본 파일을 안전하게 제거합니다. 예를 들면 다음과 같습니다.
shred /boot/vmlinuz-4.18.0-240.el8.s390x shred /boot/initramfs-4.18.0-240.el8.s390x.img shred secure-parameters
# shred /boot/vmlinuz-4.18.0-240.el8.s390x # shred /boot/initramfs-4.18.0-240.el8.s390x.img # shred secure-parameters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원래 부팅 이미지, 초기 RAM 이미지 및 커널 매개 변수 파일은 보호되지 않으며 제거되지 않은 경우 Secure Execution이 활성화된 VM은 여전히 해킹 시도 또는 민감한 데이터 수집에 취약해질 수 있습니다.
호스트에서 직접 보안 실행을 위해 VM 구성
guestfs-tools
를 사용하여 수동으로 부팅하지 않고 기존 이미지를 수정할 수 있습니다. 그러나 테스트 및 개발 환경에서만 다음 예제를 사용하십시오. 프로덕션 환경 보안에 대한 자세한 내용은 보안 실행을 사용하여 워크로드를 완전히 보호하는 방법에 대한 IBM 설명서를 참조하십시오.
호스트에서 다음 단계를 수행합니다.
호스트 키 문서가 포함된 스크립트를 생성하고 보안 실행을 사용하도록 기존 VM을 구성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - VM이 종료되었는지 확인합니다.
guestfs-tools
를 사용하여 기존 VM 이미지에 스크립트를 추가하고 처음 부팅할 때 실행되도록 표시합니다.virt-customize -a <vm_image_path> --selinux-relabel --firstboot <script_path>
# virt-customize -a <vm_image_path> --selinux-relabel --firstboot <script_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가된 스크립트를 사용하여 이미지에서 VM을 부팅합니다.
이 스크립트는 처음 부팅할 때 실행된 다음 VM을 다시 종료합니다. 결과적으로 VM은 이제 해당 호스트 키가 있는 호스트에서 Secure Execution를 사용하여 실행되도록 구성됩니다.
검증
호스트에서
virsh dumpxml
유틸리티를 사용하여 보안 VM의 XML 구성을 확인합니다. 설정에는 <launchSecurity type="s390-pv"/
> 요소와 <rng model="virtio"> 요소가 포함되어야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow