Tutorial: Mulai menggunakan Always Encrypted

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Tutorial ini mengajarkan Anda cara memulai Always Encrypted. Ini akan menunjukkan kepada Anda:

  • Cara mengenkripsi kolom yang dipilih di database Anda.
  • Cara mengkueri kolom terenkripsi.

Prasyarat

Untuk tutorial ini, Anda perlu:

Langkah 1: Membuat dan mengisi skema database

Dalam langkah ini, Anda akan membuat skema SDM dan tabel Karyawan . Kemudian, Anda akan mengisi tabel dengan beberapa data.

  1. Sambungkan ke database Anda. Untuk instruksi tentang cara menyambungkan ke database dari SQL Server Management Studio (SSMS), lihat Mulai Cepat: Menyambungkan dan mengkueri Azure SQL Database atau Azure SQL Managed Instance menggunakan SQL Server Management Studio (SSMS) atau Mulai Cepat: Menyambungkan dan mengkueri instans SQL Server menggunakan SQL Server Management Studio (SSMS).

  2. Buka jendela kueri baru untuk database ContosoHR .

  3. Tempel dan jalankan pernyataan di bawah ini untuk membuat tabel baru, bernama Karyawan.

    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];
    
  4. Tempel dan jalankan pernyataan di bawah ini untuk menambahkan beberapa catatan karyawan ke tabel Karyawan .

    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 2: Mengenkripsi kolom

Dalam langkah ini, Anda akan menyediakan kunci master kolom dan kunci enkripsi kolom untuk Always Encrypted. Kemudian, Anda akan mengenkripsi kolom SSN dan Gaji di tabel Karyawan .

SSMS menyediakan wizard yang membantu Anda mengonfigurasi Always Encrypted dengan mudah dengan menyiapkan kunci master kolom, kunci enkripsi kolom, dan mengenkripsi kolom yang dipilih.

  1. Di Object Explorer, perluas Tabel ContosoHR>Database.>

  2. Klik kanan tabel Karyawan dan pilih Enkripsi Kolom untuk membuka wizard Always Encrypted.

    Screenshot of opening the Always Encrypted Wizard.

  3. Pilih Berikutnya di halaman Pengenalan wizard.

  4. Pada halaman Pilihan Kolom.

    1. Pilih kolom SSN dan Gaji . Pilih enkripsi deterministik untuk kolom SSN dan enkripsi acak untuk kolom Gaji . Enkripsi deterministik mendukung kueri, seperti pencarian titik yang melibatkan perbandingan kesetaraan pada kolom terenkripsi. Enkripsi acak tidak mendukung komputasi apa pun pada kolom terenkripsi.
    2. Biarkan CEK-Auto1 (Baru) sebagai kunci enkripsi kolom untuk kedua kolom. Kunci ini belum ada dan akan dihasilkan oleh wizard.
    3. Pilih Selanjutnya.

    Screenshot of the Always Encrypted Wizard column selection.

  5. Pada halaman Konfigurasi Kunci Master, konfigurasikan kunci master kolom baru yang akan dihasilkan oleh wizard. Pertama, Anda perlu memilih di mana Anda ingin menyimpan kunci master kolom Anda. Wizard mendukung dua jenis penyimpanan kunci:

    • Azure Key Vault - disarankan jika database Anda berada di Azure
    • Toko sertifikat Windows

    Secara umum, Azure Key Vault adalah opsi yang direkomendasikan, terutama jika database Anda berada di Azure.

    • Untuk menggunakan Azure Key Vault:

      1. Pilih Azure Key Vault.
      2. Pilih Masuk dan selesai masuk ke Azure.
      3. Setelah Anda masuk, halaman akan menampilkan daftar langganan dan brankas kunci, yang dapat Anda akses. Pilih langganan Azure yang berisi brankas kunci, yang ingin Anda gunakan.
      4. Pilih brankas kunci Anda.
      5. Pilih Selanjutnya.

      Screenshot of the Always Encrypted Wizard master key selection using Azure Key Vault.

    • Untuk menggunakan penyimpanan sertifikat Windows:

      1. Pilih Penyimpanan sertifikat Windows.

      2. Biarkan pilihan default Pengguna Saat Ini - ini akan menginstruksikan wizard untuk membuat sertifikat (kunci master kolom baru Anda) di penyimpanan Pengguna Saat Ini.

        Screenshot of the Always Encrypted Wizard master key selection using the certificate store.

      3. Pilih Selanjutnya.

  6. Pada halaman Pengaturan Enkripsi Di Tempat, tidak ada konfigurasi tambahan yang diperlukan karena database tidak mengaktifkan enklave. Pilih Selanjutnya.

  7. Pada halaman Jalankan Pengaturan , Anda akan ditanya apakah Anda ingin melanjutkan enkripsi atau membuat skrip PowerShell untuk dijalankan nanti. Biarkan pengaturan default dan pilih Berikutnya.

  8. Pada halaman Ringkasan , wizard memberi tahu Anda tentang tindakan yang akan dijalankannya. Periksa semua informasi sudah benar dan pilih Selesai.

  9. Pada halaman Hasil , Anda bisa memantau kemajuan operasi wizard. Tunggu hingga semua operasi berhasil diselesaikan dan pilih Tutup.

    Screenshot of the Always Encrypted Wizard summary.

  10. (Opsional) Jelajahi perubahan yang telah dibuat wizard di database Anda.

    1. Perluas Kunci Always Encrypted Keamanan>ContosoHR>untuk menjelajahi objek metadata untuk kunci master kolom dan enkripsi kolom yang dibuat wizard.

    2. Anda juga dapat menjalankan kueri di bawah ini terhadap tampilan katalog sistem yang berisi metadata kunci.

      SELECT * FROM sys.column_master_keys;
      SELECT * FROM sys.column_encryption_keys
      SELECT * FROM sys.column_encryption_key_values
      
    3. Di Object Explorer, klik kanan tabel Karyawan dan pilih Tabel Skrip sebagai>BUAT Ke>Jendela Editor Kueri Baru. Ini akan membuka jendela kueri baru dengan pernyataan CREATE TABLE untuk tabel Karyawan . Perhatikan klausa ENCRYPTED WITH yang muncul dalam definisi kolom SSN dan Gaji.

    4. Anda juga dapat menjalankan kueri di bawah ini terhadap sys.columns untuk mengambil metadata enkripsi tingkat kolom untuk dua kolom terenkripsi.

      SELECT
      [name]
      , [encryption_type]
      , [encryption_type_desc]
      , [encryption_algorithm_name]
      , [column_encryption_key_id]
      FROM sys.columns
      WHERE [encryption_type] IS NOT NULL;
      

