신뢰할 수 있는 하드웨어 ID 관리

신뢰할 수 있는 하드웨어 ID 관리 서비스는 Azure에 상주하는 모든 TEE(신뢰할 수 있는 실행 환경)에 대한 인증서의 캐시 관리를 처리합니다. 또한 증명 솔루션에 대한 최소 기준을 적용하는 TCB(신뢰할 수 있는 컴퓨팅 기반) 정보를 제공합니다.

신뢰할 수 있는 하드웨어 ID 관리 및 증명 상호 작용

신뢰할 수 있는 하드웨어 ID 관리는 ACC(Azure 기밀 컴퓨팅) 노드에 대한 Azure 보안 기준을 정의하고 TEE 공급자의 참고 자료를 캐시합니다. 증명 서비스 및 ACC 노드는 캐시된 정보를 사용하여 TEE의 유효성을 검사할 수 있습니다. 다음 다이어그램은 증명 서비스 또는 노드, 신뢰할 수 있는 하드웨어 ID 관리 및 enclave 호스트 간의 상호 작용을 보여 줍니다.

Diagram that illustrates interactions between an attestation service or node, Trusted Hardware Identity Management, and an enclave host.

자주 묻는 질문

인텔 프로세서에서 신뢰할 수 있는 하드웨어 ID 관리를 어떻게 사용할 수 있나요?

Intel SGX 및 Intel TDX 견적을 생성하려면 Intel QGL(Quote Generation Library)에서 견적 생성/유효성 검사 참고 자료에 액세스해야 합니다. 이 참고 자료의 전부 또는 일부를 신뢰할 수 있는 하드웨어 ID 관리에서 가져와야 합니다. Intel QPL(Quote Provider Library) 또는 Azure DCAP(Data Center Attestation Primitives) 클라이언트 라이브러리를 사용하여 가져올 수 있습니다.

Microsoft Azure Attestation에서 사용하는 Azure 내부 캐싱 서비스 API의 “다음 업데이트” 날짜가 만료된 것으로 보입니다. 아직 작동 중이며 사용할 수 있나요?

tcbinfo 필드에는 TCB 정보가 포함됩니다. 신뢰할 수 있는 하드웨어 ID 관리 서비스는 기본적으로 이전 tcbinfo 정보를 제공합니다. Intel에서 최신 tcbinfo 정보로 업데이트하면 최신 Intel SDK로 마이그레이션하지 않은 고객에게 증명 실패가 발생하여 중단이 발생할 수 있습니다.

그러나 Open Enclave SDK 및 Azure Attestation은 nextUpdate 날짜를 보지 않으며 증명을 전달합니다.

Azure DCAP 라이브러리란?

Intel QPL(Quote Provider Library)을 바꾸는 Azure DCAP(Data Center Attestation Primitives)는 신뢰할 수 있는 하드웨어 ID 관리 서비스에서 직접 견적 생성 참고 자료 및 견적 유효성 검사 참고 자료를 페치합니다. 신뢰할 수 있는 하드웨어 ID 관리 서비스에서 직접 참고 자료를 페치하면 모든 Azure 호스트가 외부 종속성을 줄이기 위해 Azure 클라우드 내에서 쉽게 참고 자료를 사용할 수 있습니다. DCAP 라이브러리의 현재 권장 버전은 1.11.2입니다.

최신 Azure DCAP 라이브러리를 어디서 다운로드할 수 있나요?

다음 링크를 사용하여 패키지를 다운로드합니다.

최신 버전의 Ubuntu(예: Ubuntu 22.04)의 경우 Intel QPL을사용해야 합니다.

신뢰할 수 있는 하드웨어 ID 관리와 Intel의 기준이 다른 이유는 무엇인가요?

신뢰할 수 있는 하드웨어 ID 관리 및 Intel은 신뢰할 수 있는 컴퓨팅 기반의 다양한 기준 수준을 제공합니다. 고객이 Intel에 최신 기준이 있다고 가정하는 경우 모든 요구 사항이 충족되는지 확인해야 합니다. 고객이 지정된 요구 사항으로 업데이트하지 않은 경우 이 접근 방식이 중단될 수 있습니다.

신뢰할 수 있는 하드웨어 ID 관리는 TCB 기준을 업데이트하는 데 더 느린 접근 방식을 사용하므로 고객은 자신의 속도로 필요한 변경을 수행할 수 있습니다. 이 방법은 이전 TCB 기준을 제공하지만 고객은 새 TCB 기준의 요구 사항을 충족하지 않으면 중단이 발생하지 않습니다. 따라서 신뢰할 수 있는 하드웨어 ID 관리의 TCB 기준이 Intel의 기준과 다른 버전입니다. 고객이 업데이트하도록 강요하고 작업 흐름의 재지정을 요구하는 중단을 일으키는 대신 새로운 TCB 기준의 요구 사항을 빠르게 충족할 수 있도록 역량을 강화하려고 합니다.

Intel Xeon E 프로세서를 사용하면 Intel PCS에서 직접 인증서를 가져올 수 있습니다. 4세대부터 Intel Xeon 확장 가능한 프로세서를 사용하는 경우, 신뢰할 수 있는 하드웨어 ID 관리에서 인증서를 받아야 하는 이유는 무엇입니까? 그리고 어떻게 이러한 인증서를 가져올 수 있나요?

4세대 Intel® Xeon® 확장 가능한 프로세서부터 Azure는 플랫폼 매니페스트를 사용하여 Intel 등록 서비스에서 간접 등록을 수행하고 결과 PCK 인증서를 THIM(신뢰할 수 있는 하드웨어 ID 관리) 서비스에 저장합니다. 이 경우 Intel의 등록 서비스는 플랫폼에 대한 루트 키를 저장하지 않고 PCK 인증서의 CachedKeys 플래그에서 false이(가) 반영되기 때문에 Azure는 간접 등록을 사용합니다. 간접 등록이 사용되므로 Intel PCS에 대한 모든 다음 통신에는 Azure가 VM(가상 머신)에 제공하지 않는 플랫폼 매니페스트가 필요합니다. 대신 VM은 THIM에 연락하여 PCK 인증서를 받아야 합니다. PCK 인증서를 검색하려면 Intel QPL 또는 Azure DCAP 라이브러리를 사용할 수 있습니다.

신뢰할 수 있는 하드웨어 ID 관리에서 Intel QPL을 어떻게 사용할 수 있나요?

고객은 Microsoft에서 다른 종속성(즉, Azure DCAP 클라이언트 라이브러리)을 다운로드하지 않고도 Intel QPL을 사용하여 신뢰할 수 있는 하드웨어 ID 관리와 상호 작용할 수 있는 유연성을 원할 수 있습니다. 신뢰할 수 있는 하드웨어 ID 관리 서비스와 함께 Intel QPL을 사용하려는 고객은 Intel QPL 구성 파일인 sgx_default_qcnl.conf를 조정해야 합니다.

Intel SGX 또는 Intel TDX 견적을 생성하는 데 사용되는 견적 생성/확인 참고 자료를 다음으로 분할할 수 있습니다.

  • PCK 인증서입니다. 이를 검색하려면 고객은 신뢰할 수 있는 하드웨어 ID 관리 엔드포인트를 사용해야 합니다.
  • 기타 모든 견적 생성/확인 참고 자료입니다. 이를 검색하기 위해 고객은 신뢰할 수 있는 하드웨어 ID 관리 엔드포인트 또는 Intel PCS(Provisioning Certification Service) 엔드포인트를 사용할 수 있습니다.

Intel QPL 구성 파일(sgx_default_qcnl.conf)에는 참고 자료 엔드포인트를 정의하기 위한 세 가지 키가 포함되어 있습니다. pccs_url 키는 PCK 인증서를 검색하는 데 사용되는 엔드포인트를 정의합니다. collateral_service 키는 다른 모든 견적 생성/확인 참고 자료를 검색하는 데 사용되는 엔드포인트를 정의할 수 있습니다. collateral_service 키가 정의되지 않은 경우 pccs_url 키로 정의된 엔드포인트에서 모든 견정 확인 참고 자료가 검색됩니다.

다음 표에서는 이러한 키를 설정하는 방법을 보여줍니다.

이름 가능한 엔드포인트
pccs_url 신뢰할 수 있는 하드웨어 ID 관리 엔드포인트: https://global.acccache.azure.net/sgx/certification/v3.
collateral_service 신뢰할 수 있는 하드웨어 ID 관리 엔드포인트(https://global.acccache.azure.net/sgx/certification/v3) 또는 Intel PCS 엔드포인트. sgx_default_qcnl.conf 파일은 항상 collateral_service 키에서 최신 엔드포인트를 나열합니다.

다음 코드 조각은 Intel QPL 구성 파일의 예제입니다.

    { 
        "pccs_url": "https://global.acccache.azure.net/sgx/certification/v3/", 
        "use_secure_cert": true, 
        "collateral_service": "https://global.acccache.azure.net/sgx/certification/v3/",  
        "pccs_api_version": "3.1", 
        "retry_times": 6, 
        "retry_delay": 5, 
        "local_pck_url": "http://169.254.169.254/metadata/THIM/sgx/certification/v3/",
        "pck_cache_expire_hours": 24, 
        "verify_collateral_cache_expire_hours": 24, 
        "custom_request_options": { 
            "get_cert": { 
                "headers": { 
                    "metadata": "true" 
                }, 
                "params": { 
                    "api-version": "2021-07-22-preview" 
                } 
            } 
        } 
    }   

다음 절차에서는 Intel QPL 구성 파일을 변경하고 변경 내용을 활성화하는 방법을 설명합니다.

Windows

  1. 구성 파일을 변경합니다.

  2. 다음 레지스트리 위치 및 키/값에서 파일에 대한 읽기 권한이 있는지 확인합니다.

    [HKEY_LOCAL_MACHINE\SOFTWARE\Intel\SGX\QCNL]
    "CONFIG_FILE"="<Full File Path>"
    
  3. AESMD 서비스를 다시 시작합니다. 인스턴스의 경우 관리자 권한으로 PowerShell을 열고 다음 명령을 사용합니다.

    Restart-Service -Name "AESMService" -ErrorAction Stop
    Get-Service -Name "AESMService"
    

Linux

  1. 구성 파일을 변경합니다. 예를 들어 다음 명령을 통해 변경 내용에 Vim을 사용할 수 있습니다.

    sudo vim /etc/sgx_default_qcnl.conf
    
  2. AESMD 서비스를 다시 시작합니다. 터미널을 열고 다음 명령을 실행합니다.

    sudo systemctl restart aesmd 
    systemctl status aesmd 
    

기밀 가상 머신에서 어떻게 참고 자료를 요청하나요?

VCEK 인증서 및 인증서 체인을 포함하는 AMD 참고 자료를 요청하려면 CVM(기밀 가상 머신) 게스트에서 다음 샘플을 사용합니다. 이 참고 자료 및 원본 위치에 대한 자세한 내용은 VCEK(버전이 지정된 칩 인증 키) 인증서 및 KDS 인터페이스 사양을 참조하세요.

URI 매개 변수

GET "http://169.254.169.254/metadata/THIM/amd/certification"

요청 본문

이름 형식 설명
Metadata 부울 True(으)로 설정하면 참고 자료를 반환할 수 있습니다.

샘플 요청

curl GET "http://169.254.169.254/metadata/THIM/amd/certification" -H "Metadata: true"

응답

이름 설명
200 OK JSON 형식 내의 HTTP 본문에서 사용 가능한 참고 자료 목록
Other Status Codes 작업이 실패한 이유를 설명합니다.

정의

설명
VcekCert RFC 5280에 정의된 X.509v3 인증서입니다.
tcbm 신뢰할 수 있는 컴퓨팅 기반
certificateChain ASK(AMD SEV 키) 및 ARK(AMD 루트 키) 인증서

CVM 노드의 Azure Kubernetes Service Container에서 AMD 참고 자료를 요청하려면 어떻게 해야 하나요?

기밀 컨테이너에서 AMD 참고 자료를 요청하려면 다음 단계를 수행합니다.

  1. 먼저 CVM 노드에 AKS(Azure Kubernetes Service) 클러스터를 만들거나 기존 클러스터에 CVM 노드 풀을 추가합니다.

    • CVM 노드에 AKS 클러스터를 만듭니다.

      1. CVM 지원 영역 중 한 곳에 리소스 그룹을 만듭니다.

        az group create --resource-group <RG_NAME> --location <LOCATION> 
        
      2. 리소스 그룹에 CVM 노드가 하나인 AKS 클러스터를 만듭니다.

        az aks create --name <CLUSTER_NAME> --resource-group <RG_NAME> -l <LOCATION> --node-vm-size Standard_DC4as_v5 --nodepool-name <POOL_NAME> --node-count 1
        
      3. 클러스터에 연결하도록 kubectl을 구성합니다.

        az aks get-credentials --resource-group <RG_NAME> --name <CLUSTER_NAME> 
        
    • 기존 AKS 클러스터에 CVM 노드 풀을 추가합니다.

      az aks nodepool add --cluster-name <CLUSTER_NAME> --resource-group <RG_NAME> --name <POOL_NAME > --node-vm-size Standard_DC4as_v5 --node-count 1 
      
  2. kubectl get 명령을 사용하여 클러스터에 대한 연결을 확인합니다. 이 명령은 클러스터 노드 목록을 반환합니다.

    kubectl get nodes 
    

    다음 출력 예는 이전 단계에서 만들어진 단일 노드를 보여 줍니다. 노드 상태가 Ready인지 확인합니다.

    이름 상태 역할 나이 VERSION
    aks-nodepool1-31718369-0 준비 agent 6m44s v1.12.8
  3. 다음 콘텐츠가 포함된 curl.yaml 파일을 만듭니다. 신뢰할 수 있는 하드웨어 ID 관리 엔드포인트에서 AMD 참고 자료를 가져오는 curl 컨테이너를 실행하는 작업을 정의합니다. Kubernetes 작업에 대한 자세한 내용은 Kubernetes 설명서를 참조하세요.

    apiVersion: batch/v1 
    kind: Job 
    metadata: 
      name: curl 
    spec: 
      template: 
        metadata: 
          labels: 
            app: curl 
        spec: 
          nodeSelector: 
            kubernetes.azure.com/security-type: ConfidentialVM 
          containers: 
            - name: curlcontainer 
              image: alpine/curl:3.14 
              imagePullPolicy: IfNotPresent 
              args: ["-H", "Metadata:true", "http://169.254.169.254/metadata/THIM/amd/certification"] 
          restartPolicy: "Never" 
    

    curl.yaml 파일에는 다음 인수가 포함됩니다.

    이름 형식 설명
    Metadata 부울 True(으)로 설정하면 참고 자료를 반환할 수 있습니다.
  4. curl.yaml 파일을 적용하여 작업을 실행합니다.

    kubectl apply -f curl.yaml 
    
  5. Pod가 작업을 완료할 때까지 확인하고 기다립니다.

    kubectl get pods 
    

    다음은 응답의 예입니다.

    이름 준비 상태 Restarts 나이
    Curl-w7nt8 0/1 완료됨 0 72초
  6. 다음 명령을 실행하여 작업 로그를 가져와서 작동하는지 유효성을 검사합니다. 성공적인 출력에는 vcekCert, tcbmcertificateChain이(가) 포함되어야 합니다.

    kubectl logs job/curl  
    

다음 단계