기본 개념

다음은 Microsoft Azure Attestation과 관련된 몇 가지 기본 개념입니다.

JWT(JSON 웹 토큰)

JWT(JSON Web Token)는 당사자 간에 정보를 JSON(JavaScript Object Notation) 개체로 안전하게 전송하기 위한 개방형 표준 RFC7519 방법입니다. 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀 또는 공개/프라이빗 키 쌍을 사용하여 서명할 수 있습니다.

JWK(JSON 웹 키)

JWK(JSON 웹 키 )는 암호화 키를 나타내는 JSON 데이터 구조입니다. 또한 이 사양은 JWK 세트를 나타내는 JWK 세트 JSON 데이터 구조도 정의합니다.

증명 공급자

증명 공급자는 Microsoft.Attestation이라는 Azure 리소스 공급자에 속합니다. 리소스 공급자는 Azure Attestation REST 계약을 제공하고 Azure Resource Manager를 사용하여 배포되는 서비스 엔드포인트입니다. 각 증명 공급자는 검색 가능한 특정 정책을 적용합니다. 증명 공급자는 각 증명 형식에 대한 기본 정책을 사용하여 만들어집니다(VBS enclave에는 기본 정책이 없음). SGX의 기본 정책에 대한 자세한 내용은 증명 정책의 예제를 참조하세요.

증명 요청

증명 요청은 클라이언트 애플리케이션에서 증명 공급자에게 보낸 직렬화된 JSON 개체입니다. SGX enclave에 대한 요청 개체에는 두 가지 속성이 있습니다.

  • "Quote" – "Quote" 속성의 값은 증명 따옴표의 Base64URL로 인코딩된 표현을 포함하는 문자열입니다.
  • "EnclaveHeldData" – "EnclaveHeldData" 속성의 값은 Enclave 보유 데이터의 Base64URL로 인코딩된 표현을 포함하는 문자열입니다.

Azure Attestation은 제공된 "견적"의 유효성을 검사한 다음 제공된 Enclave 보유 데이터의 SHA256 해시가 견적에 있는 reportData 필드의 처음 32바이트로 표현되는지 확인합니다.

증명 정책

증명 정책은 증명 증거를 처리하는 데 사용되며 고객이 구성할 수 있습니다. Azure Attestation의 핵심에는 증거를 구성하는 클레임을 처리하는 정책 엔진이 있습니다. 정책은 Azure Attestation이 증거에 따라 증명 토큰을 발급할지 여부를 결정하는 데 사용되며, 이에 따라 Attester를 보증합니다(또는 그렇지 않음). 따라서 모든 정책을 전달하지 않으면 JWT 토큰이 발급되지 않습니다.

증명 공급자의 기본 정책이 요구 사항을 충족하지 않는 경우 고객은 Azure Attestation에서 지원하는 모든 지역에서 사용자 지정 정책을 만들 수 있습니다. 정책 관리는 Azure Attestation에서 고객에게 제공하는 주요 기능입니다. 정책은 특정 증명 유형이며 enclave를 식별하거나 출력 토큰에 클레임을 추가하거나 출력 토큰에서 클레임을 수정하는 데 사용할 수 있습니다.

증명 정책의 예제를 참조하세요 .

정책 서명의 이점

증명 정책은 궁극적으로 Azure Attestation에서 증명 토큰을 발급할지 여부를 결정합니다. 또한 정책은 증명 토큰에서 생성될 클레임을 결정합니다. 따라서 서비스에서 평가하는 정책은 실제로 관리자가 작성한 정책이며 외부 엔터티에 의해 변조되거나 수정되지 않은 것이 가장 중요합니다.

신뢰 모델은 증명 공급자의 권한 부여 모델을 정의하여 정책을 정의하고 업데이트합니다. 두 가지 모델이 지원됩니다. 하나는 Microsoft Entra 권한 부여를 기반으로 하고 하나는 고객 관리형 암호화 키(격리된 모델이라고 함)의 소유를 기반으로 합니다. 격리된 모델을 사용하면 고객이 제출한 정책이 변조되지 않도록 Azure Attestation을 사용할 수 있습니다.

격리된 모델에서 관리자는 신뢰할 수 있는 서명 X.509 인증서 세트를 지정하는 증명 공급자를 파일에 만듭니다. 그런 다음 관리자는 증명 공급자에 서명된 정책을 추가할 수 있습니다. 증명 요청을 처리하는 동안 Azure Attestation은 헤더의 "jwk" 또는 "x5c" 매개 변수로 표시되는 공개 키를 사용하여 정책 서명의 유효성을 검사합니다. 또한 Azure Attestation은 요청 헤더의 공개 키가 증명 공급자와 연결된 신뢰할 수 있는 서명 인증서 목록에 있는지 확인합니다. 이러한 방식으로 신뢰 당사자(Azure Attestation)는 알고 있는 X.509 인증서를 사용하여 서명된 정책을 신뢰할 수 있습니다.

샘플은 정책 서명자 인증서 예제를 참조하세요.

증명 토큰

Azure Attestation 응답은 값에 JWT가 포함된 JSON 문자열입니다. Azure Attestation은 클레임을 패키지하고 서명된 JWT를 생성합니다. 서명 작업은 증명 공급자의 AttestUri 요소와 일치하는 주체 이름과 함께 자체 서명된 인증서를 사용하여 수행됩니다.

OpenID 메타데이터 가져오기 API는 OpenID Connect 검색 프로토콜에서 지정한 대로 OpenID 구성 응답을 반환합니다. API는 Azure Attestation에서 사용 중인 서명 인증서에 대한 메타데이터를 검색합니다.

증명 토큰의 예를 참조하세요.

미사용 데이터의 암호화

고객 데이터를 보호하기 위해 Azure Attestation은 해당 데이터를 Azure Storage에 유지합니다. Azure Storage는 데이터 센터에 기록된 미사용 데이터의 암호화를 제공하고 고객이 액세스할 수 있도록 암호를 해독합니다. 이 암호화는 Microsoft 관리형 암호화 키를 사용하여 수행됩니다.

Azure Attestation은 Azure Storage에서 데이터를 보호하는 것 외에도 ADE(Azure Disk Encryption)를 활용하여 서비스 VM을 암호화합니다. Azure 기밀 컴퓨팅 환경의 Enclave에서 실행되는 Azure Attestation의 경우 ADE 확장은 현재 지원되지 않습니다. 이러한 시나리오에서는 데이터가 메모리 내에 저장되지 않도록 페이지 파일을 사용할 수 없습니다.

Azure Attestation 인스턴스 로컬 하드 디스크 드라이브에 고객 데이터가 유지되지 않습니다.

다음 단계