Aracılığıyla paylaş


Öğretici: SQL Server'da güvenli kuşatmalarla Always Encrypted kullanmaya başlama

Şunlar için geçerlidir: Windows'da SQL Server 2019 (15.x) ve sonraki sürümleri

Bu öğreticide, SQL Server'da güvenli kuşatmalarla Always Encrypted'ı kullanmaya başlamayı öğreneceksiniz. Size şunu gösterir:

  • Kuşatmalar için yapılandırılmış kanıtlama olmadan güvenli kuşatmalarla Always Encrypted'ı test etmek ve değerlendirmek için temel bir ortam oluşturma.
  • SQL Server Management Studio (SSMS) kullanarak verileri yerinde şifreleme ve şifrelenmiş sütunlara karşı zengin gizli sorgular verme.

Güvenli bölmelerle Always Encrypted'ı bölme kanıtlama için Host Guardian Hizmeti kullanarak ayarlamayı öğrenmek istiyorsanız, bkz: Öğretici: HGS kullanarak kanıtlama ile SQL Server'da güvenli bölmelerle Always Encrypted'ı kullanmaya başlama

Önkoşullar

SQL Server örneğinizi barındıran bilgisayarın (SQL Server bilgisayarı olarak adlandırılır) aşağıdaki gereksinimleri karşılaması gerekir:

  • SQL Server 2019 (15.x) veya üzeri.
  • Windows 10 veya üzeri, Windows Server 2019 veya üzeri.
  • Sanallaştırma teknolojileri için CPU desteği:
    • Genişletilmiş Sayfa Tabloları ile Intel VT-x.
    • AMD-V Hızlı Sanallaştırma İndeksleme ile.
    • SQL Server'i bir VM'de çalıştırıyorsanız:
      • Azure'da , 2. Nesil VM boyutu (önerilir) veya iç içe sanallaştırma etkinleştirilmiş bir 1. Nesil VM boyutu kullanın. hangi 1. Nesil VM boyutlarının iç içe sanallaştırmayı desteklediğini belirlemek için tek tek VM boyutları belgelerine bakın.
      • Hyper-V 2016 veya sonraki bir sürümde (Azure dışında), VM'nizin 2. Nesil VM (önerilir) veya iç içe sanallaştırma etkinleştirilmiş bir 1. Nesil VM olduğundan emin olun. Daha fazla bilgi için bkz. Hyper-V'de 1. veya 2. nesil bir sanal makine mi oluşturmalıyım? ve İç içe sanallaştırmayı yapılandırma.
      • VMware vSphere 6.7 veya sonraki sürümlerinde, VMware belgelerinde açıklandığı gibi VM için Sanallaştırma Tabanlı Güvenlik desteğini etkinleştirin.
      • Diğer hiper yöneticiler ve genel bulutlar, VBS Enclaves ile Always Encrypted'ı etkinleştiren iç içe sanallaştırma özelliklerini de destekleyebilmektedir. Uyumluluk ve yapılandırma yönergeleri için sanallaştırma çözümünüzün belgelerine bakın.
  • SQL Server Management Studio’nun (SSMS) en son sürümü. Alternatif olarak, SSMS'yi başka bir makineye yükleyebilirsiniz.

Uyarı

Üretim ortamlarında SQL Server bilgisayarında SSMS veya diğer anahtar yönetimi araçlarını çalıştırmak Always Encrypted kullanmanın güvenlik avantajlarını azaltabilir. Genel olarak, bu tür araçların farklı bir makinede çalıştırılması önerilir. Daha fazla bilgi için bkz. Anahtar Yönetimi için Güvenlik Konuları.

1. Adım: Sanallaştırma tabanlı güvenliğin (VBS) etkinleştirildiğinden emin olun

  1. SQL Server bilgisayarınızda yönetici olarak oturum açın, yükseltilmiş bir Windows PowerShell konsolu açın ve msinfo32.exeçalıştırın. VBS'nin çalışıp çalışmadığını denetleyin. VBS çalışıyorsa, bu bölümdeki kalan adımları atlayın ve sonraki bölüme gidin.

    Sistem Bilgileri sanallaştırma tabanlı güvenlik ayrıntılarının ekran görüntüsü.

  2. PowerShell oturumunda aşağıdaki cmdlet'i çalıştırarak VBS'yi etkinleştirin.

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name EnableVirtualizationBasedSecurity -Value 1
    
  3. SQL Server bilgisayarınız bir sanal makine, UEFI Güvenli Önyüklemeyi desteklemeyen bir fiziksel makine veya IOMMU'ya sahip olmayan bir fiziksel makineyse, platform güvenlik özellikleri için VBS gereksinimini kaldırmanız gerekir. Sql Server bilgisayarınızda yükseltilmiş bir PowerShell konsolunda aşağıdaki komutu çalıştırarak Güvenli Önyükleme ve IOMMU gereksinimini kaldırın:

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 0
    
  4. VBS'nin çevrimiçi olmasını sağlamak için SQL Server bilgisayarını yeniden başlatın.

    Restart-Computer
    
  5. VBS'nin çalışıp çalışmadığını denetlemek için 1. adımı yineleyin.

