Sdílet prostřednictvím


CREATE COLUMN MASTER KEY (Transact-SQL)

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed Instance

Vytvoří objekt metadat hlavního klíče sloupce v databázi. Položka metadat hlavního klíče sloupce představuje klíč uložený v úložišti externích klíčů. Klíč chrání (šifruje) šifrovací klíče sloupců, když používáte funkci Always Encrypted nebo Always Encrypted se zabezpečenými enklávy. Více hlavních klíčů sloupců umožňuje pravidelné obměně klíčů, aby se zlepšilo zabezpečení. Pomocí Průzkumníka objektů v sadě SQL Server Management Studio nebo PowerShellu vytvořte hlavní klíč sloupce v úložišti klíčů a související objekt metadat v databázi. Podrobnosti najdete v tématu Přehled správy klíčů pro funkci Always Encrypted.

Transact-SQL konvence syntaxe

Důležité

Vytváření klíčů s podporou enklávy (s ENCLAVE_COMPUTATIONS) vyžaduje funkci Always Encrypted se zabezpečenými enklávami.

Syntaxe

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
Název hlavního klíče sloupce v databázi.

key_store_provider_name
Určuje název zprostředkovatele úložiště klíčů. Zprostředkovatel úložiště klíčů je softwarová komponenta na straně klienta, která obsahuje úložiště klíčů s hlavním klíčem sloupce.

Klientský ovladač s povolenou funkcí Always Encrypted:

  • Používá název zprostředkovatele úložiště klíčů.
  • Vyhledá zprostředkovatele úložiště klíčů v registru zprostředkovatelů úložiště klíčů ovladače.

Ovladač pak pomocí zprostředkovatele dešifruje šifrovací klíče sloupců. Šifrovací klíče sloupců jsou chráněné hlavním klíčem sloupce. Hlavní klíč sloupce je uložený v podkladovém úložišti klíčů. Hodnota prostého textu šifrovacího klíče sloupce se pak použije k šifrování parametrů dotazu, které odpovídají šifrovaným databázovým sloupcům. Šifrovací klíč sloupce také dešifruje výsledky dotazu ze šifrovaných sloupců.

Knihovny klientských ovladačů s podporou funkce Always Encrypted zahrnují zprostředkovatele úložiště klíčů pro oblíbená úložiště klíčů.

Sada dostupných poskytovatelů závisí na typu a verzi klientského ovladače. Konkrétní ovladače najdete v dokumentaci k funkci Always Encrypted: Vývoj aplikací pomocí funkce Always Encrypted.

Následující tabulka uvádí názvy poskytovatelů systému:

Název zprostředkovatele úložiště klíčů Základní úložiště klíčů
"MSSQL_CERTIFICATE_STORE" Windows Certificate Store
"MSSQL_CSP_PROVIDER" Úložiště, jako je modul hardwarového zabezpečení (HSM), který podporuje Rozhraní Microsoft CryptoAPI.
"MSSQL_CNG_STORE" Úložiště, jako je modul hardwarového zabezpečení (HSM), který podporuje rozhraní API kryptografie: příští generace.
"AZURE_KEY_VAULT" Viz Začínáme se službou Azure Key Vault
"MSSQL_JAVA_KEYSTORE" Java Key Store.}

V klientském ovladači s podporou funkce Always Encrypted můžete nastavit vlastního zprostředkovatele úložiště klíčů, který ukládá hlavní klíče sloupců, pro které neexistuje žádný integrovaný zprostředkovatel úložiště klíčů. Názvy poskytovatelů vlastního úložiště klíčů nemůžou začínat na MSSQL_, což je předpona vyhrazená pro poskytovatele úložiště klíčů Microsoftu.

key_path
Cesta klíče v úložišti hlavního klíče sloupce. Cesta ke klíči musí být platná pro každou klientskou aplikaci, u které se očekává šifrování nebo dešifrování dat. Data jsou uložená ve sloupci, který je (nepřímo) chráněný hlavním klíčem odkazovaného sloupce. Klientská aplikace musí mít přístup ke klíči. Formát cesty ke klíči je specifický pro zprostředkovatele úložiště klíčů. Následující seznam popisuje formát cest klíčů pro konkrétní poskytovatele systémového úložiště klíčů Microsoftu.

  • Název zprostředkovatele: MSSQL_CERTIFICATE_STORE

    Formát cesty klíče:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint

    Where:

    CertificateStoreLocation
    Umístění úložiště certifikátů, které musí být aktuální uživatel nebo místní počítač. Další informace naleznete v tématu Místní počítač a úložiště aktuálních uživatelských certifikátů.

    CertificateStore
    Název úložiště certifikátů, například My.

    CertificateThumbprint
    Kryptografický otisk certifikátu

    Příklady:

    N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94'  
    
    N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'  
    
  • Název zprostředkovatele: MSSQL_CSP_PROVIDER

    Formát cesty klíče:ProviderName/KeyIdentifier

    Where:

    ProviderName
    Název zprostředkovatele kryptografických služeb (CSP), který implementuje CAPI pro úložiště hlavních klíčů sloupců. Pokud používáte hsM jako úložiště klíčů, musí název poskytovatele být název poskytovatele CSP, který dodavatel HSM dodává. Zprostředkovatel musí být nainstalovaný v klientském počítači.

    KeyIdentifier
    Identifikátor klíče, který se používá jako hlavní klíč sloupce v úložišti klíčů.

    Příklady:

    N'My HSM CSP Provider/AlwaysEncryptedKey1'  
    
  • Název zprostředkovatele: MSSQL_CNG_STORE

    Formát cesty klíče:ProviderName/KeyIdentifier

    Where:

    ProviderName
    Název zprostředkovatele úložiště klíčů (KSP), který implementuje rozhraní API CNG (Cryptography: Next Generation) pro úložiště hlavních klíčů sloupců. Pokud používáte hsM jako úložiště klíčů, název poskytovatele musí být název poskytovatele, který dodavatel HSM dodává. Zprostředkovatel musí být nainstalovaný v klientském počítači.

    KeyIdentifier
    Identifikátor klíče, který se používá jako hlavní klíč sloupce v úložišti klíčů.

    Příklady:

    N'My HSM CNG Provider/AlwaysEncryptedKey1'  
    
  • Název zprostředkovatele: AZURE_KEY_STORE

    Formát cesty klíče:KeyUrl

    Where:

    KeyUrl
    Adresa URL klíče ve službě Azure Key Vault

ENCLAVE_COMPUTATIONS
Určuje, že hlavní klíč sloupce je povolen enkláva. Můžete sdílet všechny šifrovací klíče sloupců, zašifrované hlavním klíčem sloupce, se zabezpečeným enklávem na straně serveru a použít je k výpočtům uvnitř enklávy. Další informace najdete v tématu Always Encrypted se zabezpečenými enklávy.

podpis
Binární literál, který je výsledkem cesty digitálního podpisového klíče a nastavení ENCLAVE_COMPUTATIONS pomocí hlavního klíče sloupce. Podpis odráží, zda je zadán ENCLAVE_COMPUTATIONS nebo ne. Podpis chrání podepsané hodnoty před neoprávněnými uživateli. Klientský ovladač s podporou Always Encrypted ověří podpis a vrátí aplikaci chybu, pokud je podpis neplatný. Podpis se musí vygenerovat pomocí nástrojů na straně klienta. Další informace najdete v tématu Always Encrypted se zabezpečenými enklávy.

Poznámky

Před vytvořením položky metadat šifrovacího klíče sloupce v databázi vytvořte položku metadat hlavního klíče sloupce a před tím, než lze libovolný sloupec v databázi zašifrovat pomocí funkce Always Encrypted. Položka hlavního klíče sloupce v metadatech neobsahuje skutečný hlavní klíč sloupce. Hlavní klíč sloupce musí být uložený v úložišti klíčů externího sloupce (mimo SQL Server). Název zprostředkovatele úložiště klíčů a cesta hlavního klíče sloupce v metadatech musí být platné pro klientskou aplikaci. Klientská aplikace potřebuje k dešifrování šifrovacího klíče sloupce použít hlavní klíč sloupce. Šifrovací klíč sloupce je šifrovaný pomocí hlavního klíče sloupce. Klientská aplikace také potřebuje dotazovat šifrované sloupce.

Ke správě hlavních klíčů sloupců se doporučuje používat nástroje, jako je SQL Server Management Studio (SSMS) nebo PowerShell. Tyto nástroje generují podpisy (pokud používáte funkci Always Encrypted se zabezpečenými enklávy) a automaticky vydává CREATE COLUMN MASTER KEY příkazy k vytvoření objektů metadat šifrovacího klíče sloupce. Viz Zřízení klíčů Always Encrypted pomocí aplikace SQL Server Management Studio a zřízení klíčů Always Encrypted pomocí PowerShellu.

Povolení

Vyžaduje oprávnění ALTER ANY COLUMN MASTER KEY .

Examples

A. Vytvoření hlavního klíče sloupce

Následující příklad vytvoří položku metadat hlavního klíče sloupce pro hlavní klíč sloupce. Hlavní klíč sloupce je uložený v úložišti certifikátů pro klientské aplikace, které používají zprostředkovatele MSSQL_CERTIFICATE_STORE pro přístup k hlavnímu klíči sloupce:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
     KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',   
     KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'  
   );  

Vytvořte položku metadat hlavního klíče sloupce pro hlavní klíč sloupce. Klientské aplikace, které používají poskytovatele MSSQL_CNG_STORE, mají přístup k hlavnímu klíči sloupce:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
    KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',    
    KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'  
);  

Vytvořte položku metadat hlavního klíče sloupce pro hlavní klíč sloupce. Hlavní klíč sloupce je uložený ve službě Azure Key Vault pro klientské aplikace, které používají zprostředkovatele AZURE_KEY_VAULT, pro přístup k hlavnímu klíči sloupce.

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');  

Vytvořte položku metadat hlavního klíče sloupce pro hlavní klíč sloupce. Hlavní klíč sloupce je uložený ve vlastním úložišti hlavních klíčů sloupců:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
    KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',    
    KEY_PATH = 'https://contoso.vault/sales_db_tce_key'  
);  

B. Vytvoření hlavního klíče sloupce s podporou enklávy

Následující příklad vytvoří položku metadat hlavního klíče sloupce pro hlavní klíč sloupce s podporou enklávy. Hlavní klíč sloupce s podporou enklávy je uložený v úložišti certifikátů pro klientské aplikace, které používají zprostředkovatele MSSQL_CERTIFICATE_STORE pro přístup k hlavnímu klíči sloupce:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
     KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',   
     KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'  
     ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
  );  

Vytvořte položku metadat hlavního klíče sloupce pro hlavní klíč sloupce s podporou enklávy. Hlavní klíč sloupce s podporou enklávy je uložený ve službě Azure Key Vault pro klientské aplikace, které používají zprostředkovatele AZURE_KEY_VAULT, pro přístup k hlavnímu klíči sloupce.

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)
);

Viz také