Intel SGX enclave를 사용하는 AKS(Azure Kubernetes Service)의 기밀 컨테이너
기밀 컨테이너는 Intel SGX 기반 TEE(신뢰 실행 환경)에서 대부분의 일반적인 프로그래밍 언어 런타임(Python, Node, Java 등)의 수정되지 않은 기존 컨테이너 애플리케이션을 실행하는 데 도움이 됩니다. 이 패키징 모델은 일반적으로 소스 코드를 수정하거나 다시 컴파일할 필요가 없으며 Intel SGX enclave에서 실행하는 가장 빠른 방법입니다. 표준 Docker 컨테이너를 실행하기 위한 일반적인 배포 프로세스에는 오픈 소스 SGX 래퍼 또는 Azure 파트너 솔루션이 필요합니다. 이 패키징 및 실행 모델에서 각 컨테이너 애플리케이션은 Intel SGX CPU에서 적용하는 하드웨어 기반 격리를 통해 신뢰할 수 있는 경계(enclave)에 로드됩니다. enclave에서 실행되는 각 컨테이너는 Intel SGX CPU에서 전달되는 자체 메모리 암호화 키를 받습니다. 이 모델은 시장에서 사용할 수 있는 기성 컨테이너 애플리케이션 또는 현재 범용 노드에서 실행되는 사용자 지정 애플리케이션에 적합합니다. 기존 Docker 컨테이너를 실행하려면 기밀 컴퓨팅 노드의 애플리케이션에 특수 CPU 명령 집합의 범위 내에서 컨테이너를 실행하는 데 도움이 되는 Intel SGX(Software Guard Extensions) 래퍼 소프트웨어가 필요합니다. SGX는 신뢰 경계에서 게스트 OS(운영 체제), 호스트 OS 또는 하이퍼바이저를 제거하기 위해 CPU에 대한 직접 실행을 만듭니다. 이 단계는 전체 표면 공격 영역과 취약성을 줄이는 동시에 단일 노드 내에서 프로세스 수준 격리를 달성합니다.
수정되지 않은 컨테이너를 실행하기 위한 전체 프로세스에는 아래에서 자세히 설명한 대로 현재 컨테이너를 패키지하는 방법에 대한 변경이 포함됩니다.
표준 컨테이너를 실행하는 데 필요한 SGX 래퍼 소프트웨어는 Azure 소프트웨어 파트너 또는 OSS(오픈 소스 소프트웨어) 솔루션에서 제공합니다.
파트너 인에이블러
개발자는 기능, Azure 서비스와의 통합 및 도구 지원을 기반으로 하여 소프트웨어 공급자를 선택할 수 있습니다.
Important
Azure 소프트웨어 파트너는 Azure 인프라를 기반으로 하여 라이선스 요금을 포함하는 경우가 많습니다. 모든 파트너 소프트웨어 사용 조건을 별도로 확인하세요.
Fortanix
Fortanix는 컨테이너화된 애플리케이션을 SGX 지원 기밀 컨테이너로 변환하기 위한 포털 및 CLI(명령줄 인터페이스) 환경을 갖추고 있습니다. 애플리케이션을 수정하거나 다시 컴파일할 필요가 없습니다. Fortanix는 광범위한 애플리케이션 세트를 실행하고 관리할 수 있는 유연성을 제공합니다. 기존 애플리케이션, 새 enclave 네이티브 애플리케이션 및 미리 패키지된 애플리케이션을 사용할 수 있습니다. Fortanix의 Enclave 관리자 UI 또는 REST API로 시작합니다. AKS에 대한 Fortanix의 빠른 시작 가이드를 사용하여 기밀 컨테이너를 만듭니다.
SCONE(Scontain)
SCONE(Scontain) 보안 정책은 인증서, 키 및 비밀을 생성합니다. 애플리케이션에 대한 증명이 있는 서비스만 이러한 자격 증명을 볼 수 있습니다. 애플리케이션 서비스는 TLS를 통해 서로에 대한 증명을 자동으로 수행합니다. 애플리케이션 또는 TLS를 수정할 필요가 없습니다. 자세한 설명은 SCONE의 Flask 애플리케이션 데모를 참조하세요.
SCONE은 대부분의 기존 이진 파일을 enclave 내에서 실행되는 애플리케이션으로 변환할 수 있습니다. 또한 SCONE은 데이터 파일과 Python 코드 파일을 모두 암호화하여 Python과 같은 해석된 언어를 보호합니다. SCONE 보안 정책을 사용하여 무단 액세스, 수정 및 롤백으로부터 암호화된 파일을 보호할 수 있습니다. 자세한 내용은 기존 Python 애플리케이션에서 SCONE을 사용하는 방법에 대한 SCONE 설명서를 참조하세요.
이 SCONE 샘플 AKS 애플리케이션 배포에 따라 AKS를 사용하여 SCONE을 Azure 기밀 컴퓨팅 노드에 배포할 수 있습니다.
Anjuna
Anjuna는 AKS에서 수정되지 않은 컨테이너를 실행할 수 있는 SGX 플랫폼 소프트웨어를 제공합니다. 자세한 내용은 기능 및 샘플 애플리케이션에 대한 Anjuna 설명서를 참조하세요.
여기에서 샘플 Redis Cache 및 Python 사용자 지정 애플리케이션을 시작하세요.
OSS 인에이블러
참고 항목
Azure 기밀 컴퓨팅 및 Microsoft는 이러한 프로젝트 및 솔루션과 직접 관련이 없습니다.
Gramine
Gramine은 최소한의 호스트 요구 사항으로 단일 Linux 애플리케이션을 실행하도록 설계된 간단한 게스트 OS입니다. Gramine은 격리된 환경에서 애플리케이션을 실행할 수 있습니다. 기존 Docker 컨테이너를 SGX 준비 컨테이너로 변환하기 위한 도구 지원이 있습니다.
자세한 내용은 Gramine의 AKS의 샘플 애플리케이션 및 배포를 참조하세요.
Occlum
Occlum은 Intel SGX용 LibOS(메모리 안전 다중 프로세스 라이브러리 OS)입니다. OS를 사용하면 레거시 애플리케이션이 소스 코드를 거의 또는 전혀 수정하지 않고도 SGX에서 실행할 수 있습니다. Occlum은 사용자 워크로드의 기밀성을 투명하게 보호하는 동시에 쉽게 기존 Docker 애플리케이션으로 리프트 앤 시프트할 수 있습니다.
자세한 내용은 Occlum의 AKS의 배포 지침 및 샘플 앱을 참조하세요.
Marblerun
Marblerun은 기밀 컨테이너에 대한 오케스트레이션 프레임워크입니다. 기밀 서비스는 SGX 지원 Kubernetes에서 실행하고 크기 조정할 수 있습니다. Marblerun은 클러스터의 서비스 확인, 해당 서비스의 비밀 관리 및 이들 사이에 enclave 간 mTLS 연결 설정과 같은 상용구 작업을 처리합니다. 또한 Marblerun은 기밀 컨테이너 클러스터가 간단한 JSON에 정의된 매니페스트를 준수하도록 합니다. 외부 클라이언트에서 원격 증명을 통해 매니페스트를 확인할 수 있습니다.
이 프레임워크는 단일 enclave의 기밀성, 무결성 및 안정성 속성을 Kubernetes 클러스터로 확장합니다.
Marblerun은 각 SDK에 대한 예와 함께 Graphene, Occlum 및 EGo를 사용하여 만든 기밀 컨테이너를 지원합니다. 프레임워크는 기존 클라우드 네이티브 도구와 함께 Kubernetes에서 실행됩니다. CLI 및 helm 차트가 있습니다. Marblerun은 AKS의 기밀 컴퓨팅 노드도 지원합니다. Marblerun의 가이드에 따라 Marblerun을 AKS에 배포합니다.
기밀 컨테이너 참조 아키텍처
- Intel SGX 기밀 컨테이너를 사용하는 의료 참조 아키텍처 및 샘플에 대한 기밀 데이터 메시징
- Intel SGX 기밀 컨테이너를 사용하는 AKS에서 Apache Spark를 통해 기밀 빅 데이터 처리.
문의하기
구현에 대해 질문이 있나요? 기밀 컨테이너의 인에이블러가 되고 싶나요? acconaks@microsoft.com으로 이메일을 보내십시오.