Red Hat Enterprise Linux와 함께 AWS Nitro Enclave에서의 기밀 컴퓨팅

발행: (2025년 12월 1일 오전 09:00 GMT+9)
9 min read

Source: Red Hat Blog

왜 기밀 컴퓨팅 환경에서 워크로드를 실행해야 하는가

전통적인 환경에서는 사용 중인 데이터가 권한이 있는 내부자, 손상된 하이퍼바이저, 혹은 서버 메모리를 읽을 수 있는 고급 악성코드와 같은 위협에 노출될 수 있습니다. 기밀 컴퓨팅은 워크로드를 하드웨어로 보호되는 신뢰 실행 환경(TEE) 안에 배치하고 메모리를 암호화하며 접근을 엄격히 제어함으로써, 클라우드 제공자, 시스템 관리자, 시스템 수준 소프트웨어조차도 사용 중인 데이터를 볼 수 없고 수정할 수 없도록 보장합니다.

RHEL은 현대 기밀 컴퓨팅 기술과 완전히 호환되는 강화된 엔터프라이즈급 운영 체제를 제공함으로써 핵심적인 역할을 수행합니다. RHEL은 AMD SEV‑SNP, Intel TDX, IBM Secure Execution과 같은 CPU 수준 기능과 통합되어 암호화된 가상 머신 및 보안 enclaves를 활성화합니다. RHEL은 이러한 하드웨어 보호를 구성하는 복잡성을 크게 추상화하고, 보안 프로파일, attestation 도구, 그리고 라이프사이클 관리를 제공하여 기밀 컴퓨팅을 프로덕션 환경에 보다 쉽게 배포하고 운영할 수 있게 합니다.

RHEL을 사용해 기밀 컴퓨팅 환경에서 워크로드를 실행함으로써, 조직은 점점 더 엄격해지는 규제 요구사항을 준수하면서 하이브리드 또는 클라우드 기반 아키텍처에서 높은 수준의 데이터 보증을 달성할 수 있습니다. RHEL의 장기 지원 수명주기, 예측 가능한 업데이트, 그리고 보안 인증은 기밀 컴퓨팅 배포가 시간이 지나도 안정적이고 안전하게 유지되도록 돕습니다. 하드웨어 수준 격리와 RHEL의 엔터프라이즈 보안 기능이 결합되어 금융 데이터, 의료 기록, AI 모델 등 가장 민감한 워크로드를 처리하기 위한 신뢰할 수 있는 기반을 제공합니다.

신뢰할 수 있는 환경에 워크로드 배포

이 가이드의 목적은 기밀 컴퓨팅 기술을 사용해 TEE에 워크로드를 배포하는 방법을 보여주는 것입니다. 기밀 컴퓨팅의 근본적인 특징은 안전한 환경에서 실행되고 있음을 증명할 수 있다는 점입니다. 이를 달성하려면 다음이 필요합니다:

  • 암호화 측정을 통해 워크로드의 정체성을 증명할 수 있도록 워크로드를 구축합니다.
  • 워크로드의 정체성과 실행 중인 TEE의 유효성을 검증할 서비스를 배포합니다.
  • 적절히 보호된 TEE에서 실행되지 않으면 워크로드가 실행되지 않도록 배포합니다.

AWS EC2 지원 인스턴스에서 enclaved 워크로드에 사용할 수 있는 리소스

운영 체제와 컨테이너 오케스트레이션 시스템은 실행 가능한 애플리케이션 enclave 수에 제한을 두지 않지만, 시스템 리소스 제약을 고려해야 합니다. 특히 각 enclave에 할당되는 vCPU와 메모리가 단일 호스트에서 배포 가능한 enclave 총 수에 영향을 미칩니다.

예를 들어, 8 vCPU와 32 GB 메모리를 가진 인스턴스에서는 멀티스레딩이 필요할 경우 vCPU 할당이 제한 요소가 됩니다. 부모 호스트에 2 vCPU를 예약하고 나머지 6 vCPU로는 각각 2 vCPU와 8 GB 메모리를 사용하는 enclave를 최대 세 개만 지원할 수 있습니다. 또한 AWS Nitro Enclave에서는 부모 인스턴스당 enclave 최대 개수가 절대적으로 네 개로 제한됩니다. 멀티‑enclave 배포에 대한 시스템 고려 사항은 공식 AWS 문서를 참고하십시오.

AWS Nitro Enclaves에서 기밀 컴퓨팅 구현

다음 예제에서는 애플리케이션 코드가 AWS Nitro Enclave 내의 Podman 컨테이너에서 실행되며, 이 Enclave는 RHEL을 부모 호스트로 사용합니다. 예제는 다음을 보여줍니다:

  • 애플리케이션을 enclave에 빌드하고 패키징하는 방법.
  • 하이퍼바이저와 게스트 VM 간의 효율적이고 격리된 통신을 위해 설계된 Linux Virtual Socket(Vsock)을 통한 통신 방법.
  • OpenSSL을 사용해 attestation 인증서 체인을 검증하는 방법.
  • attestation 문서에 보고된 값과 enclave 측정값(PCR)을 비교 검증하는 방법.

EC2 인스턴스 준비

AWS Nitro Enclaves를 지원하는 EC2 인스턴스로 시작합니다(최신 지원 부모 인스턴스 목록은 AWS 문서를 참조). EC2 콘솔에서 다음을 수행합니다:

  1. 인스턴스의 Advanced Details 로 이동합니다.
  2. Nitro Enclave 옵션을 활성화합니다.
  3. 운영 체제로 RHEL 9 를 선택합니다.

이 샘플에서는 m5.2xlarge 인스턴스(8 vCPU, 32 GB RAM)를 사용했으며, 30 GB 부팅 볼륨에 RHEL 9.7이 설치되었습니다.

프로비저닝 후에는 인스턴스 메타데이터 설정과 메모리·CPU 할당 정책을 조정해 Nitro Enclave 지원을 활성화합니다. 자세한 절차는 AWS 시작 가이드를 참고하십시오.

Nitro Enclave CLI 및 SDK 설치

RHEL에서는 AWS Git 저장소에서 CLI와 SDK 도구를 빌드합니다. 소스 코드를 가져와 저장소의 빌드 지침을 따르세요. 빌드 과정에 최소 20 GB의 인스턴스 스토리지가 필요합니다.

컴파일이 끝나면 Nitro Enclave allocator 서비스를 시작합니다:

sudo systemctl start nitro-enclaves-allocator.service

예제 서버와 클라이언트 만들기

샘플은 enclave 서버 역할을 하는 간단한 Python 애플리케이션과, 부모 호스트에서 Vsock을 통해 통신하는 Python 클라이언트를 사용합니다.

Enclave server (server.py)

import socket

VSOCK_PORT = 5000
ANY_CID = socket.VMADDR_CID_ANY

def main():
    server = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)
    server.bind((ANY_CID, VSOCK_PORT))
    server.listen(5)
    print(f"[Enclave] vsock server listening on port {VSOCK_PORT}...")
    while True
Back to Blog

관련 글

더 보기 »

Friday Five — 2025년 12월 5일

!1https://www.redhat.com/rhdc/managed-files/styles/default_800/private/number-1.png.webp?itok=pDWx13kK Red Hat이 AWS 전반에 걸쳐 향상된 AI 추론을 제공한다 Red H...