Aracılığıyla paylaş


SIMETRIK ANAHTAR OLUŞTURMA (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

Bir simetrik anahtar oluşturur ve SQL Server'da özelliklerini belirtir.

Bu özellik, Veri Katmanı Application Framework (DACFx) kullanılarak veritabanı dışarı aktarma işlemiyle uyumsuzdur. Dışarı aktarmadan önce tüm simetrik anahtarları bırakmanız gerekir.

Transact-SQL söz dizimi kuralları

Note

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Syntax

CREATE SYMMETRIC KEY key_name
    [ AUTHORIZATION owner_name ]
    [ FROM PROVIDER provider_name ]
    WITH
        [
            <key_options> [ , ... n ]
            | ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
        ]

<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    | ALGORITHM = <algorithm>
    | IDENTITY_VALUE = 'identity_phrase'
    | PROVIDER_KEY_NAME = 'key_name_in_provider'
    | CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }

<algorithm> ::=
    DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256

<encrypting_mechanism> ::=
    CERTIFICATE certificate_name
    | PASSWORD = 'password'
    | SYMMETRIC KEY symmetric_key_name
    | ASYMMETRIC KEY asym_key_name

Arguments

key_name

Veritabanında simetrik anahtarın bilindiği benzersiz adı belirtir. Bu gerekli bir parametredir. Geçici anahtarlar , key_name bir sayı (#) işaretiyle başladığında belirlenir. Örneğin, #temporaryKey900007. Birden #fazla ile başlayan bir ada sahip simetrik anahtar oluşturamazsınız. EKM sağlayıcısını kullanarak geçici simetrik anahtar oluşturamazsınız.

YETKILENDIRME owner_name

Bu anahtarın sahibi olan veritabanı kullanıcı veya uygulama rolünün adını belirtir.

KAYNAK SAĞLAYıCı provider_name

Genişletilebilir Anahtar Yönetimi (EKM) sağlayıcısını ve adını belirtir. Anahtar EKM cihazından dışarı aktarılmıyor. Sağlayıcının önce deyimi kullanılarak CREATE PROVIDER tanımlanması gerekir. Dış anahtar sağlayıcıları oluşturma hakkında daha fazla bilgi için bkz . Genişletilebilir Anahtar Yönetimi (EKM).

Note

Bu seçenek, kapsanan bir veritabanında kullanılamaz.

KEY_SOURCE = 'pass_phrase'

Anahtarın türetildiği parolayı belirtir.

IDENTITY_VALUE = 'identity_phrase'

Geçici bir anahtarla şifrelenmiş verileri etiketlemek için GUID oluşturulacak bir kimlik tümceciği belirtir.

PROVIDER_KEY_NAME = 'key_name_in_provider'

Genişletilebilir Anahtar Yönetimi sağlayıcısında başvuruda bulunan adı belirtir.

Note

Bu seçenek, kapsanan bir veritabanında kullanılamaz.

CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }

Bir simetrik anahtar oluşturur veya Genişletilebilir Anahtar Yönetimi cihazına eşler.

  • CREATE_NEW

    Genişletilebilir Anahtar Yönetimi cihazında yeni bir anahtar oluşturur. Cihazda bir anahtar zaten varsa, deyimi bir hatayla başarısız olur.

  • OPEN_EXISTING

    SQL Server simetrik anahtarını mevcut Genişletilebilir Anahtar Yönetimi anahtarıyla eşler. Sağlanmadıysa CREATION_DISPOSITION = OPEN_EXISTING , bu varsayılan olarak olur CREATE_NEW.

certificate_name

Simetrik anahtarı şifrelemek için kullanılan sertifikanın adını belirtir. Sertifika veritabanında zaten var olmalıdır.

'password'

Simetrik anahtarın güvenliğini sağlamak için TRIPLE_DES anahtarın türetildiği parolayı belirtir. password , SQL Server örneğini çalıştıran bilgisayarın Windows parola ilkesi gereksinimlerini karşılamalıdır. Her zaman güçlü parolalar kullanın.

symmetric_key_name

Oluşturulan anahtarı şifrelemek için kullanılan bir simetrik anahtar belirtir. Belirtilen anahtar veritabanında zaten mevcut olmalı ve anahtarın açık olması gerekir.

asym_key_name

Oluşturulan anahtarı şifrelemek için kullanılan asimetrik anahtarı belirtir. Bu asimetrik anahtar veritabanında zaten mevcut olmalıdır.

<algoritma>

Şifreleme algoritmasını belirtin.

Warning

SQL Server 2016'dan (13.x) başlayarak AES_128, AES_192 ve AES_256 dışındaki tüm algoritmalar kullanım dışıdır. Eski algoritmaları kullanmak için (önerilmez), veritabanını 120 veya daha düşük bir veritabanı uyumluluk düzeyine ayarlamanız gerekir.

Remarks

Simetrik anahtar oluşturulduğunda, simetrik anahtar aşağıdaki seçeneklerden en az biri kullanılarak şifrelenmelidir:

  • certificate
  • password
  • symmetric key
  • asimetrik anahtar
  • PROVIDER

Anahtar, her türden birden fazla şifrelemeye sahip olabilir. Başka bir deyişle, tek bir simetrik anahtar aynı anda birden çok sertifika, parola, simetrik anahtar ve asimetrik anahtar kullanılarak şifrelenebilir.

Simetrik anahtarın anahtar malzemesini korumak için SQL Server ve Azure SQL anahtar malzemesini şifrelenmiş biçimde depolar. Geçmişte bu şifreleme PKCS#1 v1.5 doldurma modunu kullanmıştı; veritabanı uyumluluk düzeyi 170'den başlayarak şifreleme, sertifikaya veya asimetrik anahtara göre şifreleme için OAEP-256 doldurma modunu kullanır. içinde dm_database_encryption_keys, encryptor_type yerine olarak CERTIFICATE_OAEP_256CERTIFICATEgörüntülenir.

Caution

Simetrik anahtar sertifika (veya başka bir anahtar) yerine parolayla şifrelendiğinde parolayı şifrelemek için ÜÇLÜ DES şifreleme algoritması kullanılır. Bu nedenle, AES gibi güçlü bir şifreleme algoritmasıyla oluşturulan anahtarların güvenliği daha zayıf bir algoritmayla sağlanır.

İsteğe bağlı parola, anahtarı birden çok kullanıcıya dağıtmadan önce simetrik anahtarı şifrelemek için kullanılabilir.

Geçici anahtarlar, bunları oluşturan kullanıcıya aittir. Geçici anahtarlar yalnızca geçerli oturum için geçerlidir.

IDENTITY_VALUE yeni simetrik anahtarla şifrelenmiş verileri etiketlemek için bir GUID oluşturur. Bu etiketleme, anahtarları şifrelenmiş veriyle eşleştirmek için kullanılabilir. Belirli bir tümcecik tarafından oluşturulan GUID her zaman aynıdır. Guid oluşturmak için bir tümcecik kullanıldıktan sonra, bu veritabanında tümceciği etkin olarak kullanan en az bir simetrik anahtar olduğu sürece tümcecik yeniden kullanılamaz. IDENTITY_VALUE isteğe bağlı bir yan tümcedir; ancak, geçici bir anahtarla şifrelenmiş verileri depolarken kullanmanızı öneririz.

Varsayılan şifreleme algoritması yoktur.

Important

Hassas verileri korumak için RC4 ve RC4_128 akış şifrelerini kullanmanızı önermeyiz. SQL Server, bu tür anahtarlarla gerçekleştirilen şifrelemeyi daha fazla kodlamaz.

Simetrik anahtarlar hakkındaki bilgiler sys.symmetric_keys katalog görünümünde görünür.

Simetrik anahtarlar, şifreleme sağlayıcısından oluşturulan simetrik anahtarlar tarafından şifrelenemez.

DES algoritmalarıyla ilgili açıklama

  • DESX yanlış adlandırılmış. ALGORITHM = DESX ile oluşturulan simetrik anahtarlar aslında 192 bit anahtarla TRIPLE DES şifrelemesini kullanır. DESX algoritması sağlanmadı. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
  • ALGORITHM = TRIPLE_DES_3KEY ile oluşturulan simetrik anahtarlar 192 bit anahtarla TRIPLE DES kullanır.
  • ALGORITHM = TRIPLE_DES ile oluşturulan simetrik anahtarlar 128 bit anahtarla TRIPLE DES kullanır.

RC4 algoritmasının kullanımdan kaldırılması

Farklı veri bloklarında aynı RC4 veya RC4_128 KEY_GUID tekrar tekrar kullanılması, SQL Server otomatik olarak bir tuz sağlamadığı için aynı RC4 anahtarına neden olur. Aynı RC4 anahtarının tekrar tekrar kullanılması, çok zayıf şifrelemeyle sonuçlanan iyi bilinen bir hatadır. Bu nedenle RC4 ve RC4_128 anahtar sözcüklerini kullanım dışı bırakılmıştır. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.

Warning

RC4 algoritması yalnızca geriye dönük uyumluluk için desteklenir. Yeni malzemeler yalnızca veritabanı uyumluluk düzeyi 90 veya 100 olduğunda RC4 veya RC4_128 kullanılarak şifrelenebilir. (Önerilmez.) Bunun yerine AES algoritmalarından biri gibi daha yeni bir algoritma kullanın. RC4 veya RC4_128 kullanılarak şifrelenen SQL Server malzemelerinde herhangi bir uyumluluk düzeyinde şifresi çözülebilir.

Permissions

Veritabanında herhangi bir simetrik anahtarı değiştirme izni gerektirir. belirtilirse AUTHORIZATION , veritabanı kullanıcısı üzerinde KIMLIĞE BÜRÜN izni veya uygulama rolünde ALTER izni gerektirir. Şifreleme sertifikaya veya asimetrik anahtara göreyse, sertifika veya asimetrik anahtar üzerinde VIEW DEFINITION izni gerekir. Yalnızca Windows oturum açma bilgileri, SQL Server oturum açma bilgileri ve uygulama rolleri simetrik anahtarlara sahip olabilir. Gruplar ve roller simetrik anahtarlara sahip olamaz.

Examples

A. Simetrik anahtar oluşturma

Aşağıdaki örnek, algoritmasını JanainaKey09 kullanarak adlı AES 256 bir simetrik anahtar oluşturur ve ardından yeni anahtarı sertifikasıyla Shipping04şifreler.

CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO

B. Geçici simetrik anahtar oluşturma

Aşağıdaki örnek paroladan adlı #MarketingXXV geçici bir simetrik anahtar oluşturur: The square of the hypotenuse is equal to the sum of the squares of the sides. Anahtar, dizesinden Pythagoras oluşturulan ve sertifikasıyla Marketing25şifrelenmiş bir GUID ile sağlanır.

CREATE SYMMETRIC KEY #MarketingXXV
WITH ALGORITHM = AES_128,
KEY_SOURCE
     = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
IDENTITY_VALUE = 'Pythagoras'
ENCRYPTION BY CERTIFICATE Marketing25;
GO

C. Genişletilebilir Anahtar Yönetimi (EKM) cihazı kullanarak simetrik anahtar oluşturma

Aşağıdaki örnek adlı bir sağlayıcı ve anahtar adı MySymKeykullanarak adlı MyEKMProviderKeyForSensitiveData bir simetrik anahtar oluşturur. için yetkilendirme User1 atar ve sistem yöneticisinin sql Server'da adlı MyEKMProvider sağlayıcıyı zaten kaydettiğini varsayar.

CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO