Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Tworzy obiekt metadanych klucza głównego kolumny w bazie danych. Wpis metadanych klucza głównego kolumny reprezentuje klucz przechowywany w zewnętrznym magazynie kluczy. Klucz chroni (szyfruje) klucze szyfrowania kolumn podczas korzystania z funkcji Always Encrypted lub Always Encrypted z bezpiecznymi enklawami. Wiele kluczy głównych kolumn umożliwia okresową rotację kluczy w celu zwiększenia bezpieczeństwa. Utwórz klucz główny kolumny w magazynie kluczy i powiązanym z nim obiekt metadanych w bazie danych przy użyciu Eksploratora obiektów w programie SQL Server Management Studio lub programie PowerShell. Aby uzyskać szczegółowe informacje, zobacz Omówienie zarządzania kluczami dla funkcji Always Encrypted.
Transact-SQL konwencje składni
Ważne
Tworzenie kluczy z obsługą enklawy (z ENCLAVE_COMPUTATIONS) wymaga funkcji Always Encrypted z bezpiecznymi enklawami.
Składnia
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
Nazwa klucza głównego kolumny w bazie danych.
key_store_provider_name
Określa nazwę dostawcy magazynu kluczy. Dostawca magazynu kluczy to składnik oprogramowania po stronie klienta, który zawiera magazyn kluczy zawierający klucz główny kolumny.
Sterownik klienta z włączoną funkcją Always Encrypted:
- Używa nazwy dostawcy magazynu kluczy
- Wyszukuje dostawcę magazynu kluczy w rejestrze sterowników dostawców magazynu kluczy
Następnie sterownik używa dostawcy do odszyfrowania kluczy szyfrowania kolumny. Klucze szyfrowania kolumn są chronione za pomocą klucza głównego kolumny. Klucz główny kolumny jest przechowywany w bazowym magazynie kluczy. Wartość zwykłego tekstu klucza szyfrowania kolumny jest następnie używana do szyfrowania parametrów zapytania odpowiadających zaszyfrowanym kolumnom bazy danych. Lub klucz szyfrowania kolumny odszyfrowuje wyniki zapytania z zaszyfrowanych kolumn.
Biblioteki sterowników klienta z obsługą funkcji Always Encrypted obejmują dostawców magazynu kluczy dla popularnych magazynów kluczy.
Zestaw dostępnych dostawców zależy od typu i wersji sterownika klienta. Zapoznaj się z dokumentacją funkcji Always Encrypted dla konkretnych sterowników: tworzenie aplikacji przy użyciu funkcji Always Encrypted.
W poniższej tabeli przedstawiono nazwy dostawców systemów:
| Nazwa dostawcy magazynu kluczy | Podstawowy magazyn kluczy |
|---|---|
| "MSSQL_CERTIFICATE_STORE" | Magazyn certyfikatów systemu Windows |
| "MSSQL_CSP_PROVIDER" | Magazyn, taki jak sprzętowy moduł zabezpieczeń (HSM), który obsługuje interfejs Microsoft CryptoAPI. |
| "MSSQL_CNG_STORE" | Magazyn, taki jak sprzętowy moduł zabezpieczeń (HSM), który obsługuje interfejs API kryptografii: Następna generacja. |
| "AZURE_KEY_VAULT" | Zobacz Wprowadzenie do usługi Azure Key Vault |
| "MSSQL_JAVA_KEYSTORE" | Magazyn kluczy Java.} |
W sterowniku klienta z włączoną funkcją Always Encrypted można skonfigurować niestandardowego dostawcę magazynu kluczy, który przechowuje klucze główne kolumn, dla których nie ma wbudowanego dostawcy magazynu kluczy. Nazwy niestandardowych dostawców magazynu kluczy nie mogą zaczynać się od "MSSQL_", który jest prefiksem zarezerwowanym dla dostawców magazynu kluczy firmy Microsoft.
key_path
Ścieżka klucza w magazynie kluczy głównych kolumn. Ścieżka klucza musi być prawidłowa dla każdej aplikacji klienckiej oczekiwanej do szyfrowania lub odszyfrowywania danych. Dane są przechowywane w kolumnie, która jest (pośrednio) chroniona za pomocą przywoływnego klucza głównego kolumny. Aplikacja kliencka musi mieć dostęp do klucza. Format ścieżki klucza jest specyficzny dla dostawcy magazynu kluczy. Na poniższej liście opisano format ścieżek kluczy dla konkretnych dostawców magazynu kluczy systemowych firmy Microsoft.
Nazwa dostawcy: MSSQL_CERTIFICATE_STORE
Format ścieżki klucza:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint
Where:
CertificateStoreLocation
Lokalizacja magazynu certyfikatów, która musi być bieżącym użytkownikiem lub komputerem lokalnym. Aby uzyskać więcej informacji, zobacz Local Machine and Current User Certificate Stores (Lokalne maszyny i magazyny certyfikatów bieżącego użytkownika).Magazyn certyfikatów
Nazwa magazynu certyfikatów, na przykład "Moje".CertificateThumbprint
Odcisk palca certyfikatu.Przykłady:
N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94' N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'Nazwa dostawcy: MSSQL_CSP_PROVIDER
Format ścieżki klucza:ProviderName/KeyIdentifier
Where:
Nazwa dostawcy
Nazwa dostawcy usług kryptograficznych (CSP), który implementuje interfejs CAPI dla magazynu kluczy głównych kolumn. Jeśli używasz modułu HSM jako magazynu kluczy, nazwa dostawcy musi być nazwą dostawcy CSP dostawcy modułu HSM. Dostawca musi być zainstalowany na komputerze klienckim.KeyIdentifier
Identyfikator klucza, używany jako klucz główny kolumny, w magazynie kluczy.Przykłady:
N'My HSM CSP Provider/AlwaysEncryptedKey1'Nazwa dostawcy: MSSQL_CNG_STORE
Format ścieżki klucza:ProviderName/KeyIdentifier
Where:
Nazwa dostawcy
Nazwa dostawcy magazynu kluczy (KSP), który implementuje interfejs API kryptografii: Następnej generacji (CNG) dla magazynu kluczy głównych kolumn. Jeśli używasz modułu HSM jako magazynu kluczy, nazwa dostawcy musi być nazwą dostawcy kluczy dostawcy modułu HSM. Dostawca musi być zainstalowany na komputerze klienckim.KeyIdentifier
Identyfikator klucza, używany jako klucz główny kolumny, w magazynie kluczy.Przykłady:
N'My HSM CNG Provider/AlwaysEncryptedKey1'Nazwa dostawcy: AZURE_KEY_STORE
Format ścieżki klucza:KeyUrl
Where:
KeyUrl
Adres URL klucza w usłudze Azure Key Vault
ENCLAVE_COMPUTATIONS
Określa, że klucz główny kolumny jest włączony enklawy. Wszystkie klucze szyfrowania kolumny, zaszyfrowane przy użyciu klucza głównego kolumny, można udostępnić enklawę bezpieczną po stronie serwera i użyć ich do obliczeń wewnątrz enklawy. Aby uzyskać więcej informacji, zobacz Always Encrypted with secure enlaves (Funkcja Always Encrypted z bezpiecznymi enklawami).
podpis
Literał binarny, który jest wynikiem cyfrowej ścieżki klucza podpisywania i ustawienia ENCLAVE_COMPUTATIONS z kluczem głównym kolumny. Podpis odzwierciedla, czy ENCLAVE_COMPUTATIONS jest określony, czy nie. Podpis chroni podpisane wartości przed zmianą przez nieautoryzowanych użytkowników. Sterownik klienta z włączoną funkcją Always Encrypted weryfikuje podpis i zwraca błąd do aplikacji, jeśli podpis jest nieprawidłowy. Podpis należy wygenerować przy użyciu narzędzi po stronie klienta. Aby uzyskać więcej informacji, zobacz Always Encrypted with secure enlaves (Funkcja Always Encrypted z bezpiecznymi enklawami).
Uwagi
Utwórz wpis metadanych klucza głównego kolumny przed utworzeniem wpisu metadanych klucza szyfrowania kolumny w bazie danych i przed zaszyfrowanie dowolnej kolumny w bazie danych przy użyciu funkcji Always Encrypted. Wpis klucza głównego kolumny w metadanych nie zawiera rzeczywistego klucza głównego kolumny. Klucz główny kolumny musi być przechowywany w zewnętrznym magazynie kluczy kolumn (poza programem SQL Server). Nazwa dostawcy magazynu kluczy i ścieżka klucza głównego kolumny w metadanych musi być prawidłowa dla aplikacji klienckiej. Aplikacja kliencka musi użyć klucza głównego kolumny do odszyfrowania klucza szyfrowania kolumny. Klucz szyfrowania kolumny jest szyfrowany przy użyciu klucza głównego kolumny. Aplikacja kliencka musi również wykonywać zapytania dotyczące zaszyfrowanych kolumn.
Zaleca się używanie narzędzi, takich jak SQL Server Management Studio (SSMS) lub PowerShell do zarządzania kluczami głównymi kolumn. Takie narzędzia generują podpisy (jeśli używasz funkcji Always Encrypted z bezpiecznymi enklawami) i automatycznie wystawiają CREATE COLUMN MASTER KEY instrukcje w celu utworzenia obiektów metadanych klucza szyfrowania kolumny. Zobacz Aprowizuj klucze Always Encrypted przy użyciu programu SQL Server Management Studio i Aprowizuj klucze Always Encrypted przy użyciu programu PowerShell.
Permissions
Wymaga uprawnienia ALTER ANY COLUMN MASTER KEY .
Przykłady
A. Tworzenie klucza głównego kolumny
Poniższy przykład tworzy wpis metadanych klucza głównego kolumny dla klucza głównego kolumny. Klucz główny kolumny jest przechowywany w magazynie certyfikatów dla aplikacji klienckich korzystających z dostawcy MSSQL_CERTIFICATE_STORE w celu uzyskania dostępu do klucza głównego kolumny:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
);
Utwórz wpis metadanych klucza głównego kolumny dla klucza głównego kolumny. Aplikacje klienckie korzystające z dostawcy MSSQL_CNG_STORE uzyskują dostęp do klucza głównego kolumny:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',
KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'
);
Utwórz wpis metadanych klucza głównego kolumny dla klucza głównego kolumny. Klucz główny kolumny jest przechowywany w usłudze Azure Key Vault dla aplikacji klienckich korzystających z dostawcy AZURE_KEY_VAULT w celu uzyskania dostępu do klucza głównego kolumny.
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');
Utwórz wpis metadanych klucza głównego kolumny dla klucza głównego kolumny. Klucz główny kolumny jest przechowywany w niestandardowym magazynie kluczy głównych kolumn:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',
KEY_PATH = 'https://contoso.vault/sales_db_tce_key'
);
B. Tworzenie klucza głównego kolumny z obsługą enklawy
Poniższy przykład tworzy wpis metadanych klucza głównego kolumny dla klucza głównego kolumny z obsługą enklawy klucza głównego. Klucz główny kolumny z obsługą enklawy jest przechowywany w magazynie certyfikatów dla aplikacji klienckich korzystających z dostawcy MSSQL_CERTIFICATE_STORE w celu uzyskania dostępu do klucza głównego kolumny:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);
Utwórz wpis metadanych klucza głównego kolumny dla klucza głównego kolumny z obsługą enklawy. Klucz główny kolumny z obsługą enklawy jest przechowywany w usłudze Azure Key Vault dla aplikacji klienckich korzystających z dostawcy AZURE_KEY_VAULT w celu uzyskania dostępu do klucza głównego kolumny.
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)
);
Zobacz też
- DROP COLUMN MASTER KEY (Transact-SQL)
- CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
- sys.column_master_keys (Transact-SQL)
- Zawsze szyfrowane
- Ciągłe Szyfrowanie z bezpiecznymi enklawami
- Omówienie zarządzania kluczami dla funkcji Always Encrypted
- Zarządzanie kluczami dla funkcji Always Encrypted przy użyciu bezpiecznych enklaw