Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
Skapar ett kolumnhuvudnyckelmetadataobjekt i en databas. En kolumnhuvudnyckelmetadatapost representerar en nyckel som lagras i ett externt nyckelarkiv. Nyckeln skyddar (krypterar) kolumnkrypteringsnycklar när du använder Always Encrypted eller Always Encrypted med säkra enklaver. Med flera kolumnhuvudnycklar kan regelbunden nyckelrotation förbättra säkerheten. Skapa en kolumnhuvudnyckel i ett nyckelarkiv och dess relaterade metadataobjekt i databasen med hjälp av Object Explorer i SQL Server Management Studio eller PowerShell. Mer information finns i Översikt över nyckelhantering för Always Encrypted.
Transact-SQL syntaxkonventioner
Viktigt!
Att skapa enklaveraktiverade nycklar (med ENCLAVE_COMPUTATIONS) kräver Always Encrypted med säkra enklaver.
Syntax
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
Namnet på kolumnhuvudnyckeln i databasen.
key_store_provider_name
Anger namnet på en nyckellagringsprovider. En nyckellagerprovider är en programvarukomponent på klientsidan som innehåller ett nyckelarkiv som har kolumnhuvudnyckeln.
En klientdrivrutin som är aktiverad med Always Encrypted:
- Använder ett providernamn för nyckelarkivet
- Söker efter nyckellagringsprovidern i drivrutinsregistret för nyckellagringsleverantörer
Drivrutinen använder sedan providern för att dekryptera kolumnkrypteringsnycklar. Kolumnkrypteringsnycklarna skyddas av en kolumnhuvudnyckel. Kolumnhuvudnyckeln lagras i det underliggande nyckelarkivet. Ett klartextvärde för kolumnkrypteringsnyckeln används sedan för att kryptera frågeparametrar som motsvarar krypterade databaskolumner. Eller så dekrypterar kolumnkrypteringsnyckeln frågeresultat från krypterade kolumner.
Always Encrypted-aktiverade klientdrivrutinsbibliotek innehåller nyckellagringsprovidrar för populära nyckellager.
En uppsättning tillgängliga leverantörer beror på typen och versionen av klientdrivrutinen. Se Always Encrypted-dokumentationen för vissa drivrutiner: Utveckla program med Always Encrypted.
I följande tabell visas namnen på systemprovidrar:
| Namn på nyckellagringsprovider | Underliggande nyckelarkiv |
|---|---|
| "MSSQL_CERTIFICATE_STORE" | Windows Certificate Store |
| "MSSQL_CSP_PROVIDER" | Ett arkiv, till exempel en maskinvarusäkerhetsmodul (HSM), som stöder Microsoft CryptoAPI. |
| "MSSQL_CNG_STORE" | Ett arkiv, till exempel en maskinvarusäkerhetsmodul (HSM), som stöder kryptografi-API: Nästa generation. |
| "AZURE_KEY_VAULT" | Se Komma igång med Azure Key Vault |
| "MSSQL_JAVA_KEYSTORE" | Java Key Store.} |
I din Always Encrypted-aktiverade klientdrivrutin kan du konfigurera en anpassad nyckellagringsprovider som lagrar kolumnhuvudnycklar som det inte finns någon inbyggd nyckellagringsprovider för. Namnen på leverantörer av anpassade nyckelarkiv kan inte börja med "MSSQL_", vilket är ett prefix som är reserverat för Microsofts nyckellagringsleverantörer.
key_path
Sökvägen till nyckeln i kolumnhuvudnyckelarkivet. Nyckelsökvägen måste vara giltig för varje klientprogram som förväntas kryptera eller dekryptera data. Data lagras i en kolumn som (indirekt) skyddas av den refererade kolumnhuvudnyckeln. Klientprogrammet måste ha åtkomst till nyckeln. Formatet för nyckelsökvägen är specifikt för nyckellagringsprovidern. I följande lista beskrivs formatet för viktiga sökvägar för vissa Microsoft-systemnyckellagringsleverantörer.
Providernamn: MSSQL_CERTIFICATE_STORE
Nyckelsökvägsformat:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint
Where:
CertificateStoreLocation
Plats för certifikatarkivet, som måste vara aktuell användare eller lokal dator. Mer information finns i Lokala dator- och aktuella användarcertifikatarkiv.CertificateStore
Certifikatarkivets namn, till exempel "Min".CertificateThumbprint
Certifikatets tumavtryck.Exempel:
N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94' N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'Providernamn: MSSQL_CSP_PROVIDER
Nyckelsökvägsformat:ProviderName/KeyIdentifier
Where:
ProviderName
Namnet på en kryptografitjänstleverantör (CSP), som implementerar CAPI, för kolumnhuvudnyckelarkivet. Om du använder en HSM som ett nyckelarkiv måste providernamnet vara namnet på CSP:en som HSM-leverantör tillhandahåller. Providern måste vara installerad på en klientdator.KeyIdentifier
Identifierare för nyckeln, som används som en kolumnhuvudnyckel, i nyckelarkivet.Exempel:
N'My HSM CSP Provider/AlwaysEncryptedKey1'Providernamn: MSSQL_CNG_STORE
Nyckelsökvägsformat:ProviderName/KeyIdentifier
Where:
ProviderName
Namnet på nyckellagringsprovidern (KSP), som implementerar API:et Cryptography: Next Generation (CNG) för kolumnhuvudnyckellagret. Om du använder en HSM som ett nyckelarkiv måste providernamnet vara namnet på den KSP som HSM-leverantören tillhandahåller. Providern måste vara installerad på en klientdator.KeyIdentifier
Identifierare för nyckeln, som används som en kolumnhuvudnyckel, i nyckelarkivet.Exempel:
N'My HSM CNG Provider/AlwaysEncryptedKey1'Providernamn: AZURE_KEY_STORE
Nyckelsökvägsformat:KeyUrl
Where:
KeyUrl
URL:en för nyckeln i Azure Key Vault
ENCLAVE_COMPUTATIONS
Anger att kolumnhuvudnyckeln är enklavaktiverad. Du kan dela alla kolumnkrypteringsnycklar, krypterade med kolumnhuvudnyckeln, med en säker enklav på serversidan och använda dem för beräkningar i enklaven. Mer information finns i Always Encrypted med säkra enklaver.
underskrift
En binär literal som är ett resultat av sökvägen för digital signeringsnyckel och inställningen ENCLAVE_COMPUTATIONS med kolumnhuvudnyckeln. Signaturen visar om ENCLAVE_COMPUTATIONS har angetts eller inte. Signaturen skyddar de signerade värdena från att ändras av obehöriga användare. En Always Encrypted-aktiverad klientdrivrutin verifierar signaturen och returnerar ett fel till programmet om signaturen är ogiltig. Signaturen måste genereras med hjälp av verktyg på klientsidan. Mer information finns i Always Encrypted med säkra enklaver.
Anmärkningar
Skapa en kolumnhuvudnyckelmetadatapost innan du skapar en kolumnkrypteringsnyckelmetadatapost i databasen och innan någon kolumn i databasen kan krypteras med Always Encrypted. En kolumnhuvudnyckelpost i metadata innehåller inte den faktiska kolumnhuvudnyckeln. Kolumnhuvudnyckeln måste lagras i ett externt kolumnnyckelarkiv (utanför SQL Server). Nyckellagringsproviderns namn och kolumnhuvudnyckelsökvägen i metadata måste vara giltiga för ett klientprogram. Klientprogrammet måste använda kolumnhuvudnyckeln för att dekryptera en kolumnkrypteringsnyckel. Kolumnkrypteringsnyckeln krypteras med kolumnhuvudnyckeln. Klientprogrammet måste också köra frågor mot krypterade kolumner.
Vi rekommenderar att du använder verktyg, till exempel SQL Server Management Studio (SSMS) eller PowerShell för att hantera kolumnhuvudnycklar. Sådana verktyg genererar signaturer (om du använder Always Encrypted med säkra enklaver) och utfärdar CREATE COLUMN MASTER KEY automatiskt instruktioner för att skapa metadataobjekt för kolumnkrypteringsnycklar. Se Etablera Always Encrypted-nycklar med SQL Server Management Studio och Etablera Always Encrypted-nycklar med PowerShell.
Permissions
Kräver behörigheten ALTER ANY COLUMN MASTER KEY (ÄNDRA KOLUMNHUVUDNYCKEL ).
Examples
A. Skapa en kolumnhuvudnyckel
I följande exempel skapas en kolumnhuvudnyckelmetadatapost för en kolumnhuvudnyckel. Kolumnhuvudnyckeln lagras i certifikatarkivet för klientprogram som använder MSSQL_CERTIFICATE_STORE-providern för att komma åt kolumnhuvudnyckeln:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
);
Skapa en kolumnhuvudnyckelmetadatapost för en kolumnhuvudnyckel. Klientprogram, som använder MSSQL_CNG_STORE-providern, får åtkomst till kolumnhuvudnyckeln:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',
KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'
);
Skapa en kolumnhuvudnyckelmetadatapost för en kolumnhuvudnyckel. Kolumnhuvudnyckeln lagras i Azure Key Vault för klientprogram som använder AZURE_KEY_VAULT-providern för att få åtkomst till kolumnhuvudnyckeln.
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');
Skapa en kolumnhuvudnyckelmetadatapost för en kolumnhuvudnyckel. Huvudnyckeln för kolumnen lagras i ett anpassat huvudnyckelarkiv för kolumner:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',
KEY_PATH = 'https://contoso.vault/sales_db_tce_key'
);
B. Skapa en enklavaktiverad kolumnhuvudnyckel
I följande exempel skapas en kolumnhuvudnyckelmetadatapost för en enklavaktiverad kolumnhuvudnyckel. Den enklavaktiverade kolumnhuvudnyckeln lagras i ett certifikatarkiv för klientprogram som använder MSSQL_CERTIFICATE_STORE-providern för att komma åt kolumnhuvudnyckeln:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);
Skapa en kolumnhuvudnyckelmetadatapost för en enklavaktiverad kolumnhuvudnyckel. Den enklavaktiverade kolumnhuvudnyckeln lagras i Azure Key Vault för klientprogram som använder AZURE_KEY_VAULT-providern för att få åtkomst till kolumnhuvudnyckeln.
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)
);