Öğretici: Azure SQL Veritabanı'nda Intel SGX güvenli alanlarıyla Always Encrypted'i kullanmaya başlama

Şunlar için geçerlidir:Azure SQL Veritabanı

Bu öğreticide, Azure SQL Veritabanı'da güvenli kuşatmalarla Always Encrypted'ı kullanmaya başlamayı öğreneceksiniz. Intel Software Guard Uzantıları (Intel SGX) enklavlarını kullanacaksınız. Size şunu gösterir:

  • Intel SGX kuşatmalarıyla Always Encrypted'ı test etmek ve değerlendirmek için bir ortam oluşturma.
  • SQL Server Management Studio (SSMS) kullanarak verileri yerinde şifreleme ve şifrelenmiş sütunlara karşı zengin gizli sorgular verme.

Önkoşullar

PowerShell gereksinimleri

Açıklama

Bu bölümde listelenen önkoşullar yalnızca bu öğreticideki bazı adımlar için PowerShell kullanmayı seçerseniz geçerlidir. Bunun yerine Azure portalını kullanmayı planlıyorsanız bu bölümü atlayabilirsiniz.

Az PowerShell modülü sürüm 9.3.0 veya üzeri gereklidir. Az PowerShell modülünü yükleme hakkında ayrıntılı bilgi için bkz . Azure Az PowerShell modülünü yükleme. Makinenizde yüklü olan Az PowerShell modülünün sürümünü belirlemek için PowerShell'den aşağıdaki komutu çalıştırın.

Get-InstalledModule -Name Az

1. Adım: Sunucu ve DC serisi veritabanı oluşturma ve yapılandırma

Bu adımda, güvenli kuşatmalarla Always Encrypted için gerekli olan DC serisi donanımı kullanarak yeni bir Azure SQL Veritabanı mantıksal sunucu ve yeni bir veritabanı oluşturacaksınız. Daha fazla bilgi için bkz . DC serisi.

  1. aka.ms/azuresqlhub'da Azure SQL hub'ına gidin.

  2. Kaynak menüsünde Azure SQL Veritabanı'nı genişletin ve SQL veritabanları'nı seçin.

  3. + Oluştur açılan listesini seçin ve SQL veritabanı'nı seçin.

    SQL veritabanları sayfasını, Oluştur düğmesini ve SQL veritabanı seçeneğini gösteren Azure portalının ekran görüntüsü.

  4. SQL Veritabanı Oluştur formunun Temel Bilgiler sekmesinde, Proje ayrıntıları'nın altında istediğiniz Azure Aboneliği'ni seçin.

  5. Kaynak grubu için Yeni oluştur'u seçin, kaynak grubunuz için bir ad girin ve Tamam'ı seçin.

  6. Veritabanı adı alanına ContosoHR girin.

  7. Sunucu için Yeni oluştur'u seçin ve Yeni sunucu formunu aşağıdaki değerlerle doldurun:

    • Sunucu adı: mysqlserver girin ve benzersizlik için bazı karakterler ekleyin. Sunucu adlarının yalnızca abonelik içinde benzersiz değil, Azure'daki tüm sunucular için genel olarak benzersiz olması gerektiğinden, kullanılacak tam sunucu adını sağlayamıyoruz. Bu nedenle mysqlserver135 gibi bir şey girdiğinizde portal kullanılabilir olup olmadığını size bildirir.
    • Konum: Açılan listeden bir konum seçin.

      Önemli

      Hem DC serisi donanımı hem de Microsoft Azure Doğrulama destekleyen bir konum (Azure bölgesi) seçmeniz gerekir. DC serisini destekleyen bölgelerin listesi için bkz . DC serisi kullanılabilirliği. Bkz. Microsoft Azure Kanıtlama'nın bölgesel kullanılabilirliği.

    • Kimlik doğrulama yöntemi: SQL Kimlik Doğrulaması Kullan'ı seçin
    • Sunucu yöneticisi oturum açma bilgileri: Yönetici oturum açma adı girin; örneğin: azureuser.
    • Parola: Gereksinimleri karşılayan bir parola girin ve parolayı onayla alanına yeniden girin.
    • Tamam'ı seçin.
  8. SQL elastik havuzunu kullanmak istiyor seçeneğini Hayır olarak bırakın.

  9. İşlem + depolama altında Veritabanını yapılandır'ı ve ardından Yapılandırmayı değiştir'i seçin.

    Azure portalı donanım yapılandırması ve veritabanının nerede yapılandırıldığı ekran görüntüsü.

  10. DC serisi donanım yapılandırmasını ve ardından Tamam'ı seçin.

  11. Uygula’yı seçin.

  12. Temel Bilgiler sekmesine dönüp İşlem + depolama alanının Genel Amaçlı, DC, 2 sanal çekirdek, 32 GB depolama olarak ayarlandığını doğrulayın.

  13. Yedekleme depolama yedekliliği için Yerel olarak yedekli yedekleme depolama seçin.

  14. Sayfanın alt kısmındaki İleri: Ağ'ı seçin.

    DC serisi veritabanını yapılandırma - temel bilgileri gösteren Azure portalının ekran görüntüsü.

  15. sekmesinde, Bağlantı yöntemi için Genel uç nokta'yı seçin.

  16. Güvenlik duvarı kuralları için, Geçerli istemci IP adresi ekle ayarını Evet olarak ayarlayın. Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver seçeneğini Hayır olarak bırakın.

  17. Bağlantı ilkesi için Bağlantı ilkesini Varsayılan - Azure'ın içinden kaynaklanan tüm istemci bağlantıları için Yeniden Yönlendirme ilkesini ve Azure dışından gelen tüm istemci bağlantıları için Ara Sunucu kullanır olarak bırakın.

  18. Şifrelenmiş bağlantılar için En Düşük TLS sürümünü TLS 1.2'ye bırakın.

  19. Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.

    Azure portalı sql veritabanı oluşturma, ağ sekmesinin ekran görüntüsü.

  20. Gözden Geçir + oluştur sayfasında, gözden geçirdikten sonra Oluştur'u seçin.

2. Adım: Kanıtlama sağlayıcısı yapılandırma

Bu adımda, Microsoft Azure Doğrulama'de bir kanıtlama sağlayıcısı oluşturacak ve yapılandıracaksınız. Bu, veritabanınızın kullandığı güvenli kapanı test etmek için gereklidir.

  1. Kanıtlama sağlayıcısı oluştur sayfasına gidin.

  2. Kanıtlama sağlayıcısı oluştur sayfasında aşağıdaki girişleri sağlayın:

    • Abonelik: Azure SQL mantıksal sunucusunu oluşturduğunuz aboneliği seçin.
    • Kaynak Grubu: Azure SQL mantıksal sunucusunu oluşturduğunuz kaynak grubunu seçin.
    • Ad: myattestprovider yazın ve benzersizliğini sağlamak için bazı karakterler ekleyin. Adların genel olarak benzersiz olması gerektiğinden, kullanılacak tam bir kanıtlama sağlayıcısı adı sağlayamıyoruz. Bu nedenle myattestprovider12345 gibi bir şey girdiğinizde portal kullanılabilir olup olmadığını size bildirir.
    • Konum: Azure SQL mantıksal sunucunuzla aynı konumu seçin.
    • İlke imzalayan sertifikalar dosyası: İmzalanmamış bir ilke yapılandırdığınız için bu alanı boş bırakın.
  3. Gerekli girişleri sağladıktan sonra Gözden geçir ve oluştur'u seçin.

    Azure portalı Kanıtlama sağlayıcısı oluştur menüsünün ekran görüntüsü.

  4. Oluştur'u belirleyin.

  5. Kanıtlama sağlayıcısı oluşturulduktan sonra Kaynağa Git'i seçin.

  6. Kanıtlama sağlayıcısının Genel Bakış sekmesinde, Kanıtlama URI özelliğinin değerini panoya kopyalayın ve bir dosyaya kaydedin. Bu kanıtlama URL'sidir, sonraki adımlarda ihtiyacınız olacaktır.

  7. Pencerenin sol tarafındaki veya alt bölmedeki kaynak menüsünde İlke'yi seçin.

  8. Kanıtlama Türü'nü SGX-IntelSDK olarak ayarlayın.

  9. Üst menüde Yapılandır'ı seçin.

    Azure portalında kanıtlama ilkesini yapılandırma işleminin ekran görüntüsü.

  10. İlke Biçimi öğesini Metin olarak ayarlayın. Politika seçenekleriniPolitika girin olarak bırakın.

  11. İlke metin alanında, varsayılan ilkeyi aşağıdaki ilkeyle değiştirin. Daha fazla bilgi için bkz. Kanıtlama sağlayıcısını oluşturma ve yapılandırma.

    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. Kaydet'i seçin.

    Azure portalında kanıtlama ilkesini düzenleme işleminin ekran görüntüsü.

  13. Yapılandırılan ilkeyi görüntülemek için üst menüde Yenile'yi seçin.

3. Adım: Veritabanınızı doldurma

Bu adımda bir tablo oluşturacak ve daha sonra şifreleyip sorguladığınız bazı verilerle dolduracaksınız.

  1. SSMS'yi açın ve veritabanı bağlantısında Always Encrypted etkinleştirilmeden oluşturduğunuz Azure SQL mantıksal sunucusunda ContosoHR veritabanına bağlanın.

    1. Sunucuya Bağlan iletişim kutusunda, sunucunuzun tam adını (örneğin, myserver135.database.windows.net) belirtin ve yönetici kullanıcı adını ve sunucuyu oluştururken belirttiğiniz parolayı girin.

    2. Seçenekler'i >>olun.

    3. Always Encrypted sekmesini seçin.

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

      Always Encrypted etkinleştirilmeden SSMS kullanarak Sunucuya Bağlan'ın ekran görüntüsü.

    5. Bağlan'ı seçin.

  2. adlı Employeesyeni bir tablo oluşturun.

    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. Tabloya Employees birkaç çalışan kaydı ekleyin.

    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. Yeni sütun ana anahtarı için bir ad girin: CMK1.
    3. Enklav hesaplamalarına izin ver'in seçili olduğunu doğrulayın. (Veritabanı için güvenli bir kapanım etkinleştirildiyse varsayılan olarak seçilir. Veritabanınız DC serisi donanım yapılandırmasını kullandığından etkinleştirilmelidir.)
    4. Azure Key Vault (önerilen) veya Windows Sertifika Deposu (Geçerli Kullanıcı veya Yerel Makine) seçeneğini belirleyin.
      • Azure Key Vault'ı seçerseniz Azure'da oturum açın, kullanmak istediğiniz anahtar kasasını içeren bir Azure aboneliği seçin ve anahtar kasanızı seçin. Yeni bir anahtar oluşturmak için Anahtar Oluştur'u seçin.
      • Windows Sertifika Deposu'nı seçerseniz, yeni bir sertifika oluşturmak için Sertifika Oluştur düğmesini seçin. Yeni bir sütun ana anahtarı oluşturulurken SSMS'de kapanım hesaplamalarına izin ver seçiminin ekran görüntüsü.
    5. Tamam'ı seçin.
  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 Salary sütunlarında depolanan verileri şifreleyeceksiniz ve ardından bu veriler üzerinde bir SELECT sorgusu test edeceksiniz.

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

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

    2. Sunucuya Bağlan iletişim kutusunda sunucunuzun tam adını (örneğin, <server name>.database.windows.net) belirtin ve sunucuyu oluştururken belirttiğiniz yönetici kullanıcı adını ve parolayı girin.

    3. Seçenekler'i >>olun.

    4. Always Encrypted sekmesini seçin.

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

    6. Güvenli kuşatmaları etkinleştir'i seçin. (Bu adım SSMS 19 veya üzeri için geçerlidir.)

    7. Protokolü Microsoft Azure Doğrulama olarak ayarlayın. (Bu adım SSMS 19 veya üzeri için geçerlidir.)

    8. Adım 2: Bir kanıtlama sağlayıcısını yapılandırın adımlarını izleyerek elde ettiğiniz kapanım kanıtlama URL'nizi belirtin.

      Kanıtlamanın etkinleştirildiği SSMS Sunucuya Bağlan iletişim kutusunun Always Encrypted sekmesinin ekran görüntüsü.

    9. Bağlan'ı seçin.

    10. 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 T-SQL deyimlerini çalıştırarak SSN ve Salary sütunlarını şifreleyin.

    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;
    

    Açıklama

    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE Yukarıdaki betikte veritabanı için sorgu planı önbelleğini temizleme deyimine 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. ve SSN sütunlarının Salary artık şifrelendiğini doğrulamak için SSMS örneğinde veritabanı bağlantısı için Always Encrypted etkinleştirilmeden yeni bir sorgu penceresi açın ve aşağıdaki deyimi yürütün. Sorgu penceresi, `SSN` ve `Salary` 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

Şifrelenmiş sütunlarda zengin sorgular çalıştırabilirsiniz. Sunucu tarafı güvenli bölgenizde bazı sorgu işleme gerçekleştirilecektir.

  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, aşağıdaki sorguyu yapıştırın ve yürütun. 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. Bir hata oluşmalıdır.

Kılavuzlar

Bu öğreticiyi tamamladıktan sonra aşağıda listelenen öğreticilerden birini seçebilirsiniz: