다음을 통해 공유


Azure Attestation을 사용하여 Always Encrypted에 대한 증명 구성

적용 대상: Azure SQL 데이터베이스

Microsoft Azure Attestation은 Intel SGX(Software Guard Extensions) enclave와 같은 다양한 유형의 TEE(신뢰 실행 환경) 증명을 위한 통합 솔루션입니다.

Azure SQL 데이터베이스의 보안 enclave를 사용하여 Always Encrypted에 사용되는 Intel SGX enclave를 Azure Attestation을 사용하여 증명하려면 다음을 수행해야 합니다.

  1. 증명 공급자를 만들고 권장되는 증명 정책을 사용하여 구성합니다.

  2. 증명 URL을 확인하고 애플리케이션 프로그램 관리자와 공유합니다.

Important

Azure SQL 데이터베이스에서 Intel SGX enclave를 사용하는 경우 증명은 필수이며 Microsoft Azure Attestation을 사용해야 합니다. Azure SQL 데이터베이스 VBS enclave는 증명을 지원하지 않습니다. 이 문서는 Intel SGX enclave에만 적용됩니다.

참고 항목

증명 관리자는 증명 구성을 책임져야 합니다. Intel SGX enclave 및 증명 구성 역할 및 책임을 참조하세요.

증명 공급자 만들기 및 구성

증명 공급자증명 정책 및 문제 증명 토큰에 대한 증명 요청을 평가하는 Azure Attestation 리소스입니다.

증명 정책은 클레임 규칙 문법을 사용하여 지정됩니다.

Important

증명 공급자는 enclave 내에서 실행되는 코드의 유효성을 검사하지 않는 Intel SGX enclave의 기본 정책을 사용하여 만들어집니다. Microsoft는 보안 enclave를 사용하는 Always Encrypted에 대해 기본 정책이 아닌 위의 권장 정책을 설정할 것을 강력하게 권고합니다.

Azure SQL 데이터베이스에서 Always Encrypted에 사용되는 증명 Intel SGX enclave에 대해 다음 정책을 권장합니다.

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();

       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="a0f8e7f72092fb6a5d5752ffccd47fb3af7027ffb589b24e921e81f5703f3a9a"]
    => permit();
};

위의 정책은 다음을 확인합니다.

  • Azure SQL 데이터베이스 내의 enclave는 디버깅을 지원하지 않습니다.

    enclave는 디버깅을 사용하지 않도록 또는 사용하도록 설정하여 로드할 수 있습니다. 디버깅 지원은 개발자가 enclave에서 실행되는 코드 문제를 해결할 수 있도록 설계되었습니다. 프로덕션 시스템에서 디버깅을 사용하면 관리자가 enclave의 콘텐츠를 확인할 수 있게 되므로 enclave가 제공하는 보호 수준이 감소할 수 있습니다. 권장되는 정책은 악의적인 관리자가 enclave 컴퓨터를 넘겨받아 디버깅 지원을 켜려고 하면 증명에 실패하도록 디버깅을 사용하지 않도록 설정하는 것입니다.

  • Enclave 제품 ID는 보안 enclave를 사용하여 Always Encrypted에 할당된 제품 ID와 일치합니다.

    각 enclave에는 다른 enclave의 enclave를 차별화하는 고유한 제품 ID가 있습니다. Always Encrypted enclave에 할당된 제품 ID는 4639입니다.

  • 라이브러리의 SVN(보안 버전 번호)은 2보다 크거나 같습니다.

    SVN을 사용하면 Microsoft가 enclave 코드에서 식별된 잠재적인 보안 버그에 대응할 수 있습니다. 보안 문제가 발견되고 해결되는 경우 Microsoft는 새(증분) SVN을 사용하여 enclave의 새 버전을 배포합니다. 권장 정책은 새 SVN을 반영하도록 업데이트됩니다. 권장 정책과 일치하도록 정책을 업데이트하면 악의적인 관리자가 이전 버전 및 안전하지 않은 enclave를 로드하지 못하게 할 수 있습니다.

  • Enclave 라이브러리는 Microsoft 서명 키를 사용하여 서명됩니다(x-ms-sgx-mrsigner 클레임의 값은 서명 키의 해시).

    증명의 주요 목표 중 하나는 enclave에서 실행 중인 이진이 실행되어야 하는 이진임을 클라이언트에게 확신시키는 것입니다. 증명 정책은 다음 목적으로 두 가지 메커니즘을 제공합니다. 하나는 enclave에서 실행되어야 하는 이진 파일의 해시인 mrenclave 클레임입니다. mrenclave의 문제는 이진 해시가 사소한 코드 변경 사항에도 변경되므로 enclave에서 실행되는 코드를 개정하기가 어렵다는 것입니다. 따라서 enclave 이진 파일에 서명하는 데 사용되는 키의 해시인 mrsigner를 사용할 것을 권장합니다. Microsoft가 enclave를 시작할 때 서명 키가 변경되지 않는 한 mrsigner는 동일하게 유지됩니다. 이렇게 하면 고객의 애플리케이션을 중단하지 않고 업데이트된 이진 파일을 배포할 수 있습니다.

Important

매우 드문 일이지만 Microsoft가 Always Encrypted enclave 이진 파일 서명 키를 바꿀 수도 있습니다. 이 문서는 새 키로 서명된 enclave 이진 파일의 새 버전이 Azure SQL 데이터베이스에 배포되기 전에 새 권장 증명 정책 및 증명 공급자에서 정책을 업데이트하여 애플리케이션이 중단 없이 계속 작동하도록 하는 방법에 대한 지침을 제공하도록 업데이트됩니다.

다음을 사용하여 증명 정책을 기반으로 증명 공급자 만들기 및 구성하기.

증명 정책의 증명 URL 확인

증명 정책을 구성한 후에는 Azure SQL 데이터베이스 보안 enclave와 Always Encrypted를 사용하는 애플리케이션의 관리자와 증명 URL을 공유해야 합니다. 증명 URL은 다음과 같은 https://MyAttestationProvider.wus.attest.azure.net 증명 정책을 포함하는 증명 공급자의 Attest URI입니다.

Azure portal을 통한 증명 URL 확인

증명 공급자에 대한 개요 창에서 Attest URI 속성 값을 클립보드에 복사합니다.

PowerShell을 사용하여 증명 URL 확인

Get-AzAttestation cmdlet을 사용하여 AttestURI를 비롯한 증명 공급자 속성을 검색합니다.

Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName

자세한 내용은 증명 공급자 만들기 및 관리를 참조하세요.

다음 단계

참고 항목