Langkah 3: Mengkueri kolom terenkripsi

  1. Sambungkan ke database Anda dengan Always Encrypted dinonaktifkan untuk koneksi Anda.

    1. Buka jendela kueri baru.
    2. Klik kanan di mana saja di jendela kueri dan pilih Koneksi>Ubah Koneksi. Ini akan membuka dialog Sambungkan ke Mesin Database.
    3. Pilih Opsi <<. Ini akan menampilkan tab tambahan dalam dialog Sambungkan ke Mesin Database.
    4. Pilih tab Always Encrypted.
    5. Pastikan Aktifkan Always Encrypted (enkripsi kolom) tidak dipilih.
    6. Pilih Sambungkan.

    Screenshot of the SSMS connection option for Always Encrypted disabled.

  2. Tempelkan dan jalankan kueri berikut. Kueri harus mengembalikan data terenkripsi biner.

    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

    Screenshot of cipher text results from encrypted columns.

  3. Sambungkan ke database Anda dengan Always Encrypted diaktifkan untuk koneksi Anda.

    1. Klik kanan di mana saja di jendela kueri dan pilih Koneksi>Ubah Koneksi. Ini akan membuka dialog Sambungkan ke Mesin Database.
    2. Pilih Opsi <<. Ini akan menampilkan tab tambahan dalam dialog Sambungkan ke Mesin Database.
    3. Pilih tab Always Encrypted.
    4. Pilih Aktifkan Always Encrypted (enkripsi kolom).
    5. Pilih Sambungkan.

    Screenshot of the SSMS connection option for Always Encrypted enabled.

  4. Jalankan ulang kueri yang sama. Karena Anda terhubung dengan Always Encrypted diaktifkan untuk koneksi database Anda, driver klien di SQL Server Management Directory akan mencoba mendekripsi data yang disimpan di kedua kolom terenkripsi. Jika Anda menggunakan Azure Key Vault, Anda mungkin diminta untuk masuk ke Azure.

    Screenshot of plaintext results from encrypted columns.

  5. Aktifkan Parameterisasi untuk Always Encrypted. Fitur ini memungkinkan Anda menjalankan kueri yang memfilter data menurut kolom terenkripsi (atau menyisipkan data ke kolom terenkripsi).

    1. Pilih Kueri dari menu utama SSMS.
    2. Pilih Opsi Kueri....
    3. Navigasi ke Eksekusi>Tingkat Lanjut.
    4. Pastikan Aktifkan Parameterisasi untuk Always Encrypted dicentang.
    5. PilihOK.

    Screenshot enabling parameterization in an existing query window.

  6. Tempelkan dan jalankan kueri di bawah ini, yang memfilter data menurut kolom SSN terenkripsi. Kueri harus mengembalikan satu baris yang berisi nilai teks biasa.

    DECLARE @SSN [char](11) = '795-73-9838'
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    WHERE [SSN] = @SSN
    
  7. Secara opsional, jika Anda menggunakan Azure Key Vault yang dikonfigurasi dengan model izin kebijakan akses, ikuti langkah-langkah di bawah ini untuk melihat apa yang terjadi ketika pengguna mencoba mengambil data teks biasa dari kolom terenkripsi tanpa memiliki akses ke kunci master kolom yang melindungi data.

    1. Hapus izin kunci unwrap untuk diri Anda sendiri dalam kebijakan akses untuk brankas kunci Anda. Untuk informasi selengkapnya, lihat Menetapkan kebijakan akses Key Vault.
    2. Karena driver klien di SQL Server Management Studio menyimpan kunci enkripsi kolom yang diperoleh dari brankas kunci selama 2 jam, tutup SSMS dan buka lagi. Ini akan memastikan cache kunci kosong.
    3. Sambungkan ke database Anda dengan Always Encrypted diaktifkan untuk koneksi Anda.
    4. Tempelkan dan jalankan kueri berikut. Kueri harus gagal dengan pesan kesalahan yang menunjukkan Bahwa Anda tidak memiliki izin yang diperlukan unwrap .
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Langkah berikutnya

Baca juga