Tutorial: Mulai menggunakan Always Encrypted dengan enklave Intel SGX di Azure SQL Database

Berlaku untuk:Azure SQL Database

Tutorial ini menjelaskan cara mulai menggunakan Always Encrypted with secure enclaves di Azure SQL Database. Anda menggunakan enklave Intel Software Guard Extensions (Intel SGX). Tutorial ini mencakup:

  • Cara membuat lingkungan untuk menguji dan mengevaluasi Always Encrypted dengan enklave Intel SGX.
  • Cara mengenkripsi data secara langsung dan melakukan kueri rahasia yang lengkap terhadap kolom terenkripsi menggunakan SQL Server Management Studio (SSMS).

Prasyarat

Persyaratan PowerShell

Catatan

Prasyarat yang tercantum di bagian ini hanya berlaku jika Anda memilih untuk menggunakan PowerShell untuk beberapa langkah dalam tutorial ini. Jika Anda berencana untuk menggunakan portal Azure sebagai gantinya, Anda dapat melewati bagian ini. Microsoft merekomendasikan penggunaan PowerShell 7 atau yang lebih baru saat menjalankan skrip Always Encrypted PowerShell. PowerShell 7 memberikan dukungan lintas platform yang ditingkatkan, performa yang lebih baik, dan kompatibilitas terbaru dengan modul SqlServer (v22+), yang diperlukan untuk banyak skenario Always Encrypted.

Modul Az PowerShell versi 9.3.0 atau yang lebih baru diperlukan. Untuk detail tentang cara menginstal modul Az PowerShell, lihat Menginstal modul Azure Az PowerShell. Untuk menentukan versi modul Az PowerShell yang diinstal pada komputer Anda, jalankan perintah berikut dari PowerShell.

Get-InstalledModule -Name Az

Langkah 1: Membuat dan mengonfigurasi server dan database seri DC

Dalam langkah ini, Anda akan membuat server logis Azure SQL Database baru dan database baru menggunakan perangkat keras seri DC, yang diperlukan untuk fitur Always Encrypted dengan enklave aman. Untuk informasi selengkapnya, lihat Seri DC.

  1. Buka hub Azure SQL di aka.ms/azuresqlhub.

  2. Di menu sumber daya, perluas Azure SQL Database dan pilih database SQL.

  3. Pilih tombol dropdown + Buat dan pilih database SQL.

    Cuplikan layar dari portal Microsoft Azure memperlihatkan halaman database SQL, tombol Buat, dan opsi database SQL.

  4. Pada tab Dasar formulir Buat Database SQL, di bawah Detail proyek, pilih Langganan Azure yang diinginkan.

  5. Untuk Grup sumber daya, pilih Buat baru, masukkan nama untuk grup sumber daya, lalu pilih OK.

  6. Untuk Nama database, masukkan ContosoHR.

  7. Untuk Server, pilih Buat baru,dan isi formulir Server baru dengan nilai berikut ini:

    • Nama server: Masukkan mysqlserver, dan tambahkan beberapa karakter untuk keunikan. Nama server harus unik secara global di seluruh Azure (bukan hanya dalam langganan), jadi gunakan sesuatu seperti mysqlserver135 - portal memberi tahu Anda apakah tersedia.
    • Lokasi: Pilih lokasi dari daftar turun bawah.

      Penting

      Anda harus memilih lokasi (wilayah Azure) yang mendukung perangkat keras seri DC dan Microsoft Azure Attestation. Untuk daftar wilayah yang mendukung seri DC, lihat ketersediaan seri DC. Lihat ketersediaan regional Microsoft Azure Attestation.

    • Metode autentikasi: Pilih Gunakan Autentikasi SQL
    • Masuk admin server: Masukkan nama untuk masuk admin, misalnya: azureuser.
    • Kata sandi: Masukkan kata sandi yang memenuhi persyaratan dan masukkan lagi di bidang Konfirmasi kata sandi.
    • Pilih OK.
  8. Biarkan opsi Ingin menggunakan elastic pool SQL tetap diatur ke Tidak.

  9. Di bawah Komputasi + penyimpanan, pilih Konfigurasikan database, dan pilih Ubah konfigurasi.

    Cuplikan layar konfigurasi perangkat keras portal Azure, dan tempat mengonfigurasi database.

  10. Pilih konfigurais perangkat keras seri DC, lalu pilih OK.

  11. Pilih Terapkan.

  12. Kembali pada tab Dasar, verifikasi Komputasi + penyimpanan diatur ke Tujuan Umum, DC, 2 vCores, penyimpanan 32 GB.

  13. Untuk Redundansi penyimpanan Cadangan, pilih Penyimpanan cadangan redundan lokal.

  14. Pilih Berikutnya: Jaringan di bagian bawah halaman.

    Cuplikan layar portal Microsoft Azure, memperlihatkan Konfigurasikan database seri DC - dasar-dasar.

  15. Pada tab Jaringan, untuk metode Konektivitas, pilih Titik akhir publik.

  16. Untuk aturan Firewall, atur Tambahkan alamat IP klien saat ini ke Ya. Biarkan Izinkan layanan dan sumber daya Azure untuk mengakses server ini diatur ke Tidak.

  17. Untuk Kebijakan koneksi, biarkan diatur ke Default - Menggunakan Kebijakan pengalihan untuk semua koneksi klien yang berasal dari dalam Azure dan Proksi untuk semua koneksi klien yang berasal dari luar Azure.

  18. Untuk Koneksi terenkripsi, biarkan Versi TLS Minimum ke TLS 1.2.

  19. Pilih Tinjau + buat di bagian bawah halaman.

    Cuplikan layar portal Microsoft Azure Buat SQL Database, tab jaringan.

  20. Pada halaman Tinjau + buat, setelah mengulas, pilih Buat.

