Dela via


Självstudie: Komma igång med Always Encrypted med Intel SGX-enklaver i Azure SQL Database

gäller för:Azure SQL Database

I den här självstudien lär du dig hur du kommer igång med Always Encrypted med säkra enklaver i Azure SQL Database. Du använder Intel Software Guard-tillägg (Intel SGX) enclaves. Den visar dig:

  • Så här skapar du en miljö för testning och utvärdering av Always Encrypted med Intel SGX-enklaver.
  • Så här krypterar du data på plats och utfärdar omfattande konfidentiella frågor mot krypterade kolumner med hjälp av SQL Server Management Studio (SSMS).

Förutsättningar

PowerShell-krav

Anmärkning

Kraven som anges i det här avsnittet gäller endast om du väljer att använda PowerShell för några av stegen i den här självstudien. Om du planerar att använda Azure-portalen i stället kan du hoppa över det här avsnittet.

Az PowerShell-modul version 9.3.0 eller senare krävs. Mer information om hur du installerar Az PowerShell-modulen finns i Installera Azure Az PowerShell-modulen. Kör följande kommando från PowerShell för att fastställa vilken version av Az PowerShell-modulen som är installerad på datorn.

Get-InstalledModule -Name Az

Steg 1: Skapa och konfigurera en server och en databas i DC-serien

I det här steget skapar du en ny logisk Azure SQL Database-server och en ny databas med DC-seriens maskinvara, vilket krävs för Always Encrypted med säkra enklaver. Mer information finns i DC-serien.

  1. Bläddra till sidan Välj SQL-distributionsalternativ .

  2. Om du inte redan är inloggad på Azure-portalen loggar du in när du uppmanas att göra det.

  3. Under SQL-databaserlåter du resurstyp vara inställd på Enkel databasoch väljer Skapa.

  4. På fliken Grundläggande i formuläret Skapa SQL Database går du till Projektinformationoch väljer önskad Azure -prenumeration.

  5. För Resursgruppväljer du Skapa ny, anger ett namn för resursgruppen och väljer OK.

  6. För Databasnamn anger du ContosoHR.

  7. För Serverväljer du Skapa nyoch fyller i formuläret Ny server med följande värden:

    • Servernamn: Ange mysqlserveroch lägg till några tecken för unikhet. Vi kan inte ange ett exakt servernamn att använda eftersom servernamn måste vara globalt unika för alla servrar i Azure, inte bara unika i en prenumeration. Så ange något som mysqlserver135, och portalen meddelar dig om det är tillgängligt eller inte.
    • Plats: Välj en plats i listrutan.

      Viktigt!

      Du måste välja en plats (en Azure-region) som stöder både DC-seriens maskinvara och Microsoft Azure Attestation. En lista över regioner som stöder DC-serien finns i TILLGÄNGLIGHET för DC-serien. Här är den regionala tillgängligheten för Microsoft Azure-attestering.

    • Autentiseringsmetod: Välj Använd SQL-autentisering
    • Inloggning för serveradministratör: Ange ett administratörsinloggningsnamn, till exempel azureuser.
    • Lösenord: Ange ett lösenord som uppfyller kraven och ange det igen i fältet Bekräfta lösenord.
    • Välj OK.
  8. Skippa Vill du använda elastisk SQL-pool inställd på Nej.

  9. Under Beräkning + lagring väljer du Konfigurera databas och sedan Ändra konfiguration.

    Skärmbild av maskinvarukonfigurationen i Azure-portalen och var databasen ska konfigureras.

  10. Välj maskinvarukonfigurationen i DC-serien och välj sedan OK.

  11. Välj Använd.

  12. På fliken Grundläggande kontrollerar du att Compute + Storage är inställt på Generell användning, DC, 2 virtuella kärnor, 32 GB lagring.

  13. För Redundans för säkerhetskopieringslagring väljer du Lokalt redundant lagring av säkerhetskopior.

  14. Välj Nästa: Nätverk längst ned på sidan.

    Skärmbild av Azure-portalen som visar Konfigurera DC-seriens databas – grunderna.

  15. På fliken Nätverk väljer du offentlig slutpunktför Anslutningsmetod.

  16. För brandväggsregleranger du Lägg till aktuell klient-IP-adress till Ja. Låt Tillåt att Azure-tjänster och resurser får åtkomst till den här servern anges till Nej.

  17. För Anslutningsprincip lämnar du Anslutningsprincipen till Standard – Använder omdirigeringsprincip för alla klientanslutningar som kommer från Azure och Proxy för alla klientanslutningar som kommer från utanför Azure

  18. För Krypterade anslutningar lämnar du Lägsta TLS-version till TLS 1.2.

  19. Välj Granska och skapa längst ned på sidan.

    Skärmbild av fliken Skapa SQL Database, nätverk i Azure-portalen.

  20. På sidan Granska + skapa, efter granskning, väljer du Skapa.

Steg 2: Konfigurera en attesteringsleverantör

I det här steget skapar och konfigurerar du en attesteringsprovider i Microsoft Azure Attestation. Detta krävs för att intyga den säkra enklaven som databasen använder.

  1. Bläddra till sidan Skapa attesteringsleverantör.

  2. På sidan Skapa attesteringsprovider anger du följande indata:

    • Prenumeration: Välj samma prenumeration som du skapade den logiska Azure SQL-servern i.
    • Resursgrupp: Välj samma resursgrupp som du skapade den logiska Azure SQL-servern i.
    • Namn: Ange myattestprovider och lägg till några tecken för unikhet. Vi kan inte ange ett exakt attesteringsprovidernamn att använda eftersom namn måste vara globalt unika. Så ange något som myattestprovider12345, och portalen meddelar dig om det är tillgängligt eller inte.
    • Plats: Välj samma plats som din logiska Azure SQL-server.
    • Policy-signeringscertifikatfil: Lämna det här fältet tomt eftersom du konfigurerar en osignerad policy.
  3. När du har angett den information som krävs väljer du Granska + skapa.

    Skärmbild av menyn Skapa attesteringsprovider i Azure-portalen.

  4. Välj Skapa.

  5. När attesteringsprovidern har skapats väljer du Gå till resurs.

  6. På fliken Översikt för attesteringsleverantören kopierar du värdet av egenskapen Attest URI till Urklipp och sparar det i en fil. Det här är attesterings-URL:en. Du behöver i senare steg.

  7. Välj Princip på resursmenyn till vänster i fönstret eller i det nedre fönstret.

  8. Ange Attesteringstyp till SGX-IntelSDK.

  9. Välj Konfigurera på den övre menyn.

    Skärmbild av konfigurationen av attesteringsprincipen i Azure-portalen.

  10. Ange Policyformat till Text. Låt Principalternativ vara inställda på Ange princip.

  11. I fältet Principtext ersätter du standardprincipen med följande princip. Mer information finns i Skapa och konfigurera en attesteringsprovider.

    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();
    };
    
  12. Välj Spara.

    Skärmbild av redigering av en attesteringsprincip i Azure-portalen.

  13. Välj Uppdatera på den övre menyn för att visa den konfigurerade principen.

Steg 3: Fyll i databasen

I det här steget skapar du en tabell och fyller den med vissa data som du senare krypterar och frågar efter.

  1. Öppna SSMS och anslut till ContosoHR-databasen på den logiska Azure SQL-servern som du skapade utan Always Encrypted aktiverat i databasanslutningen.

    1. I dialogrutan Anslut till server anger du det fullständigt kvalificerade namnet på servern (till exempel myserver135.database.windows.net) och anger administratörsanvändarnamnet och lösenordet som du angav när du skapade servern.

    2. Välj Alternativ >> och välj fliken Anslutningsegenskaper. Se till att välja ContosoHR- databas (inte standarddatabasen master).

    3. Välj fliken Always Encrypted.

    4. Kontrollera att kryssrutan Aktivera Always Encrypted (kolumnkryptering) inte är markerad .

      Skärmbild av Anslut till server med SSMS utan Always Encrypted aktiverat.

    5. Välj Anslut.

  2. Skapa en ny tabell med namnet Employees.

    CREATE SCHEMA [HR];
    GO
    
    CREATE TABLE [HR].[Employees]
    (
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
        [SSN] [char](11) NOT NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [Salary] [money] NOT NULL
    ) ON [PRIMARY];
    GO
    
  3. Lägg till några poster om medarbetare i tabellen Employees.

    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('795-73-9838'
            , N'Catherine'
            , N'Abel'
            , $31692);
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('990-00-6818'
            , N'Kim'
            , N'Abercrombie'
            , $55415);
    

Steg 4: Etablera enklaveraktiverade nycklar

I det här steget skapar du en kolumnhuvudnyckel och en kolumnkrypteringsnyckel som tillåter enklaverberäkningar.

  1. Med hjälp av SSMS-instansen från föregående steg i Object Explorerexpanderar du databasen och navigerar till Security>Always Encrypted Keys.

  2. Etablera en ny huvudnyckel för enklaveraktiverad kolumn:

    1. Högerklicka på Always Encrypted Keys och välj Ny kolumnhuvudnyckel....
    2. Ange ett namn för den nya kolumnhuvudnyckeln: CMK1.
    3. Kontrollera Tillåt enklaverberäkningar har valts. (Den väljs som standard om en säker enklav är aktiverad för databasen. Den bör vara aktiverad eftersom databasen använder maskinvarukonfigurationen i DC-serien.)
    4. Välj antingen Azure Key Vault (rekommenderas) eller Windows Certificate Store (aktuell användare eller lokal dator).
      • Om du väljer Azure Key Vault loggar du in på Azure, väljer en Azure-prenumeration som innehåller ett nyckelvalv som du vill använda och väljer ditt nyckelvalv. Välj Generera nyckel för att skapa en ny nyckel.
      • Om du väljer Windows Certificate Store väljer du knappen Generera certifikat för att skapa ett nytt certifikat. Skärmbilden av valet tillåt enklavberäkningar i SSMS när du skapar en ny kolumnhuvudnyckel.
    5. Välj OK.
  3. Skapa en ny enklavaktiverad kolumnkrypteringsnyckel:

    1. Högerklicka på Always Encrypted Keys och välj ny kolumnkrypteringsnyckel.
    2. Ange ett namn för den nya kolumnkrypteringsnyckeln: CEK1.
    3. I listrutan Kolumnhuvudnyckel väljer du den kolumnhuvudnyckel som du skapade i föregående steg.
    4. Välj OK.

Steg 5: Kryptera vissa kolumner på plats

I det här steget krypterar du data som lagras i kolumnerna SSN och Salary i enklaven på serversidan och testar sedan en SELECT-fråga på data.

  1. Öppna en ny SSMS-instans och anslut till databasen med Always Encrypted aktiverat för databasanslutningen.

    1. Starta en ny instans av SSMS.

    2. I dialogrutan Anslut till server anger du det fullständigt kvalificerade namnet på servern (till exempel <server name>.database.windows.net), och anger administratörsanvändarnamnet och lösenordet som du angav när du skapade servern.

    3. Välj Alternativ >> och välj fliken Anslutningsegenskaper. Se till att välja ContosoHR- databas (inte standarddatabasen master).

    4. Välj fliken Always Encrypted.

    5. Markera kryssrutan Aktivera Always Encrypted (kolumnkryptering).

    6. Välj Aktivera säkra enklaver. (Det här steget gäller för SSMS 19 eller senare.)

    7. Ange Protokoll till Microsoft Azure Attestation. (Det här steget gäller för SSMS 19 eller senare.)

    8. Ange din URL för enklav-intygande som du har erhållit genom att följa stegen i Steg 2: Konfigurera en attesteringstjänst.

      Skärmbild av fliken Anslut till server i SSMS-dialogrutan Always Encrypted med attestering aktiverat.

    9. Välj Anslut.

    10. Om du uppmanas att aktivera parameterisering för Always Encrypted-frågor väljer du Aktivera.

  2. Med samma SSMS-instans (med Always Encrypted aktiverat) öppnar du ett nytt frågefönster och krypterar kolumnerna SSN och Salary genom att köra följande T-SQL-instruktioner:

    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Anmärkning

    Observera instruktionen ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE för att rensa frågeplanens cacheminne för databasen i skriptet ovan. När du har ändrat tabellen måste du rensa planerna för alla batchar och lagrade procedurer som har åtkomst till tabellen för att uppdatera krypteringsinformation för parametrar.

  3. Kontrollera att kolumnerna SSN och Salary nu är krypterade genom att öppna ett nytt frågefönster i SSMS-instansen utan Always Encrypted aktiverat för databasanslutningen och köra följande instruktion. Frågefönstret ska returnera krypterade värden i kolumnerna SSN och Salary . Om du kör samma fråga med SSMS-instansen med Always Encrypted aktiverat bör du se dekrypterade data.

    SELECT * FROM [HR].[Employees];
    

Steg 6: Kör omfattande frågor mot krypterade kolumner

Du kan köra omfattande frågor mot de krypterade kolumnerna. En del frågebearbetning utförs i din säkra miljö i serversidan.

  1. I SSMS-instansen med Always Encrypted aktiverat kontrollerar du att parameterisering för Always Encrypted också är aktiverad.

    1. Välj Verktyg på huvudmenyn i SSMS.
    2. Välj alternativ....
    3. Gå till Frågekörning>SQL Server>Avancerad.
    4. Kontrollera att Aktivera parameterisering för Always Encrypted är markerat.
    5. Välj OK.
  2. Öppna ett nytt frågefönster, klistra in följande fråga och kör. Frågan ska returnera oformaterade värden och rader som uppfyller de angivna sökvillkoren.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Försök med samma fråga igen i SSMS-instansen som inte har Always Encrypted aktiverat. Ett fel kan inträffa.

Handledningar

När du har slutfört den här självstudien kan du fortsätta med någon av följande självstudier: