Öğretici: Azure SQL Veritabanı'da VBS kuşatmalarıyla Always Encrypted kullanmaya başlama

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

Bu öğreticide, sanallaştırma tabanlı güvenlik (VBS) kuşatmalarını kullanarak Azure SQL Veritabanı güvenli kuşatmalarla Always Encrypted'ı kullanmaya başlamayı öğreneceksiniz. Size şunu gösterir:

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

Araç gereksinimleri

Bu öğretici için SQL Server Management Studio (SSMS) gereklidir. VBS kuşatmalarını etkinleştirmek için PowerShell veya Azure CLI kullanmayı seçebilirsiniz.

SQL Server Management Studio'nun (SSMS) en son sürümünü indirin.

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

Bu adımda, yeni bir Azure SQL Veritabanı mantıksal sunucusu ve yeni bir veritabanı oluşturacaksınız.

Hızlı Başlangıç: Tek bir veritabanı oluşturma - Azure SQL Veritabanı bölümüne gidin ve yeni bir Azure SQL Veritabanı mantıksal sunucu ve yeni bir veritabanı oluşturmak için Tek bir veritabanı oluşturma bölümündeki yönergeleri izleyin.

Önemli

ContosoHR (örnek veritabanı değil) adlı boş bir veritabanı oluşturduğunuzdan emin olun.

2. Adım: VBS kapanımını etkinleştirme

Bu adımda, veritabanında güvenli kuşatmalarla Always Encrypted için gerekli olan VBS kapanımını etkinleştireceksiniz. Veritabanınızda VBS kuşatmalarını etkinleştirmek için tercih edilenEnclaveType veritabanı özelliğini VBS olarak ayarlamanız gerekir.

  1. Azure portalını açın ve güvenli kuşatmalarını etkinleştirmek istediğiniz veritabanını bulun.

  2. Güvenlik ayarlarında Veri Şifrelemesi'ni seçin.

  3. Veri Şifrelemesi menüsünde Always Encrypted sekmesini seçin.

  4. Güvenli kuşatmaları etkinleştir ayarını ON olarak ayarlayın. Zaten ON olarak ayarlandıysa sonraki adımla devam edin.

    Azure portalındaki mevcut bir veritabanında güvenli kuşatmaları etkinleştirme işleminin ekran görüntüsü.

  5. Always Encrypted yapılandırmanızı kaydetmek için Kaydet'i 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.

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

    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ımda yer alan SSMS örneğini kullanarak Nesne Gezgini veritabanınızı genişletin ve Güvenlik>Always Encrypted Keys'e 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. 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 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.

    7. Protokol'leri Yok olarak ayarlayın. Aşağıdaki ekran görüntüsüne bakın.

      Kanıtlama protokolü Yok olarak ayarlanmış SSMS Sunucuya Bağlan iletişim kutusunun Always Encrypted sekmesinin ekran görüntüsü.

    8. Bağlan'ı seçin.

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

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