Создание и хранение главных ключей столбцов для Always EncryptedCreate and store column master keys for Always Encrypted

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Главные ключи столбцов являются защищающими ключами, которые используются в режиме постоянного шифрования для кодирования ключей шифрования столбцов.Column Master Keys are key-protecting keys used in Always Encrypted to encrypt column encryption keys. Главные ключи столбцов должны храниться в надежном хранилище ключей и быть доступны для приложений, которым необходимо зашифровать или расшифровать данные, а также для средств для настройки постоянного шифрования и управления ключами постоянного шифрования.Column master keys must be stored in a trusted key store, and the keys need to be accessible to applications that need to encrypt or decrypt data, and tools for configuring Always Encrypted and managing Always Encrypted keys.

Эта статья содержит подробные сведения о выборе хранилища ключей и создании главных ключей столбцов для постоянного шифрования.This article provides details for selecting a key store and creating column master keys for Always Encrypted. Подробные сведения см. в разделе Overview of Key Management for Always Encrypted(Общие сведения об управлении ключами для постоянного шифрования).For a detailed overview, see Overview of Key Management for Always Encrypted.

Выбор хранилища ключей для главного ключа столбцаSelecting a Key Store for your Column Master Key

Постоянное шифрование поддерживает несколько хранилищ ключей для хранения главных ключей столбцов постоянного шифрования.Always Encrypted supports multiple key stores for storing Always Encrypted column master keys. Поддерживаемые хранилища зависят от используемого драйвера и версии.Supported key stores vary depending on which driver and version you're using.

Следует принимать во внимание две высокоуровневые категории хранилищ ключей — локальные хранилища ключейи централизованные хранилища ключей.There are two high-level categories of key stores to consider - Local Key Stores, and Centralized Key Stores.

Какое хранилище использовать — локальное или централизованное?Local or Centralized Key Store?

  • Локальные хранилища ключей могут использоваться только приложениями на компьютерах с локальным хранилищем ключей.Local Key Stores - can only be used by applications on computers that contain the local key store. Другими словами, нужно реплицировать хранилище ключей и ключ на каждый компьютер, где запущено приложение.In other words, you need to replicate the key store and key to each computer running your application. Примером локального хранилища ключей является хранилище сертификатов Windows.An example of a local key store is Windows Certificate Store. При использовании локального хранилища ключей необходимо убедиться, что хранилище ключей существует на каждом компьютере, на котором размещается приложение, и что компьютер содержит главные ключи столбцов, необходимые приложению для доступа к данным, защищенным с помощью постоянного шифрования.When using a local key store, you need to make sure that the key store exists on each machine hosting your application, and that the computer contains the column master keys your application needs to access data protected using Always Encrypted. При первой подготовке главного ключа столбца или при изменении (смене) ключа необходимо проверить, что ключ будет развернут на всех компьютерах, где размещены приложения.When you provision a column master key for the first time, or when you change (rotate) the key, you need to make sure the key gets deployed to all machines hosting your application(s).

  • Централизованные хранилища ключей обслуживают приложения на нескольких компьютерах.Centralized Key Stores - serve applications on multiple computers. Примером централизованного хранилища ключей является хранилище ключей Azure.An example of a centralized key store is Azure Key Vault. Централизованное хранилище ключей обычно упрощает управление ключами, так как вам не требуется поддерживать несколько копий главных ключей столбцов на нескольких компьютерах.A centralized key store usually makes key management easier because you don't need to maintain multiple copies of your column master keys on multiple machines. Убедитесь, что приложения настроены для подключения к централизованному хранилищу ключей.Ensure that your applications are configured to connect to the centralized key store.

Какие хранилища ключей поддерживаются клиентскими драйверами с включенным постоянным шифрованием?Which Key Stores are Supported in Always Encrypted Enabled Client Drivers?

Клиентские драйверы с включенным постоянным шифрованием — это драйверы клиента SQL Server со встроенной поддержкой для внедрения постоянного шифрования в клиентские приложения.Always Encrypted enabled client drivers are SQL Server client drivers that have built-in support for incorporating Always Encrypted into your client applications. Они включают в себя несколько встроенных поставщиков распространенных хранилищ ключей.Always Encrypted enabled drivers include a few built-in providers for popular key stores. Некоторые драйверы также позволяют реализовывать и регистрировать настраиваемый поставщик хранилища главных ключей столбцов, поэтому вы можете использовать любое хранилище ключей, даже если для него отсутствует встроенный поставщик.Some drivers also let you implement and register a custom column master key store provider, so that you can use any key store, even if there's no built-in provider for it. Делая выбор между встроенным поставщиком и настраиваемым поставщиком, необходимо учитывать, что использование встроенного поставщика обычно связано с незначительным изменением приложений (в некоторых случаях требуется только изменить строку подключения к базе данных).When deciding between a built-in provider and a custom provider consider that using a built-in provider typically means fewer changes to your applications (in some cases, only changing a database connection string is required).

Доступные встроенные поставщики зависят от выбранного драйвера, версии драйвера и операционной системы.The available built-in providers depend on which driver, driver version, and operating system is selected. Обратитесь к документации по Always Encrypted для конкретного драйвера, чтобы определить, какие готовые хранилища ключей поддерживаются, и узнать, поддерживает ли ваш драйвер настраиваемые поставщики хранилищ ключей. См. раздел Разработка приложений с помощью Always Encrypted.Please consult Always Encrypted documentation for your specific driver to determine which key stores are supported out-of-the-box and if your driver supports custom key store providers - Develop applications using Always Encrypted.

Какие хранилища ключей поддерживаются в инструментах SQL?Which Key Stores are Supported in SQL Tools?

SQL Server Management Studio и модуль SqlServer PowerShell поддерживают только главные ключи столбцов, хранящиеся в Azure Key Vault, хранилище сертификатов Windows и хранилищах ключей, которые предоставляют API шифрования следующего поколения (CNG) или API шифрования (CAPI).SQL Server Management Studio and the SqlServer PowerShell module only support column master keys stored in Azure Key Vault, Windows Certificate Store and key stores that provide Cryptography Next Generation (CNG) API or Cryptography API (CAPI).

Создание главных ключей столбцов в хранилище сертификатов WindowsCreating Column Master Keys in Windows Certificate Store

Главный ключ столбца может быть сертификатом, который хранится в хранилище сертификатов Windows.A column master key can be a certificate stored in Windows Certificate Store. Драйвер с поддержкой Always Encrypted не проверяет дату окончания срока действия или цепочку центра сертификации.An Always Encrypted-enabled driver doesn't verify an expiration date or a certificate authority chain. Сертификат просто используется как пара ключей, состоящая из открытого и закрытого ключей.A certificate is simply used as a key pair consisting of a public and private key.

Чтобы быть допустимым главным ключом столбца, сертификат должен отвечать следующим условиям:To be a valid column master key, a certificate must:

  • являться сертификатом X.509;be an X.509 certificate.
  • храниться в одном из расположений хранилища сертификатов: local machine или current userbe stored in one of the two certificate store locations: local machine or current user. (чтобы создать сертификат в хранилище сертификатов локального компьютера, необходимо иметь права администратора на целевом компьютере);(To create a certificate in the local machine certificate store location, you must be an administrator on the target machine.)
  • содержать закрытый ключ (рекомендуемая длина ключей в сертификате — 2048 бит или больше);contain a private key (the recommended length of the keys in the certificate is 2048 bits or greater).
  • поддерживать обмен ключами.be created for key exchange.

Существует несколько способов создания сертификата, который является допустимым главным ключом столбца, но проще всего создать самозаверяющий сертификат.There are multiple ways to create a certificate that is a valid column master key but the simplest option is to create a self-signed certificate.

Создание самозаверяющего сертификата с помощью PowerShellCreate a self-signed certificate using PowerShell

Для создания самозаверяющего сертификата используется командлет New-SelfSignedCertificate .Use the New-SelfSignedCertificate cmdlet to create a self-signed certificate. В примере ниже показано создание сертификата, который можно использовать в качестве главного ключа столбца для постоянного шифрования.The following example shows how to generate a certificate that can be used as a column master key for Always Encrypted.

# New-SelfSignedCertificate is a Windows PowerShell cmdlet that creates a self-signed certificate. The below examples show how to generate a certificate that can be used as a column master key for Always Encrypted.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:CurrentUser\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048 

# To create a certificate in the local machine certificate store location you need to run the cmdlet as an administrator.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:LocalMachine\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048

Создание самозаверяющего сертификата с помощью среды SQL Server Management Studio (SSMS)Create a self-signed certificate using SQL Server Management Studio (SSMS)

Дополнительные сведения см. в разделе Подготовка к работе ключей Always Encrypted с помощью SQL Server Management Studio.For details, see Provision Always Encrypted keys using SQL Server Management Studio. Пошаговое руководство, где используется среда SSMS и ключи постоянного шифрования сохраняются в хранилище сертификатов Windows, см. в статье Постоянное шифрование: защита конфиденциальных данных в базе данных SQL с помощью шифрования базы данных и хранение ключей шифрования в хранилище сертификатов Windows.For a step-by-step tutorial that uses SSMS and stores Always Encrypted keys in the Windows Certificate Store, see Always Encrypted Wizard tutorial (Windows Certificate Store).

Предоставление приложениям и пользователям доступа к сертификатамMaking Certificates Available to Applications and Users

Если главный ключ столбца является сертификатом, хранящимся в расположении хранилища сертификатов на локальном компьютере , необходимо экспортировать сертификат с закрытым ключом и импортировать его на все компьютеры, где размещены приложения, которые будут шифровать или расшифровывать данные, хранящиеся в зашифрованных столбцах, или средства для настройки постоянного шифрования и для управления ключами постоянного шифрования.If your column master key is a certificate stored in the local machine certificate store location, you need to export the certificate with the private key and import it to all machines that host applications that are expected to encrypt or decrypt data stored in encrypted columns, or tools for configuring Always Encrypted and for managing the Always Encrypted keys. Кроме того, каждому пользователю должно быть предоставлено разрешение на чтение сертификата, хранящегося в расположение хранилища сертификатов на локальном компьютера, чтобы он мог использовать сертификат в качестве главного ключа столбца.Also, each user must be granted a read permission for the certificate stored in the local machine certificate store location to be able to use the certificate as a column master key.

Если главный ключ столбца является сертификатом, хранящимся в расположении хранилища сертификатов под учетной записью текущего пользователя , необходимо экспортировать сертификат с закрытым ключом и импортировать его в расположение хранилища сертификатов для всех учетных записей пользователей, где размещены приложения, которые будут шифровать или расшифровывать данные, хранящиеся в зашифрованных столбцах, или средства для настройки постоянного шифрования и для управления ключами постоянного шифрования (на всех компьютерах с этими приложениями или средствами).If your column master key is a certificate stored in the current user certificate store location, you need to export the certificate with the private key and import it to the current user certificate store location of all user accounts running applications that are expected to encrypt or decrypt data stored in encrypted columns, or tools for configuring Always Encrypted and managing Always Encrypted keys (on all machines containing those applications/tools). Настройка разрешений не требуется — после входа в систему пользователь может обращаться ко всем сертификатам в расположении хранилища сертификатов текущего пользователя.No permission configuration is required - after logging on to a machine, a user can access all certificates in their current user certificate store location.

Использование PowerShellUsing PowerShell

Для импорта и экспорта сертификата используются командлеты Import-PfxCertificate и Export-PfxCertificate .Use the Import-PfxCertificate and Export-PfxCertificate cmdlets to import and export a certificate.

Использование консоли управления (MMC)Using Microsoft Management Console

Чтобы предоставить пользователю разрешение на чтение сертификата, хранящегося в расположение хранилища сертификатов на локальном компьютере, выполните приведенные далее действия.To grant a user the Read permission for a certificate stored in the local machine certificate store location, follow these steps:

  1. Откройте окно командной строки и введите mmc.Open a command prompt and type mmc.
  2. В консоли MMC в меню Файл выберите Добавить или удалить оснастку.In the MMC console, on the File menu, click Add/Remove Snap-in.
  3. В диалоговом окне Добавление или удаление оснастки нажмите кнопку Добавить.In the Add/Remove Snap-in dialog box, click Add.
  4. В диалоговом окне Добавление изолированной оснастки выберите Сертификатыи нажмите кнопку Добавить.In the Add Standalone Snap-in dialog box, click Certificates, click Add.
  5. В диалоговом окне оснастки Сертификаты выберите Учетная запись компьютераи нажмите кнопку Готово.In the Certificates snap-in dialog box, click Computer account, and then click Finish.
  6. В диалоговом окне Добавление изолированной оснастки нажмите кнопку Закрыть.In the Add Standalone Snap-in dialog box, click Close.
  7. В диалоговом окне Добавление или удаление оснастки нажмите кнопку ОК.In the Add/Remove Snap-in dialog box, click OK.
  8. В оснастке Сертификаты найдите сертификат в папке Сертификаты/Личное, правой кнопкой мыши щелкните "Сертификат", укажитеВсе задачи и выберите Управление закрытыми ключами.From the Certificates snap-in, locate the certificate in the Certificates > Personal folder, right-click the Certificate, point to All Tasks, and then click Manage Private Keys.
  9. В диалоговом окне Безопасность добавьте разрешение на чтение для учетной записи пользователя (если необходимо).In the Security dialog box, add read permission for a user account if needed.

Создание главных ключей столбцов в хранилище ключей AzureCreating Column Master Keys in Azure Key Vault

Хранилище ключей Azure обеспечивает защиту криптографических ключей и удобно для хранения главных ключей столбцов для постоянного шифрования, особенно в том случае, если приложения размещены в Azure.Azure Key Vault helps safeguard cryptographic keys and secrets, and is a convenient option for storing column master keys for Always Encrypted, especially if your applications are hosted in Azure. Для создания ключа в хранилище ключей Azureнеобходимы подписка Azure и хранилище ключей Azure.To create a key in Azure Key Vault, you need an Azure subscription and an Azure Key Vault.

Использование PowerShellUsing PowerShell

В примере ниже показано создание хранилища ключей Azure и ключа и последующее предоставление разрешений нужному пользователю.The following example creates a new Azure Key Vault and key, and then grants permissions to the desired user.

# Create a column master key in Azure Key Vault.
Connect-AzAccount
$SubscriptionId = "<Azure subscription ID>"
$resourceGroup = "<resource group name>"
$azureLocation = "<key vault location>"
$akvName = "<key vault name>"
$akvKeyName = "<column master key name>"
$azureCtx = Set-AzContext -SubscriptionId $SubscriptionId # Sets the context for the below cmdlets to the specified subscription.
New-AzResourceGroup -Name $resourceGroup -Location $azureLocation # Creates a new resource group - skip, if you desire group already exists.
New-AzKeyVault -VaultName $akvName -ResourceGroupName $resourceGroup -Location $azureLocation -SKU premium # Creates a new key vault - skip if your vault already exists.
Set-AzKeyVaultAccessPolicy -VaultName $akvName -ResourceGroupName $resourceGroup -PermissionsToKeys get, create, delete, list, update, import, backup, restore, wrapKey, unwrapKey, sign, verify -UserPrincipalName $azureCtx.Account
$akvKey = Add-AzureKeyVaultKey -VaultName $akvName -Name $akvKeyName -Destination HSM

Использование среды SQL Server Management Studio (SSMS)Using SQL Server Management Studio (SSMS)

Дополнительные сведения о создании главного ключа столбца в Azure Key Vault с помощью среды SSMS см. в разделе Подготовка ключей Always Encrypted с помощью SQL Server Management Studio.For details on how to create a column master key in Azure Key Vault using SSMS, see Provision Always Encrypted keys using SQL Server Management Studio. Пошаговое руководство, где используется среда SSMS и ключи постоянного шифрования сохраняются в хранилище ключей Azure, см. в статье Постоянное шифрование: защита конфиденциальных данных в базе данных SQL с помощью шифрования данных и хранение ключей шифрования в хранилище ключей Azure.For a step-by-step tutorial that uses SSMS and stores Always Encrypted keys in an Azure Key Vault, see Always Encrypted Wizard tutorial (Azure Key Vault).

Предоставление приложениям и пользователям доступа к ключам в хранилище ключей AzureMaking Azure Key Vault Keys Available to Applications and Users

При использовании ключа хранилища ключей Azure в качестве главного ключа столбца приложение должно пройти проверку подлинности в Azure, а удостоверение приложения должно иметь следующие разрешения на доступ к хранилищу ключей: get, unwrapKey и verify.When using an Azure Key Vault key as a column master key, your application needs to authenticate to Azure and your application's identity needs to have the following permissions on the key vault: get, unwrapKey, and verify.

Для подготовки ключей шифрования столбцов, которые защищены с помощью главного ключа столбца, хранящегося в хранилище ключей Azure, необходимы разрешения get, unwrapKey, wrapKey, signи verify .To provision column encryption keys that are protected with a column master key stored in Azure Key Vault, you need the get, unwrapKey, wrapKey, sign, and verify permissions. Кроме того, для создания ключа в хранилище ключей Azure необходимо разрешение create , для просмотра содержимого хранилища ключей требуется разрешение list .Additionally, to create a new key in an Azure Key Vault you need the create permission; to list the key vault contents, you need the list permission.

Использование PowerShellUsing PowerShell

Чтобы предоставить пользователям и приложениям доступ к фактическим ключам в Azure Key Vault, необходимо задать политику доступа к хранилищу (Set-AzKeyVaultAccessPolicy):To enable users and applications access to the actual keys in the Azure Key Vault, you must set the vault access policy (Set-AzKeyVaultAccessPolicy):

$vaultName = "<vault name>"
$resourceGroupName = "<resource group name>"
$userPrincipalName = "<user to grant access to>"
$clientId = "<client Id>"

# grant users permissions to the keys:
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -PermissionsToKeys create,get,wrapKey,unwrapKey,sign,verify,list -UserPrincipalName $userPrincipalName
# grant applications permissions to the keys:
Set-AzKeyVaultAccessPolicy  -VaultName $vaultName  -ResourceGroupName $resourceGroupName -ServicePrincipalName $clientId -PermissionsToKeys get,wrapKey,unwrapKey,sign,verify,list

Создание главных ключей столбцов в аппаратных модулях безопасности с помощью CNGCreating Column Master Keys in Hardware Security Modules using CNG

Главный ключ столбца для постоянного шифрования может храниться в хранилище ключей, реализующем API криптографии следующего поколения (CNG).A column master key for Always Encrypted can be stored in a key store implementing the Cryptography Next Generation (CNG) API. Как правило, этот тип хранилища является аппаратным модулем безопасности (HSM).Typically, this type of store is a hardware security module (HSM). HSM — это физическое устройство, которое защищает цифровые ключи и управляет ими, а также обеспечивает обработку шифрования.An HSM is a physical device that safeguards and manages digital keys and provides crypto-processing. Аппаратные модули безопасности традиционно имеют вид подключаемой платы или внешнего устройства, напрямую подключаемого к компьютеру (локальный HSM) или сетевому серверу.HSMs traditionally come in the form of a plug-in card or an external device that attaches directly to a computer (local HSMs) or a network server.

Чтобы модуль HSM был доступен для приложений на данном компьютере, на компьютере должен быть установлен и настроен поставщик хранилища ключей (KSP), реализующий CNG.To make an HSM available to applications on a given machine, a Key Storage Provider (KSP), which implements CNG, must be installed and configured on the machine. Клиентский драйвер с постоянным шифрованием (поставщик хранилища главных ключей столбцов в драйвере) использует KSP для шифрования и расшифровки ключей шифрования столбцов, защищенных главным ключом столбца, который хранится в хранилище ключей.An Always Encrypted client driver (a column master key store provider inside the driver), uses the KSP to encrypt and decrypt column encryption keys, protected with column master key stored in the key store.

В состав Windows входит ПО поставщика хранилища ключей Microsoft Software Key Storage Provider — программный поставщик KSP, который можно использовать для тестирования.Windows includes Microsoft Software Key Storage Provider - a software-based KSP, which you can use for testing purposes. См. раздел CNG Key Storage Providers(Поставщики хранилища ключей CNG).See CNG Key Storage Providers.

Создание главных ключей столбцов в хранилище ключей с помощью CNG или KSPCreating Column Master Keys in a Key Store using CNG/KSP

Главный ключ столбца должен быть асимметричным ключом (парой открытого и закрытого ключей), использующим алгоритм RSA.A column master key should be an asymmetric key (a public/private key pair), using the RSA algorithm. Рекомендуемая длина ключа — 2048 или больше.The recommended key length is 2048 or greater.

Использование средств с поддержкой HSMUsing HSM-specific Tools

Обратитесь к документации по имеющемуся аппаратному модулю безопасности.Consult the documentation for your HSM.

Использование PowerShellUsing PowerShell

Для создания ключа в хранилище ключей с помощью CNG в PowerShell можно использовать API-интерфейсы .NET.You can use .NET APIs to create a key in a key store using CNG in PowerShell.

$cngProviderName = "Microsoft Software Key Storage Provider" # If you have an HSM, you can use a KSP for your HSM instead of a Microsoft KSP
$cngAlgorithmName = "RSA"
$cngKeySize = 2048 # Recommended key size for Always Encrypted column master keys
$cngKeyName = "AlwaysEncryptedKey" # Name identifying your new key in the KSP
$cngProvider = New-Object System.Security.Cryptography.CngProvider($cngProviderName)
$cngKeyParams = New-Object System.Security.Cryptography.CngKeyCreationParameters
$cngKeyParams.provider = $cngProvider
$cngKeyParams.KeyCreationOptions = [System.Security.Cryptography.CngKeyCreationOptions]::OverwriteExistingKey
$keySizeProperty = New-Object System.Security.Cryptography.CngProperty("Length", [System.BitConverter]::GetBytes($cngKeySize), [System.Security.Cryptography.CngPropertyOptions]::None);
$cngKeyParams.Parameters.Add($keySizeProperty)
$cngAlgorithm = New-Object System.Security.Cryptography.CngAlgorithm($cngAlgorithmName)
$cngKey = [System.Security.Cryptography.CngKey]::Create($cngAlgorithm, $cngKeyName, $cngKeyParams)

Использование среды SQL Server Management StudioUsing SQL Server Management Studio

См. раздел Подготовка к работе ключей Always Encrypted с помощью SQL Server Management Studio.See Provision Always Encrypted keys using SQL Server Management Studio.

Предоставление приложениям и пользователям доступа к ключам CNGMaking CNG Keys Available to Applications and Users

Сведения о настройке KSP на компьютере и предоставлении приложениям и пользователям доступа к HSM см. в документации по HSM и KSP.Consult your HSM and KSP documentation for how to configure the KSP on a machine and how to grant applications and users access to the HSM.

Создание главных ключей столбцов в аппаратных модулях безопасности с помощью CAPICreating Column Master Keys in Hardware Security Modules using CAPI

Главный ключ столбца для постоянного шифрования может храниться в хранилище ключей, реализующем API криптографии (CAPI).A column master key for Always Encrypted can be stored in a key store that implements the Cryptography API (CAPI). Как правило, такое хранилище представляет собой аппаратный модуль безопасности (HSM) — физическое устройство, которое защищает цифровые ключи и управляет ими, а также обеспечивает обработку шифрования.Typically, such a store is a hardware security module (HSM) - a physical device that safeguards and manages digital keys and provides crypto-processing. Аппаратные модули безопасности традиционно имеют вид подключаемой платы или внешнего устройства, напрямую подключаемого к компьютеру (локальный HSM) или сетевому серверу.HSMs traditionally come in the form of a plug-in card or an external device that attaches directly to a computer (local HSMs) or a network server.

Чтобы модуль HSM был доступен для приложений на данном компьютере, на компьютере должен быть установлен и настроен поставщик служб шифрования (CSP), реализующий CAPI.To make an HSM available to applications on a given machine, a Cryptography Service Provider (CSP), which implements CAPI, must be installed and configured on the machine. Клиентский драйвер с постоянным шифрованием (поставщик хранилища главных ключей столбцов в драйвере) использует CSP для шифрования и расшифровки ключей шифрования столбцов, защищенных главным ключом столбца, который хранится в хранилище ключей.An Always Encrypted client driver (a column master key store provider inside the driver), uses the CSP to encrypt and decrypt column encryption keys, protected with column master key stored in the key store.

Примечание

CAPI — это устаревший API, который не рекомендуется использовать.CAPI is a legacy, deprecated API. Если для вашего модуля HSM доступен поставщик KSP, следует использовать именно его, а не CSP или CAPI.If a KSP is available for your HSM, you should use it, instead of a CSP/CAPI.

CSP должен поддерживать алгоритм RSA, используемый с постоянным шифрованием.A CSP must support the RSA algorithm to be used with Always Encrypted.

В состав Windows входят следующие программные (не поддерживаемые модулем HSM) поставщики CSP, которые поддерживают RSA и могут использоваться в целях тестирования: Microsoft Enhanced RSA и AES Cryptographic Provider.Windows includes the following software-based (not backed by an HSM) CSPs that support RSA and can use for testing purposes: Microsoft Enhanced RSA and AES Cryptographic Provider.

Создание главных ключей столбцов в хранилище ключей с помощью CAPI или CSPCreating Column Master Keys in a Key Store using CAPI/CSP

Главный ключ столбца должен быть асимметричным ключом (парой открытого и закрытого ключей), использующим алгоритм RSA.A column master key should be an asymmetric key (a public/private key pair), using the RSA algorithm. Рекомендуемая длина ключа — 2048 или больше.The recommended key length is 2048 or greater.

Использование средств с поддержкой HSMUsing HSM-specific Tools

Обратитесь к документации по имеющемуся аппаратному модулю безопасности.Consult the documentation for your HSM.

Использование среды SQL Server Management Studio (SSMS)Using SQL Server Management Studio (SSMS)

См. раздел Подготовка к работе ключей Always Encrypted с помощью SQL Server Management Studio.See Provision Always Encrypted keys using SQL Server Management Studio.

Предоставление приложениям и пользователям доступа к ключам CNGMaking CNG Keys Available to Applications and Users

Сведения о настройке CSP на компьютере и предоставлении приложениям и пользователям доступа к HSM см. в документации по HSM и CSP.Consult the documentation for your HSM and CSP for how to configure the CSP on a machine, and how to grant applications and users access to the HSM.

Next StepsNext Steps

См. также:See Also