Langkah 2: Mengonfigurasikan penyedia pengesahan

Dalam langkah ini, Anda akan membuat dan mengonfigurasikan penyedia pengesahan di Microsoft Azure Attestation. Ini diperlukan untuk memverifikasi enclave yang aman yang digunakan database Anda.

  1. Telusuri halaman Buat penyedia pengesahan.

  2. Di halaman Buat penyedia pengesahan, berikan input berikut:

    • Langganan: Pilih langganan yang sama dengan tempat Anda membuat server logika Azure SQL.
    • Grup Sumber Daya: Pilih grup sumber daya yang sama dengan tempat Anda membuat server logika Azure SQL.
    • Nama: Masukkan myattestprovider, dan tambahkan beberapa karakter untuk keunikan. Kami tidak dapat memberikan nama penyedia pengesahan yang tepat untuk digunakan karena nama harus unik secara global. Jadi masukkan sesuatu seperti myattestprovider12345, dan portal memberi tahu Anda apakah tersedia atau tidak.
    • Lokasi: Pilih lokasi yang sama dengan server logis Azure SQL Anda.
    • File sertifikat penanda tangan kebijakan: Biarkan kolom ini kosong, karena Anda akan mengonfigurasi kebijakan yang belum ditandatangani.
  3. Setelah Anda memberikan input yang diperlukan, pilih Tinjau + buat.

    Cuplikan layar menu Buat penyedia atestasi di portal Azure Microsoft.

  4. Pilih Buat.

  5. Setelah penyedia pengesahan dibuat, pilih Pergi ke sumber daya.

  6. Di tab Gambaran Umum untuk penyedia pengesahan, salin nilai properti Attest URI ke clipboard dan simpan dalam file. Ini adalah URL pengesahan, yang anda perlukan di langkah selanjutnya.

  7. Pilih Kebijakan pada menu sumber daya di sisi kiri jendela atau di panel bawah.

  8. Atur Jenis Pengesahan ke SGX-IntelSDK.

  9. Pilih Konfigurasikan pada menu atas.

    Cuplikan layar mengonfigurasi kebijakan pengesahan di portal Microsoft Azure.

  10. Atur Format Kebijakan ke Teks. Biarkan Opsi kebijakan diatur ke Masukkan kebijakan.

  11. Di bidang Teks kebijakan , ganti kebijakan default dengan kebijakan berikut. Untuk informasi selengkapnya, lihat Membuat dan mengonfigurasi penyedia pengesahan.

    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();
    };
    
  12. Pilih Simpan.

    Cuplikan layar mengedit kebijakan pengesahan di portal Microsoft Azure.

  13. Pilih Refresh pada menu atas untuk melihat kebijakan yang dikonfigurasi.

Langkah 3: Mengisi database Anda

Dalam langkah ini, Anda akan membuat tabel dan mengisinya dengan beberapa data yang nantinya akan Anda enkripsi dan kueri.

  1. Buka SSMS dan sambungkan ke database ContosoHR di server logika Azure SQL yang Anda buat tanpa Always Encrypted diaktifkan dalam koneksi database.

    1. Dalam dialog Sambungkan ke Server, tentukan nama server Anda yang sepenuhnya memenuhi syarat (misalnya, myserver135.database.windows.net), dan masukkan nama pengguna administrator serta kata sandi yang Anda tentukan saat membuat server.

    2. Pilih Opsi >> dan pilih tab Properti Koneksi. Pastikan untuk memilih database ContosoHR (bukan default, master database).

    3. Pilih tab Always Encrypted.

    4. Pastikan kotak centang Aktifkan Always Encrypted (enkripsi kolom)tidak dipilih.

      Cuplikan layar Sambungkan ke Server menggunakan SSMS tanpa Always Encrypted diaktifkan.

    5. Pilih Sambungkan.

  2. Buat tabel baru, bernama 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. Tambahkan beberapa catatan karyawan ke Employees tabel.

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

Langkah 4: Menyediakan kunci yang mendukung enklave

Dalam langkah ini, Anda akan membuat kunci master kolom dan kunci enkripsi yang akan digunakan untuk komputasi enklave.

  1. Menggunakan instans SSMS dari langkah sebelumnya, di Object Explorer, perluas database Anda dan navigasi ke Keamanan>Kunci Always Encrypted.

  2. Sediakan kunci master kolom baru yang berkemampuan enklave:

    1. Klik kanan Always Encrypted Keys dan pilih Kunci Master Kolom Baru....
    2. Masukkan nama untuk kunci master kolom baru: CMK1.
    3. Verifikasi bahwa Izinkan komputasi enklave telah dipilih. (Ini dipilih secara default jika enklave aman diaktifkan untuk database. Ini harus diaktifkan karena database Anda menggunakan konfigurasi perangkat keras seri DC.)
    4. Pilih Azure Key Vault (disarankan) atau Penyimpanan Sertifikat Windows (Pengguna Saat Ini atau Komputer Lokal).
      • Jika Anda memilih Azure Key Vault, masuk ke Azure, pilih langganan Azure yang berisi brankas kunci yang ingin Anda gunakan, dan pilih brankas kunci Anda. Pilih Buat Kunci untuk membuat kunci baru.
      • Jika Anda memilih Penyimpanan Sertifikat Windows, pilih tombol Buat Sertifikat untuk membuat sertifikat baru. Cuplikan layar pilihan komputasi enklave yang diizinkan di SSMS saat membuat kunci master kolom baru.
    5. Pilih OK.
  3. Buat kunci enkripsi kolom yang baru dengan dukungan enklave:

    1. Klik kanan Always Encrypted Keys dan pilih Kolom Kunci Enkripsi Baru.
    2. Masukkan nama untuk kunci enkripsi kolom baru: CEK1.
    3. Di daftar dropdown Kunci master kolom, pilih kunci master kolom yang Anda buat di langkah-langkah sebelumnya.
    4. Pilih OK.

Langkah 5: Mengenkripsi beberapa kolom di tempat

Dalam langkah ini, Anda akan mengenkripsi data yang disimpan di kolom SSN dan Salary dalam enklave di sisi server, lalu menguji kueri SELECT pada data.

  1. Buka instans SSMS baru dan sambungkan ke database Anda untuk koneksi database dengan 'Always Encrypted' aktif.

    1. Mulai contoh baru di SSMS.

    2. Dalam dialog Sambungkan ke Server , tentukan nama server Anda yang sepenuhnya memenuhi syarat (misalnya, <server name>.database.windows.net), dan masukkan nama pengguna administrator dan kata sandi yang Anda tentukan saat membuat server.

    3. Pilih Opsi >> dan pilih tab Properti Koneksi. Pastikan untuk memilih database ContosoHR (bukan default, master database).

    4. Pilih tab Always Encrypted.

    5. Pilih kotak centang Aktifkan Always Encrypted (enkripsi kolom).

    6. Pilih Aktifkan Enclave Aman. (Langkah ini berlaku untuk SSMS 19 atau yang lebih baru.)

    7. Atur Protokol ke Microsoft Azure Attestation. (Langkah ini berlaku untuk SSMS 19 atau yang lebih baru.)

    8. Tentukan URL pengesahan enklave yang telah Anda peroleh dengan mengikuti langkah di Langkah 2: Mengonfigurasikan penyedia pengesahan.

      Cuplikan layar dialog SSMS Connect to Server, tab Always Encrypted, dengan pengesahan diaktifkan.

    9. Pilih Sambungkan.

    10. Jika Anda diminta untuk mengaktifkan Parameterisasi untuk kueri Always Encrypted, pilih Aktifkan.

  2. Menggunakan instans SSMS yang sama (dengan Always Encrypted diaktifkan), buka jendela kueri baru dan enkripsi SSN kolom dan Salary dengan menjalankan pernyataan T-SQL berikut:

    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;
    

    Catatan

    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE Perhatikan pernyataan untuk menghapus cache rencana kueri untuk database dalam skrip di atas. Setelah Anda mengubah tabel, Anda perlu membersihkan rencana untuk semua batch dan prosedur tersimpan yang mengakses tabel untuk memperbarui informasi enkripsi parameter.

  3. Untuk memverifikasi SSN kolom dan Salary sekarang dienkripsi, buka jendela kueri baru di instans SSMS tanpa Always Encrypted diaktifkan untuk koneksi database dan jalankan pernyataan berikut. Jendela kueri harus mengembalikan nilai terenkripsi dalam SSN kolom dan Salary . Jika Anda menjalankan kueri yang sama menggunakan instans SSMS dengan Always Encrypted diaktifkan, Anda akan melihat data didekripsi.

    SELECT * FROM [HR].[Employees];
    

Langkah 6: Jalankan kueri lengkap pada kolom terenkripsi

Anda dapat menjalankan kueri lanjutan terhadap kolom terenkripsi. Beberapa pemrosesan kueri akan dilakukan di dalam enklave sisi server Anda.

  1. Dalam instans SSMS dengan fitur Always Encrypted diaktifkan, pastikan Parameterisasi untuk Always Encrypted juga diaktifkan.

    1. Pilih Alat dari menu utama SSMS.
    2. Pilih Opsi....
    3. Navigasi ke Kueri Eksekusi>SQL Server>Tingkat Lanjut.
    4. Pastikan bahwa Aktifkan Parameterisasi untuk Always Encrypted dicentang.
    5. Pilih OK.
  2. Buka jendela kueri baru, tempelkan kueri berikut, dan jalankan. Kueri harus mengembalikan nilai teks polos dan baris yang memenuhi kriteria pencarian tertentu.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Coba lagi kueri yang sama dalam instans SSMS yang tidak memiliki Always Encrypted diaktifkan. Kegagalan bisa terjadi.

Berbagai Tutorial

Setelah menyelesaikan tutorial ini, Anda dapat membuka salah satu tutorial berikut: