Megosztás a következőn keresztül:


CREATE COLUMN MASTER KEY (Transact-SQL)

A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók Azure SQL DatabaseFelügyelt Azure SQL-példány

Létrehoz egy oszlop főkulcs metaadat-objektumát egy adatbázisban. Az oszlop főkulcs metaadatainak bejegyzése egy külső kulcstárolóban tárolt kulcsot jelöl. A kulcs védi (titkosítja) az oszloptitkosítási kulcsokat az Always Encrypted vagy az Always Encrypted biztonságos enklávékkal való használatakor. Több oszlop főkulcsa lehetővé teszi a kulcsok rendszeres elforgatását a biztonság növelése érdekében. Hozzon létre egy oszlop főkulcsát egy kulcstárban és annak kapcsolódó metaadat-objektumában az SQL Server Management Studióban vagy a PowerShellben az Object Explorer használatával. További részletekért lásd az Always Encrypted kulcskezelésének áttekintését.

Transact-SQL szintaxis konvenciók

Fontos

Az enklávé-kompatibilis kulcsok létrehozásához (ENCLAVE_COMPUTATIONS) az Always Encryptedt biztonságos enklávékkal kell létrehozni.

Szemantika

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
Az oszlop főkulcsának neve az adatbázisban.

key_store_provider_name
Egy kulcstároló-szolgáltató nevét adja meg. A kulcstároló-szolgáltató egy ügyféloldali szoftverösszetevő, amely egy fő oszlopkulcsot tartalmazó kulcstárolót tartalmaz.

Az Always Encrypted használatával engedélyezett ügyfélillesztő:

  • Kulcstároló-szolgáltató nevét használja
  • A kulcstároló-szolgáltató keresése a kulcstároló-szolgáltatók illesztőprogram-beállításjegyzékében

Az illesztőprogram ezután a szolgáltatót használja az oszloptitkosítási kulcsok visszafejtéséhez. Az oszloptitkosítási kulcsokat egy oszlop főkulcsa védi. Az oszlop főkulcsa a mögöttes kulcstárolóban van tárolva. Ezután az oszloptitkosítási kulcs egyszerű szöveges értéke a titkosított adatbázisoszlopoknak megfelelő lekérdezési paraméterek titkosítására szolgál. Vagy az oszloptitkosítási kulcs visszafejti a titkosított oszlopokból származó lekérdezési eredményeket.

Az Always Encrypted-kompatibilis ügyfélillesztő-kódtárak közé tartoznak a népszerű kulcstárolók kulcstárolói.

Az elérhető szolgáltatók halmaza az ügyfélillesztő típusától és verziójától függ. Tekintse meg az Always Encrypted dokumentációját az egyes illesztőprogramok esetében: Alkalmazások fejlesztése az Always Encrypted használatával.

Az alábbi táblázat a rendszerszolgáltatók nevét mutatja be:

Kulcstároló-szolgáltató neve Mögöttes kulcstároló
"MSSQL_CERTIFICATE_STORE" Windows tanúsítványtároló
"MSSQL_CSP_PROVIDER" Egy tároló, például egy hardveres biztonsági modul (HSM), amely támogatja a Microsoft CryptoAPI-t.
"MSSQL_CNG_STORE" Egy tároló, például egy hardveres biztonsági modul (HSM), amely támogatja a Cryptography API: Next Generation használatát.
"AZURE_KEY_VAULT" Az Azure Key Vault használatának első lépései
"MSSQL_JAVA_KEYSTORE" Java Key Store.}

Az Always Encrypted-kompatibilis ügyfélillesztőben beállíthat egy egyéni kulcstároló-szolgáltatót, amely olyan oszlop főkulcsait tárolja, amelyekhez nincs beépített kulcstároló-szolgáltató. Az egyéni kulcstároló-szolgáltatók nevei nem kezdődhetnek a "MSSQL_" előtaggal, amely a Microsoft kulcstároló-szolgáltatók számára fenntartott előtag.