2. Adım: SQL Server'da güvenli kuşatmalarla Always Encrypted'ı etkinleştirme

Bu adımda, SQL Server örneğinizdeki kuşatmalar kullanılarak Always Encrypted işlevini etkinleştireceksiniz.

  1. SSMS kullanarak veritabanı bağlantısı için Always Encrypted etkinleştirilmeden SQL Server örneğine sysadmin olarak bağlanın.

    1. SSMS'i başlatın.

    2. Sunucuya Bağlan iletişim kutusunda sunucu adınızı belirtin, bir kimlik doğrulama yöntemi seçin ve kimlik bilgilerinizi belirtin.

    3. Seçenekler'i >> seçin ve Always Encrypted sekmesini seçin.

    4. Always Encrypted'ı Etkinleştir (sütun şifrelemesi) onay kutusunun seçili olmadığından emin olun.

      Always Encrypted devre dışı için SSMS bağlantı seçeneğinin ekran görüntüsü.

    5. Bağlan seçeneğini seçin.

  2. Yeni bir sorgu penceresi açın ve aşağıdaki deyimi yürüterek güvenli kapanım türünü sanallaştırma tabanlı güvenliğe (VBS) ayarlayın.

    EXEC sys.sp_configure 'column encryption enclave type', 1;
    RECONFIGURE;
    
  3. Önceki değişikliğin geçerli olması için SQL Server örneğinizi yeniden başlatın. Nesne Gezgini'nde örneği sağ tıklatıp Yeniden Başlat'ı seçerek SSMS'de örneği yeniden başlatabilirsiniz. Örnek yeniden başlatıldıktan sonra bağlantıyı yeniden kurun.

  4. Aşağıdaki sorguyu çalıştırarak güvenli bölgenin artık yüklendiğini doğrulayın:

    SELECT [name], [value], [value_in_use] FROM sys.configurations
    WHERE [name] = 'column encryption enclave type';
    

    Sorgu aşağıdaki sonucu döndürmelidir:

    name value kullanımda değer
    sütun şifreleme enklav türü 1 1

3. Adım: Örnek veritabanı oluşturma

Bu adımda, daha sonra şifreleyebileceğiniz bazı örnek verileri içeren bir veritabanı oluşturacaksınız.

  1. Önceki adımdaki SSMS örneğini kullanarak aşağıdaki deyimi sorgu penceresinde yürüterek ContosoHR adlı yeni bir veritabanı oluşturun.

    CREATE DATABASE [ContosoHR];
    
  2. Çalışanlar adlı yeni bir tablo oluşturun.

    USE [ContosoHR];
    GO
    
    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];
    
  3. Çalışanlar tablosuna birkaç çalışan kaydı ekleyin.

    USE [ContosoHR];
    GO
    
    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);
    

4. Adım: Kapanım özellikli anahtarları sağlama

Bu adımda, enclave hesaplamalarına olanak sağlayan bir sütun ana anahtarı ve sütun şifreleme anahtarı oluşturacaksınız.

  1. Önceki adımda yer alan SSMS örneğini kullanarak Nesne Gezgini veritabanınızı genişletin ve Güvenlik>gidin.

  2. Yeni bir kapanım özellikli sütun ana anahtarı sağlayın:

    1. Always Encrypted Keys'e sağ tıklayın ve Yeni Sütun Ana Anahtarı... öğesini seçin.

    2. Sütun ana anahtarınızın adını seçin: CMK1.

    3. Windows Sertifika Deposu (Geçerli Kullanıcı veya Yerel Makine) veyaAzure Key Vault'ı seçtiğinizden emin olun.

    4. Yerleşke hesaplamalarına izin ver seçin.

    5. Azure Key Vault'ı seçtiyseniz Azure'da oturum açın ve anahtar kasanızı seçin. Always Encrypted için anahtar kasası oluşturma hakkında daha fazla bilgi için bkz. Azure portalından anahtar kasalarınızı yönetme.

    6. Sertifikanız zaten varsa sertifikanızı veya Azure Anahtar Değeri anahtarınızı seçin veya yeni bir sertifika oluşturmak için Sertifika Oluştur düğmesini seçin.

    7. Tamam'ı seçin.

      SSMS'de yeni bir sütun master anahtarı oluşturulurken gizli çalışma hesaplamalarına izin verme seçiminin ekran görüntüsü.

  3. Yeni bir kapanım özellikli sütun şifreleme anahtarı oluşturun:

    1. Always Encrypted Keys'e sağ tıklayın ve Yeni Sütun Şifreleme Anahtarı'nı seçin.
    2. Yeni sütun şifreleme anahtarı için bir ad girin: CEK1.
    3. Sütun ana anahtarı açılan listesinde, önceki adımlarda oluşturduğunuz sütun ana anahtarını seçin.
    4. Tamam'ı seçin.

5. Adım: Bazı sütunları yerinde şifreleme

Bu adımda, sunucu tarafı kapanım içindeki SSN ve Maaş sütunlarında depolanan verileri şifreler ve ardından veriler üzerinde bir SELECT sorgusunu test edersiniz.

  1. Yeni bir SSMS örneği açın ve veritabanı bağlantısı için Always Encrypted etkinken SQL Server örneğine bağlanın.

    1. SSMS'nin yeni bir örneğini başlatın.

    2. Sunucuya Bağlan iletişim kutusunda sunucu adınızı belirtin, bir kimlik doğrulama yöntemi seçin ve kimlik bilgilerinizi belirtin.

    3. Seçenekler'i >> seçin ve Always Encrypted sekmesini seçin.

    4. Always Encrypted'ı etkinleştir (sütun şifrelemesi) onay kutusunu seçin.

    5. Güvenli kuşatmaları etkinleştir'i seçin.

    6. Protokol'leri Yok olarak ayarlayın.

      SSMS kullanılarak kanıtlama olmadan Sunucu always Encrypted'a bağlan sekmesinin ekran görüntüsü.

    7. Bağlan seçeneğini seçin.

    8. Always Encrypted sorguları için Parametreleştirme'yi etkinleştirmeniz istenirse Etkinleştir'i seçin.

  2. Aynı SSMS örneğini kullanarak (Always Encrypted etkinken), yeni bir sorgu penceresi açın ve aşağıdaki sorguları çalıştırarak SSN ve Maaş sütunlarını şifreleyin.

    USE [ContosoHR];
    GO
    
    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;
    

    Uyarı

    Yukarıdaki betikte veritabanı için sorgu planı önbelleğini temizlemek amacıyla ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE komutuna dikkat edin. Tabloyu değiştirdikten sonra, parametre şifreleme bilgilerini yenilemek için tabloya erişen tüm toplu işlemlerin ve saklı yordamların planlarını temizlemeniz gerekir.

  3. SSN ve Maaş sütunlarının artık şifrelendiğini doğrulamak için SSMS örneğinde veritabanı bağlantısı için Always Encrypted etkinleştirilmemiş yeni bir sorgu penceresi açın ve aşağıdaki deyimi yürütün. Sorgu penceresi SSN ve Maaş sütunlarında şifrelenmiş değerler döndürmelidir. Always Encrypted etkin durumdaki SSMS örneğini kullanarak aynı sorguyu yürütürseniz verilerin şifresinin çözülmüş olduğunu görmeniz gerekir.

    SELECT * FROM [HR].[Employees];
    

6. Adım: Şifrelenmiş sütunlarda zengin sorgular çalıştırma

Artık şifrelenmiş sütunlarda zengin sorgular çalıştırabilirsiniz. Bazı sorgu işlemleri sunucu tarafı enklavınızın içinde yapılacaktır.

  1. Always Encrypted'ın etkinleştirildiği SSMS örneğinde Always Encrypted için Parametreleştirme'nin de etkinleştirildiğinden emin olun.

    1. SSMS'nin ana menüsünde Araçlar'ı seçin.
    2. Seçenekler'i seçin ....
    3. Sorgu Yürütme>SQL Server>Gelişmiş'e gidin.
    4. Always Encrypted için Parametreleştirmeyi Etkinleştir seçeneğinin işaretli olduğundan emin olun.
    5. Tamam'ı seçin.
  2. Yeni bir sorgu penceresi açın, yapıştırın ve aşağıdaki sorguyu yürütür. Sorgu, belirtilen arama ölçütlerine uyan düz metin değerleri ve satırlar döndürmelidir.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Always Encrypted etkin olmayan SSMS örneğinde aynı sorguyu yeniden deneyin ve oluşan hatayı not edin.

Sonraki Adımlar

Bu eğitimi tamamladıktan sonra aşağıda belirtilen eğitimlerden birine gidebilirsiniz.

Ayrıca bakınız