Öğretici: Azure SQL Veritabanı'nda Intel SGX kuşatmalarıyla Always Encrypted kullanmaya başlama

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

Bu öğretici, Azure SQL Veritabanı'nda güvenli kuşatmalarla Always Encrypted'ı kullanmaya başlamayı öğretir. Intel Software Guard Uzantıları (Intel SGX) kuşatmaları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

  • Etkin bir Azure aboneliği. Aboneliğiniz yoksa ücretsiz bir hesap oluşturun. Kaynak oluşturabilmek ve kanıtlama ilkesi yapılandırabilmek için aboneliğin Katkıda Bulunan rolüne veya Sahip rolüne üye olmanız gerekir.
  • İsteğe bağlı, ancak Always Encrypted için sütun ana anahtarınızı depolamak için önerilir: Azure Key Vault'ta bir anahtar kasası. Anahtar kasası oluşturma hakkında bilgi için bkz . Hızlı Başlangıç: Azure portalını kullanarak anahtar kasası oluşturma.
    • Anahtar kasanız erişim ilkesi izin modelini kullanıyorsa, anahtar kasasında aşağıdaki anahtar izinlerine sahip olduğunuzdan emin olun: get, list, create, unwrap key, wrap key, , verify, sign. Daha fazla bilgi için bkz . Key Vault erişim ilkesi atama.
    • Azure rol tabanlı erişim denetimi (RBAC) izin modelini kullanıyorsanız anahtar kasanızın Key Vault Şifreleme Yetkilisi rolünün üyesi olduğunuzdan emin olun. Bkz . Azure rol tabanlı erişim denetimiyle Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama.
  • SQL Server Management Studio’nun (SSMS) en son sürümü.

PowerShell gereksinimleri

Not

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 gereken DC serisi donanımları kullanarak yeni bir Azure SQL Veritabanı mantıksal sunucusu ve yeni bir veritabanı oluşturacaksınız. Daha fazla bilgi için bkz . DC serisi.

  1. SQL dağıtımını seç seçeneği sayfasına gidin.

  2. Azure portalında henüz oturum açmadıysanız istendiğinde oturum açın.

  3. SQL veritabanları'nın altında Kaynak türü'nü Tek veritabanı olarak bırakın ve Oluştur'u seçin.

    Screenshot of Azure portal, showing the Add to Azure SQL deployment option.

  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 Kanıtlamasını destekleyen bir konum (Azure bölgesi) seçmeniz gerekir. DC serisini destekleyen bölgelerin listesi için bkz . DC serisi kullanılabilirliği. Microsoft Azure Kanıtlama'nın bölgesel kullanılabilirliği aşağıdadır .

    • 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.

    Screenshot of Azure portal hardware configuration, and where to configure database.

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

    Screenshot of Azure portal, showing Configure DC-series database.

  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 alanını seçin.

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

    Screenshot of Azure portal, showing Configure DC-series database - basics.

  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'yi 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ı ilkesi'ni Varsayılan olarak bırakın - Azure'ın içinden kaynaklanan tüm istemci bağlantıları için Yeniden Yönlendirme ilkesini kullanır ve Azure dışından gelen tüm istemci bağlantıları için Ara Sunucu

  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.

    Screenshot of the Azure portal Create SQL Database, networking tab.

  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 Kanıtlama'da 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 girin ve benzersizlik 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.

    Screenshot of the Azure portal Create attestation provider menu.

  4. Oluştur’u seçin.

  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.

    Screenshot of the attestation URL in the Azure portal.

  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.

    Screenshot of configuring attestation policy in the Azure portal.

  10. İlke Biçimi'ni Metin olarak ayarlayın. İlke seçeneklerini İlke girin olarak bırakın.

  11. İlke metin alanında, varsayılan ilkeyi aşağıdaki ilkeyle değiştirin. Aşağıdaki ilke hakkında bilgi için bkz . Kanıtlama sağlayıcısı 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();
};

  1. Kaydet’i seçin.

    Screenshot of editing an attestation policy in the Azure portal.

  2. 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 >> seçin ve Bağlantı Özellikleri sekmesini seçin. ContosoHR veritabanını (varsayılan master veritabanı değil) seçtiğinizden emin olun.

    3. Always Encrypted sekmesini seçin.

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

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Bağlan’ı seçin.

  2. Çalışanlar adlı yeni 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. Çalışanlar tablosuna 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, bir sütun ana anahtarı ve kapanım hesaplamalarına izin veren bir sütun şifreleme anahtarı oluşturacaksınız.

  1. Önceki adımdaki SSMS örneğini kullanarak Nesne Gezgini'nde veritabanınızı genişletin ve Güvenlik>Always Encrypted Anahtarları'na 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. Kapanım 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. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    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 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 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, myserver135.database.windows.net) belirtin ve yönetici kullanıcı adını ve sunucuyu oluştururken belirttiğiniz parolayı girin.

    3. Seçenekler'i >> seçin ve Bağlantı Özellikleri sekmesini seçin. ContosoHR veritabanını (varsayılan master veritabanı değil) seçtiğinizden emin 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 Kanıtlama olarak ayarlayın. (Bu adım SSMS 19 veya üzeri için geçerlidir.)

    8. 2. Adım: Kanıtlama sağlayıcısı yapılandırma'daki adımları izleyerek elde ettiğiniz kapanım kanıtlama URL'nizi belirtin. Aşağıdaki ekran görüntüsüne bakın.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation enabled.

    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 deyimleri çalıştırarak SSN ve Maaş 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;
    

    Not

    Yukarıdaki betikte veritabanı için sorgu planı önbelleğini temizlemek için ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE 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. 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

Şifrelenmiş sütunlarda zengin sorgular çalıştırabilirsiniz. Bazı sorgu işlemleri sunucu tarafı kapanımınızın içinde gerçekleştirilir.

  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.

Sonraki adımlar

Bu öğreticiyi tamamladıktan sonra aşağıdaki öğreticilerden birine gidebilirsiniz:

Ayrıca bkz.