key_path
A kulcs elérési útja az oszlop főkulcstárolójában. A kulcs elérési útjának érvényesnek kell lennie minden olyan ügyfélalkalmazás esetében, amely várhatóan titkosítja vagy visszafejti az adatokat. Az adatok egy olyan oszlopban tárolódnak, amely (közvetve) a hivatkozott oszlop főkulcsa által védett. Az ügyfélalkalmazásnak hozzá kell férnie a kulcshoz. A kulcs elérési útjának formátuma a kulcstároló szolgáltatójára jellemző. Az alábbi lista az egyes Microsoft rendszerkulcstár-szolgáltatók kulcsútvonalainak formátumát ismerteti.

  • Szolgáltató neve: MSSQL_CERTIFICATE_STORE

    Kulcs elérési útja formátuma:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint

    Where:

    CertificateStoreLocation
    A tanúsítványtároló helye, amelynek aktuális felhasználónak vagy helyi gépnek kell lennie. További információt a Helyi gép és az Aktuális felhasználói tanúsítványtárolók című témakörben talál.

    CertificateStore
    Tanúsítványtároló neve, például "Saját".

    CertificateThumbprint
    Tanúsítvány ujjlenyomata.

    Példák:

    N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94'  
    
    N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'  
    
  • Szolgáltató neve: MSSQL_CSP_PROVIDER

    Kulcs elérési útja formátuma:ProviderName/KeyIdentifier

    Where:

    ProviderName
    A CAPI-t implementáló titkosítási szolgáltató (CSP) neve az oszlop főkulcstárolójához. Ha HSM-et használ kulcstárolóként, a szolgáltató nevének annak a CSP-nek a neve kell legyen, amelyet a HSM szállítóinak kell szolgáltatnia. A szolgáltatót telepíteni kell egy ügyfélszámítógépre.

    KeyIdentifier
    Az oszlop főkulcsaként használt kulcs azonosítója a kulcstárolóban.

    Példák:

    N'My HSM CSP Provider/AlwaysEncryptedKey1'  
    
  • Szolgáltató neve: MSSQL_CNG_STORE

    Kulcs elérési útja formátuma:ProviderName/KeyIdentifier

    Where:

    ProviderName
    A kulcstároló-szolgáltató (KSP) neve, amely implementálja a Cryptography: Next Generation (CNG) API-t az oszlop főkulcstárolójában. Ha kulcstárolóként HSM-et használ, a szolgáltató nevének annak a KSP-nek a neve kell legyen, amelyet a HSM-szállító szállít. A szolgáltatót telepíteni kell egy ügyfélszámítógépre.

    KeyIdentifier
    Az oszlop főkulcsaként használt kulcs azonosítója a kulcstárolóban.

    Példák:

    N'My HSM CNG Provider/AlwaysEncryptedKey1'  
    
  • Szolgáltató neve: AZURE_KEY_STORE

    Kulcs elérési útja formátuma:KeyUrl

    Where:

    KeyUrl
    A kulcs URL-címe az Azure Key Vaultban

ENCLAVE_COMPUTATIONS
Megadja, hogy az oszlop főkulcsa enklávé-kompatibilis-e. Az összes oszloptitkosítási kulcsot megoszthatja az oszlop főkulcsával titkosítva egy kiszolgálóoldali biztonságos enklávéval, és használhatja őket az enklávén belüli számításokhoz. További információ: Always Encrypted with secure enklávék.

aláírás
Bináris literál, amely a kulcs digitális aláírásának és az oszlop főkulcsával való ENCLAVE_COMPUTATIONS beállításának eredménye. Az aláírás tükrözi, hogy ENCLAVE_COMPUTATIONS van-e megadva. Az aláírás védi az aláírt értékeket a jogosulatlan felhasználók általi módosítástól. Az Always Encrypted-kompatibilis ügyfélillesztő ellenőrzi az aláírást, és hibát ad vissza az alkalmazásnak, ha az aláírás érvénytelen. Az aláírást ügyféloldali eszközökkel kell létrehozni. További információ: Always Encrypted with secure enklávék.

