Konfigurowanie zaświadczania dla funkcji Always Encrypted przy użyciu zaświadczania platformy Azure

Dotyczy:Azure SQL Database

Zaświadczanie platformy Microsoft Azure to rozwiązanie do zaświadczania o zaufanych środowiskach wykonywania (TEE), w tym enklawach Intel Software Guard Extensions (Intel SGX).

Aby użyć zaświadczania platformy Azure do zaświadczania enklaw Intel SGX używanych do funkcji Always Encrypted z bezpiecznymi enklawami w usłudze Azure SQL Database, należy:

  1. Utwórz dostawcę zaświadczania i skonfiguruj go przy użyciu zalecanych zasad zaświadczania.

  2. Określ adres URL zaświadczania i udostępnij go administratorom aplikacji.

Ważne

W przypadku enklaw Intel SGX w usłudze Azure SQL Database zaświadczenie jest obowiązkowe i wymaga zaświadczania platformy Microsoft Azure. Enklawy VBS w usłudze Azure SQL Database nie obsługują zaświadczania. Ten artykuł dotyczy tylko enklaw Intel SGX.

Uwaga

Konfigurowanie zaświadczania jest obowiązkiem administratora zaświadczania. Zobacz Role i obowiązki podczas konfigurowania enklaw Intel SGX i zaświadczania.

Tworzenie i konfigurowanie dostawcy zaświadczania

Dostawca zaświadczania to zasób w usłudze Azure Attestation, który ocenia żądania zaświadczania względem zasad zaświadczania i wystawia tokeny zaświadczania.

Zasady zaświadczania są określane przy użyciu gramatyki reguły oświadczenia.

Ważne

Dostawca zaświadczania jest tworzony przy użyciu domyślnych zasad enklaw Intel SGX, które nie weryfikuje kodu uruchomionego wewnątrz enklawy. Firma Microsoft zdecydowanie zaleca ustawienie zalecanych zasad używanych w poniższych danych wyjściowych, a nie używanie domyślnych zasad dla funkcji Always Encrypted z bezpiecznymi enklawami.

Firma Microsoft zaleca następujące zasady dotyczące zaświadczania enklaw Intel SGX używanych do funkcji Always Encrypted w usłudze Azure SQL Database:

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();
};

Zasady weryfikują:

  • Enklawa w usłudze Azure SQL Database nie obsługuje debugowania.

    Enklawy można załadować z wyłączonym lub włączonym debugowaniem. Obsługa debugowania została zaprojektowana tak, aby umożliwić deweloperom rozwiązywanie problemów z kodem uruchomionym w enklawie. W systemie produkcyjnym debugowanie może umożliwić administratorowi sprawdzenie zawartości enklawy, co zmniejszy poziom ochrony zapewnianej enklawy. Zalecane zasady wyłącza debugowanie, aby upewnić się, że jeśli złośliwy administrator spróbuje włączyć obsługę debugowania przez przejęcie maszyny enklawy, zaświadczenie zakończy się niepowodzeniem.

  • Identyfikator produktu enklawy jest zgodny z identyfikatorem produktu przypisanym do funkcji Always Encrypted z bezpiecznymi enklawami.

    Każda enklawa ma unikatowy identyfikator produktu, który odróżnia enklawę od innych enklaw. Identyfikator produktu przypisany do enklawy Always Encrypted to 4639.

  • Numer wersji zabezpieczeń (SVN) biblioteki jest większy lub równy 2.

    SvN umożliwia firmie Microsoft reagowanie na potencjalne błędy zabezpieczeń zidentyfikowane w kodzie enklawy. W przypadku wykrycia i rozwiązania problemu z zabezpieczeniami firma Microsoft wdroży nową wersję enklawy z nową (przyrostową) nazwą SVN. Zalecane zasady są aktualizowane w celu odzwierciedlenia nowej nazwy SVN. Aktualizując zasady tak, aby były zgodne z zalecanymi zasadami, można upewnić się, że jeśli złośliwy administrator spróbuje załadować starszą i niezabezpieczoną enklawę, zaświadczenie zakończy się niepowodzeniem.

  • Biblioteka w enklawie została podpisana przy użyciu klucza podpisywania firmy Microsoft (wartość oświadczenia x-ms-sgx-mrsigner jest skrótem klucza podpisywania).

    Jednym z głównych celów zaświadczania jest przekonanie klientów, że binarny uruchomiony w enklawie jest binarnym, który ma działać. Zasady zaświadczania zapewniają dwa mechanizmy w tym celu. Jednym z nich jest twierdzenie mrenclave , który jest skrótem binarnego, który ma działać w enklawie. Problem z mrenclave polega na tym, że skrót binarny zmienia się nawet z trywialnymi zmianami w kodzie, co utrudnia odwrócenie kodu uruchomionego w enklawie. W związku z tym zalecamy użycie elementu mrsigner, który jest skrótem klucza używanego do podpisywania enklawy binarnej. Gdy firma Microsoft cofa enklawę, element mrsigner pozostaje taki sam, jak długo, gdy klucz podpisywania nie ulegnie zmianie. W ten sposób można wdrożyć zaktualizowane pliki binarne bez przerywania aplikacji klientów.

Ważne

Firma Microsoft może wymagać rotacji klucza użytego do podpisania pliku binarnego enklawy Always Encrypted, co może być rzadkim zdarzeniem. Przed wdrożeniem nowej wersji pliku binarnego enklawy podpisanej przy użyciu nowego klucza w usłudze Azure SQL Database ten artykuł zostanie zaktualizowany w celu udostępnienia nowych zalecanych zasad zaświadczania i instrukcji dotyczących sposobu aktualizowania zasad u dostawców zaświadczania w celu zapewnienia, że aplikacje będą nadal działać nieprzerwanie.

Aby uzyskać instrukcje dotyczące tworzenia dostawcy zaświadczania i konfigurowania przy użyciu zasad zaświadczania przy użyciu:

Określanie adresu URL zaświadczania dla zasad zaświadczania

Po skonfigurowaniu zasad zaświadczania należy udostępnić adres URL zaświadczania administratorom aplikacji korzystających z funkcji Always Encrypted z bezpiecznymi enklawami w usłudze Azure SQL Database. Adres URL zaświadczania to Attest URI dostawca zaświadczania zawierający zasady zaświadczania, które wyglądają następująco: https://MyAttestationProvider.wus.attest.azure.net.

Określanie adresu URL zaświadczania przy użyciu witryny Azure Portal

W okienku Przegląd dostawcy zaświadczania skopiuj wartość Attest URI właściwości do schowka.

Określanie adresu URL zaświadczania przy użyciu programu PowerShell

Get-AzAttestation Użyj polecenia cmdlet , aby pobrać właściwości dostawcy zaświadczania, w tym AttestURI.

Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName

Aby uzyskać więcej informacji, zobacz Tworzenie dostawcy zaświadczania i zarządzanie nim.

Następne kroki

Zobacz też