다음을 통해 공유


ACI(Azure Container Instance)에서 기밀 컨테이너를 사용하여 키 릴리스 보호

기밀 컨테이너 제품과 함께 AKV(Azure Key Vault)를 사용한 SKR(보안 키 릴리스) 흐름은 몇 가지 방법으로 구현할 수 있습니다. 기밀 컨테이너는 DLB(Direct Linux Boot)라고 하는 필요한 Hyper-V 관련 패치가 있는 게스트 펌웨어를 사용하는 Linux 커널을 통해 AMD SEV-SNP 디바이스를 노출하는 게스트를 실행합니다. 이 플랫폼은 AMD SEV-SNP가 지원되는 vTPM 및 HCL 기반 기밀 VM을 사용하지 않습니다. 이 개념 문서에서는 사용자가 기밀 컴퓨팅 SKU를 선택하여 Azure Container Support에서 컨테이너를 실행할 계획이라고 가정합니다.

  • Azure에서 제공하는 사이드카 도우미 컨테이너
  • 컨테이너 애플리케이션을 사용한 사용자 지정 구현

Azure에서 제공하는 사이드카 도우미 컨테이너

오픈 소스 GitHub 프로젝트 "기밀 사이드카"는 이 컨테이너를 빌드하는 방법과 이 사이드카 컨테이너를 준비하고 실행하는 데 필요한 매개 변수/환경 변수를 자세히 설명합니다. 현재 사이드카 구현은 기본 애플리케이션 컨테이너가 AKV에서 키를 가져오는 데 사용할 수 있는 다양한 HTTP REST API를 제공합니다. MAA(Microsoft Azure Attestation)를 통한 통합은 이미 기본 제공됩니다. 사이드카 SKR 컨테이너를 실행하는 준비 단계는 여기에서 자세히 확인할 수 있습니다.

기본 애플리케이션 컨테이너 애플리케이션은 아래 예제에 정의된 대로 사이드카 WEB API 엔드포인트를 호출할 수 있습니다. 사이드카는 동일한 컨테이너 그룹 내에서 실행되며 애플리케이션 컨테이너에 대한 로컬 엔드포인트입니다. API의 전체 세부 정보는 여기에서 찾을 수 있습니다.

key/release POST 메서드는 다음 형식의 JSON이 필요합니다.

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

성공하면 key/release POST 메서드 응답은 StatusOK 헤더와 다음 형식의 페이로드를 전달합니다.

{
    "key": "<key in JSON Web Key format>"
}

오류가 발생하면 key/release POST 메서드 응답은 StatusForbidden 헤더와 다음 형식의 페이로드를 전달합니다.

{
    "error": "<error message>"
}

컨테이너 애플리케이션을 사용한 사용자 지정 구현

AKV(Azure Key Vault) - 보안 키 릴리스 및 MAA(Microsoft Azure Attestation)의 기능을 확장하는 사용자 지정 컨테이너 애플리케이션을 수행하려면 다음 내용을 개괄적인 참조 흐름으로 사용합니다. 쉬운 방법은 이 사이드카 GitHub 프로젝트에서 현재 사이드카 구현 코드를 검토하는 것입니다.

수행해야 하는 앞서 언급한 작업의 이미지.

  1. 1단계: 내보내기 가능한 키를 사용하여 AKV를 설정하고 릴리스 정책을 연결합니다. 여기에서 자세히 알아보세요.
  2. 2단계: Microsoft Entra ID를 사용하여 관리 ID를 설정하고 AKV에 연결합니다. 여기에서 자세히 알아보세요.
  3. 3단계: 기밀 컴퓨팅 적용 정책을 설정하여 ACI 내에서 필수 매개 변수를 사용하여 컨테이너 애플리케이션을 배포합니다. 여기에서 자세히 알아보세요.
  4. 4단계: 이 단계에서 애플리케이션은 IOCTL Linux 소켓 호출을 수행하여 RAW AMD SEV-SNP 하드웨어 보고서를 가져옵니다. 이 작업을 수행하기 위해 게스트 증명 라이브러리가 필요하지는 않습니다. 기존 사이드카 구현에 대한 자세한 정보
  5. 5단계: 컨테이너 그룹에 대한 AMD SEV-SNP 인증서 체인을 가져옵니다. 이러한 인증서는 Azure 호스트 IMDS 엔드포인트에서 제공됩니다. 여기에서 자세히 알아보세요.
  6. 6단계: 확인 및 반환 클레임을 위해 MAA에 SNP RAW 하드웨어 보고서 및 인증서 세부 정보를 보냅니다. 여기에서 자세히 알아보세요.
  7. 7단계: 키 릴리스를 위해 ACI에서 생성된 MAA 토큰 및 관리 ID 토큰을 AKV로 보냅니다. 여기에서 자세히 알아보세요.

AKV에서 키 가져오기가 성공하면 데이터 세트의 암호를 해독하기 위해 키를 사용하거나 기밀 컨테이너 환경에서 나가는 데이터를 암호화할 수 있습니다.

참조

기밀 컨테이너 배포를 사용하는 ACI

암호화된 Blob 가져오기 및 SKR AKV 키로 암호 해독을 통해 사이드카 구현

기밀 VM의 AMD SEV-SNP를 사용한 AKV SKR

MAA(Microsoft Azure Attestation)

SKR 정책 예제