Megjegyzések

Hozzon létre egy oszloptitkosítási kulcs metaadat-bejegyzését, mielőtt létrehoz egy oszloptitkosítási kulcs metaadat-bejegyzést az adatbázisban, és mielőtt az adatbázis bármely oszlopa titkosítható lenne az Always Encrypted használatával. A metaadatok egyik oszlop főkulcs-bejegyzése nem tartalmazza a tényleges oszlop főkulcsát. Az oszlop főkulcsát egy külső oszlopkulcs-tárolóban kell tárolni (az SQL Serveren kívül). A kulcstároló szolgáltatójának nevének és a metaadatokban szereplő oszlop főkulcs-elérési útjának érvényesnek kell lennie egy ügyfélalkalmazáshoz. Az ügyfélalkalmazásnak az oszlop főkulcsával kell visszafejtenie az oszloptitkosítási kulcsot. Az oszloptitkosítási kulcs az oszlop főkulcsával van titkosítva. Az ügyfélalkalmazásnak titkosított oszlopokat is le kell kérdeznie.

Ajánlott olyan eszközöket használni, mint az SQL Server Management Studio (SSMS) vagy a PowerShell az oszlop főkulcsainak kezeléséhez. Az ilyen eszközök aláírásokat hoznak létre (ha az Always Encryptedt biztonságos enklávékkal használják), és automatikusan utasításokat adnak ki CREATE COLUMN MASTER KEY az oszloptitkosítási kulcs metaadat-objektumainak létrehozásához. Lásd : Always Encrypted-kulcsok kiépítése az SQL Server Management Studióval és Az Always Encrypted kulcsok kiosztása a PowerShell használatával.

Permissions

Az ALTER ANY COLUMN MASTER KEY engedélyre van szükség.

Példák

A. Oszlop főkulcsának létrehozása

Az alábbi példa egy oszlopmintakulcs metaadat-bejegyzését hozza létre egy oszlop főkulcsához. Az oszlop főkulcsa a Tanúsítványtárban található azon ügyfélalkalmazások számára, amelyek a MSSQL_CERTIFICATE_STORE szolgáltatót használják az oszlop főkulcsának eléréséhez:

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

Oszlopmintakulcs metaadat-bejegyzésének létrehozása az oszlop főkulcsához. Az MSSQL_CNG_STORE szolgáltatót használó ügyfélalkalmazások az oszlop főkulcsához férnek hozzá:

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

Oszlopmintakulcs metaadat-bejegyzésének létrehozása az oszlop főkulcsához. Az oszlop főkulcsa az Azure Key Vaultban van tárolva az AZURE_KEY_VAULT szolgáltatót használó ügyfélalkalmazások számára az oszlop főkulcsának eléréséhez.

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

Oszlopmintakulcs metaadat-bejegyzésének létrehozása az oszlop főkulcsához. Az oszlop főkulcsa egy egyéni oszlop főkulcstárolójában van tárolva:

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

B. Enklávé-kompatibilis oszlop főkulcsának létrehozása

Az alábbi példa létrehoz egy oszlop főkulcs metaadat-bejegyzését egy enklávéval kompatibilis oszlop főkulcsához. Az enklávé-kompatibilis oszlop főkulcsa tanúsítványtárolóban van tárolva az olyan ügyfélalkalmazások számára, amelyek a MSSQL_CERTIFICATE_STORE szolgáltatót használják az oszlop főkulcsának eléréséhez:

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

Hozzon létre egy oszlopmintakulcs metaadat-bejegyzését egy enklávéval kompatibilis oszlop főkulcsához. Az enklávé-kompatibilis oszlop főkulcsa az Azure Key Vaultban van tárolva az AZURE_KEY_VAULT szolgáltatót használó ügyfélalkalmazások számára az oszlop főkulcsának eléréséhez.

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

Lásd még: