Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Veritabanında bir sütun ana anahtarı meta veri nesnesi oluşturur. Sütun ana anahtarı meta veri girişi, bir dış anahtar deposunda depolanan bir anahtarı temsil eder. Güvenli kuşatmalarla Always Encrypted veya Always Encrypted kullanırken anahtar, sütun şifreleme anahtarlarını korur ( şifreler). Birden çok sütun ana anahtarı, güvenliği geliştirmek için düzenli olarak anahtar döndürmeye olanak sağlar. SQL Server Management Studio veya PowerShell'de Nesne Gezgini'ni kullanarak bir anahtar deposunda bir sütun ana anahtarı ve veritabanındaki ilgili meta veri nesnesini oluşturun. Ayrıntılar için bkz. Always Encrypted için Anahtar Yönetimine Genel Bakış.
Transact-SQL söz dizimi kuralları
Önemli
Kapanım özellikli anahtarlar (ENCLAVE_COMPUTATIONS ile) oluşturmak için güvenli kuşatmalarla Always Encrypted gerekir.
Sözdizimi
CREATE COLUMN MASTER KEY key_name
WITH (
KEY_STORE_PROVIDER_NAME = 'key_store_provider_name',
KEY_PATH = 'key_path'
[,ENCLAVE_COMPUTATIONS (SIGNATURE = signature)]
)
[;]
Arguments
key_name
Veritabanındaki sütun ana anahtarının adı.
key_store_provider_name
Anahtar deposu sağlayıcısının adını belirtir. Anahtar deposu sağlayıcısı, sütun ana anahtarına sahip bir anahtar depoyu tutan istemci tarafı yazılım bileşenidir.
Always Encrypted ile etkinleştirilen bir istemci sürücüsü:
- Anahtar deposu sağlayıcı adını kullanır
- Anahtar deposu sağlayıcılarının sürücü kayıt defterinde anahtar deposu sağlayıcısını arar
Ardından sürücü, sütun şifreleme anahtarlarının şifresini çözmek için sağlayıcıyı kullanır. Sütun şifreleme anahtarları bir sütun ana anahtarıyla korunur. Sütun ana anahtarı, temel alınan anahtar deposunda depolanır. Ardından, şifrelenmiş veritabanı sütunlarına karşılık gelen sorgu parametrelerini şifrelemek için sütun şifreleme anahtarının düz metin değeri kullanılır. Ya da sütun şifreleme anahtarı, şifrelenmiş sütunlardan gelen sorgu sonuçlarının şifresini çözer.
Always Encrypted özellikli istemci sürücüsü kitaplıkları, popüler anahtar depoları için anahtar deposu sağlayıcıları içerir.
Kullanılabilir sağlayıcılar kümesi, istemci sürücüsünün türüne ve sürümüne bağlıdır. Belirli sürücüler için Always Encrypted belgelerine bakın: Always Encrypted kullanarak uygulama geliştirme.
Aşağıdaki tabloda sistem sağlayıcılarının adları gösterilmektedir:
| Anahtar deposu sağlayıcı adı | Temel alınan anahtar deposu |
|---|---|
| 'MSSQL_CERTIFICATE_STORE' | Windows Sertifika Deposu |
| 'MSSQL_CSP_PROVIDER' | Microsoft CryptoAPI'yi destekleyen donanım güvenlik modülü (HSM) gibi bir depo. |
| 'MSSQL_CNG_STORE' | Şifreleme API'sini destekleyen donanım güvenlik modülü (HSM) gibi bir depo: Yeni Nesil. |
| 'AZURE_KEY_VAULT' | Bkz. Azure Key Vault'u Kullanmaya Başlama |
| 'MSSQL_JAVA_KEYSTORE' | Java Anahtar Deposu.} |
Always Encrypted özellikli istemci sürücünüzde, yerleşik anahtar deposu sağlayıcısı bulunmayan sütun ana anahtarlarını depolayan özel bir anahtar deposu sağlayıcısı ayarlayabilirsiniz. Özel anahtar deposu sağlayıcılarının adları Microsoft anahtar deposu sağlayıcıları için ayrılmış bir ön ek olan 'MSSQL_' ile başlayamaz.
key_path
Ana anahtar deposundaki anahtarın yolu. Anahtar yolu, verileri şifrelemesi veya şifresini çözmesi beklenen her istemci uygulaması için geçerli olmalıdır. Veriler, başvurulan sütun ana anahtarı tarafından korunan (dolaylı olarak) bir sütunda depolanır. İstemci uygulamasının anahtara erişimi olmalıdır. Anahtar yolunun biçimi, anahtar deposu sağlayıcısına özgüdür. Aşağıdaki listede, belirli Microsoft sistem anahtar deposu sağlayıcıları için anahtar yollarının biçimi açıklanmaktadır.
Sağlayıcı adı: MSSQL_CERTIFICATE_STORE
Anahtar yolu biçimi:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint
Where:
CertificateStoreLocation
Geçerli Kullanıcı veya Yerel Makine olması gereken sertifika deposu konumu. Daha fazla bilgi için bkz. Yerel Makine ve Geçerli Kullanıcı Sertifika Depoları.CertificateStore
Sertifika deposu adı, örneğin 'My'.CertificateThumbprint
Sertifika parmak izi.Örnekler:
N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94' N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'Sağlayıcı adı: MSSQL_CSP_PROVIDER
Anahtar yolu biçimi:ProviderName/KeyIdentifier
Where:
ProviderName
Sütun ana anahtar deposu için CAPI uygulayan şifreleme hizmet sağlayıcısının (CSP) adı. Anahtar deposu olarak bir HSM kullanıyorsanız, sağlayıcı adı HSM satıcınızın sağladığı CSP'nin adı olmalıdır. Sağlayıcının bir istemci bilgisayara yüklenmesi gerekir.KeyIdentifier
Anahtar deposunda sütun ana anahtarı olarak kullanılan anahtarın tanımlayıcısı.Örnekler:
N'My HSM CSP Provider/AlwaysEncryptedKey1'Sağlayıcı adı: MSSQL_CNG_STORE
Anahtar yolu biçimi:ProviderName/KeyIdentifier
Where:
ProviderName
Sütun ana anahtar deposu için Şifreleme: Yeni Nesil (CNG) API'sini uygulayan Anahtar Depolama Sağlayıcısının (KSP) adı. Anahtar deposu olarak HSM kullanıyorsanız, sağlayıcı adı HSM satıcınızın sağladığı KSP'nin adı olmalıdır. Sağlayıcının bir istemci bilgisayara yüklenmesi gerekir.KeyIdentifier
Anahtar deposunda sütun ana anahtarı olarak kullanılan anahtarın tanımlayıcısı.Örnekler:
N'My HSM CNG Provider/AlwaysEncryptedKey1'Sağlayıcı adı: AZURE_KEY_STORE
Anahtar yolu biçimi:KeyUrl
Where:
KeyUrl
Azure Key Vault'ta anahtarın URL'si
ENCLAVE_COMPUTATIONS
Sütun ana anahtarının kapanım etkin olduğunu belirtir. Sunucu tarafı güvenli bir kapanım ile sütun ana anahtarıyla şifrelenmiş tüm sütun şifreleme anahtarlarını paylaşabilir ve bunları kapanım içindeki hesaplamalar için kullanabilirsiniz. Daha fazla bilgi için bkz . Güvenli kuşatmalarla Always Encrypted.
imza
Anahtar yolunu dijital olarak imzalamanın ve sütun ana anahtarıyla ENCLAVE_COMPUTATIONS ayarının sonucu olan ikili değişmez değer. İmza, ENCLAVE_COMPUTATIONS belirtilip belirtilmediğini yansıtır. İmza, imzalanan değerlerin yetkisiz kullanıcılar tarafından değiştirilmesini engeller. Always Encrypted özellikli istemci sürücüsü imzayı doğrular ve imza geçersizse uygulamaya bir hata döndürür. İmza, istemci tarafı araçları kullanılarak oluşturulmalıdır. Daha fazla bilgi için bkz . Güvenli kuşatmalarla Always Encrypted.
Açıklamalar
Veritabanında bir sütun şifreleme anahtarı meta veri girişi oluşturmadan önce ve veritabanındaki herhangi bir sütun Always Encrypted kullanılarak şifrelenmeden önce bir sütun ana anahtarı meta veri girişi oluşturun. Meta verilerdeki bir sütun ana anahtarı girdisi gerçek sütun ana anahtarını içermez. Sütun ana anahtarı bir dış sütun anahtarı deposunda (SQL Server dışında) depolanmalıdır. Anahtar deposu sağlayıcı adı ve meta verilerdeki sütun ana anahtar yolu bir istemci uygulaması için geçerli olmalıdır. İstemci uygulamasının bir sütun şifreleme anahtarının şifresini çözmek için sütun ana anahtarını kullanması gerekir. Sütun şifreleme anahtarı, sütun ana anahtarıyla şifrelenir. İstemci uygulamasının şifrelenmiş sütunları da sorgulaması gerekir.
Sütun ana anahtarlarını yönetmek için SQL Server Management Studio (SSMS) veya PowerShell gibi araçları kullanmanız önerilir. Bu tür araçlar imzalar oluşturur (Always Encrypted'ı güvenli kuşatmalarla kullanıyorsanız) ve sütun şifreleme anahtarı meta veri nesneleri oluşturmak için deyimleri otomatik olarak verir CREATE COLUMN MASTER KEY . Bkz . SQL Server Management Studio kullanarak Always Encrypted anahtarlarısağlama ve PowerShell kullanarak Always Encrypted anahtarları sağlama.
Permissions
ALTER ANY COLUMN MASTER KEY izni gerektirir.
Örnekler
A. Sütun ana anahtarı oluşturma
Aşağıdaki örnek, bir sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturur. Sütun ana anahtarı, sütun ana anahtarına erişmek için MSSQL_CERTIFICATE_STORE sağlayıcısını kullanan istemci uygulamaları için Sertifika Deposu'nda depolanır:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
);
Sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturun. MSSQL_CNG_STORE sağlayıcısını kullanan istemci uygulamaları sütun ana anahtarına erişin:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',
KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'
);
Sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturun. Sütun ana anahtarı, AZURE_KEY_VAULT sağlayıcısını kullanan istemci uygulamalarının sütun ana anahtarına erişmesi için Azure Key Vault'ta depolanır.
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'AZURE_KEY_VAULT',
KEY_PATH = N'https://myvault.vault.azure.net:443/keys/
MyCMK/4c05f1a41b12488f9cba2ea964b6a700');
Sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturun. Sütun ana anahtarı özel bir sütun ana anahtar deposunda depolanır:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',
KEY_PATH = 'https://contoso.vault/sales_db_tce_key'
);
B. Kapanım özellikli sütun ana anahtarı oluşturma
Aşağıdaki örnek, kapanım özellikli bir sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturur. enclave özellikli sütun ana anahtarı, MSSQL_CERTIFICATE_STORE sağlayıcısını kullanan istemci uygulamalarının sütun ana anahtarına erişmesi için bir Sertifika Deposu'nda depolanır:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);
Kapanım özellikli bir sütun ana anahtarı için bir sütun ana anahtarı meta veri girişi oluşturun. Enclave özellikli sütun ana anahtarı, AZURE_KEY_VAULT sağlayıcısını kullanan istemci uygulamalarının sütun ana anahtarına erişmesi için Azure Key Vault'ta depolanır.
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'AZURE_KEY_VAULT',
KEY_PATH = N'https://myvault.vault.azure.net:443/keys/MyCMK/4c05f1a41b12488f9cba2ea964b6a700',
ENCLAVE_COMPUTATIONS(SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020582413990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);