列マスター キーを作成して保存する (Always Encrypted)Create and Store Column Master Keys (Always Encrypted)

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

列マスター キー は、Always Encrypted で列暗号化キーの暗号化に使用される、キー保護用キーです。Column Master Keys are key-protecting keys used in Always Encrypted to encrypt column encryption keys. 列マスター キーは信頼できるキー ストアに格納する必要があり、キーはデータの暗号化または暗号化解除に必要なアプリケーション、および Always Encrypted の構成および Always Encrypted キーの管理のためのツールにアクセスできる必要があります。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.

この記事では、キー ストアの選択、および Always Encrypted の列マスター キーの作成について説明します。This article provides details for selecting a key store and creating column master keys for Always Encrypted. 詳細な概要については、「 Overview of Key Management for Always Encrypted」(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 は、Always Encrypted の列マスター キーを格納するための複数のキー ストアをサポートしています。Always Encrypted supports multiple key stores for storing Always Encrypted column master keys. サポートされるキー ストアは、使用しているドライバーとバージョンによって異なります。Supported key stores vary depending on which driver and version you are using.

キー ストアでは 2 つの大きなカテゴリを考慮する必要があります。 ローカル キー ストアと、 集中型キー ストアです。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. ローカル キー ストアを使用する場合は、キー ストアがアプリケーションをホストしている各コンピューターに存在していること、およびアプリケーションが Always Encrypted を使用して保護されたデータにアクセスするために必要な列マスター キーがそのコンピューターに含まれていることを確認する必要があります。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 Key Vaultです。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. アプリケーションが集中型キー ストアに接続するように構成されていることを確認する必要があります。You need to ensure that your applications are configured to connect to the centralized key store.

Always Encrypted が有効なクライアント ドライバーではどのキー ストアがサポートされていますか?Which Key Stores are Supported in Always Encrypted Enabled Client Drivers?

Always Encrypted が有効なクライアント ドライバーは Always Encrypted をクライアント アプリケーションに組み込むためのサポートが組み込まれた 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 が有効なドライバーには、一般的なキー ストアの組み込みのプロバイダーがいくつか含まれています。Always Encrypted enabled drivers include a few built-in providers for popular key stores. ドライバーによっては、プロバイダーが組み込まれていなくても任意のキー ストアを使用できるように、カスタム列マスター キー ストアのプロバイダーを実装して登録することが求められる場合もあります。Note that 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 is 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 のドキュメントでお使いのドライバーについて確認してください。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.

サポートされているツールSupported Tools

SQL Server Management StudioSQL Server PowerShell モジュール を使用して、Always Encrypted を構成し、Always Encrypted キーを管理することができます。You can use SQL Server Management Studio and the SqlServer PowerShell module to configure Always Encrypted and manage Always Encrypted keys. これらのツールをサポートしているキー ストアの一覧は、次を参照してください。For a list of which key stores these tool support, see:

Windows 証明書ストアで列マスター キーを作成するCreating Column Master Keys in Windows Certificate Store

列マスター キーを、Windows 証明書ストアに格納された証明書にすることができます。A column master key can be a certificate stored in Windows Certificate Store. Always Encrypted が有効なドライバーは、有効期限や証明機関チェーンを確認しないことに注意してください。Note that an Always Encrypted-enabled driver does not 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.
  • が、2 つの証明書ストアの場所 ( ローカル コンピューター または 現在のユーザー) のどちらかに保存されているbe 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.

PowerShell を使用して自己署名証明書を作成するCreate a self-signed certificate using PowerShell

New-SelfSignedCertificate コマンドレットを使用して、自己署名証明書を作成します。Use the New-SelfSignedCertificate cmdlet to create a self-signed certificate. 次の例は、Always Encrypted の列マスター キーとして使用できる証明書を生成する方法を示します。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)

詳細については、「 Configure Always Encrypted using SQL Server Management Studio」(SQL Server Management Studio を使用した Always Encrypted の構成) を参照してください。For details, see Configure Always Encrypted using SQL Server Management Studio. SSMS を使用し、Windows 証明書ストアに Always Encrypted キーを格納するためのチュートリアルは、「 Always Encrypted - データベース暗号化を使用して SQL Database で機密データを保護し、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

列マスター キーが ローカル コンピューター の証明書ストアの場所に格納された証明書である場合、秘密キーを使用して証明書をエクスポートしてから、暗号化された列に格納されたデータの暗号化または暗号化解除を行うアプリケーション、または Always Encrypted の構成および Always Encrypted キーの管理を行うツールをホストするすべてのコンピューターに証明書をインポートする必要があります。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.

列マスター キーが 現在のユーザー の証明書ストアの場所に格納された証明書である場合、秘密キーを使用して証明書をエクスポートしてから、暗号化された列に格納されたデータの暗号化または暗号化解除を行うアプリケーション、または Always Encrypted の構成および Always Encrypted キーの管理を行うツールを実行しているすべてのユーザー アカウントの、(該当するアプリケーション/ツールを含むすべてのコンピューター上の) 現在のユーザーの証明書ストアの場所に、証明書をインポートする必要があります。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.

PowerShell の使用Using PowerShell

証明書のインポートとエクスポートには、 Import-PfxCertificateExport-PfxCertificate コマンドレットを使用します。Use the Import-PfxCertificate and Export-PfxCertificate cmdlets to import and export a certificate.

Microsoft 管理コンソールを使用する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. [スナップインの追加と削除] ダイアログ ボックスで [OK] をクリックします。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.

Azure Key Vault で列マスター キーを作成するCreating Column Master Keys in Azure Key Vault

Azure Key Vault は、暗号化キーやシークレットの保護に役立ちます。特に、アプリケーションが Azure でホストされている場合、Always Encrypted の列マスター キーの格納には便利なオプションです。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 Key Vaultでキーを作成するには、 Azure サブスクリプション および Azure Key Vault が必要です。To create a key in Azure Key Vault, you need an Azure subscription and an Azure Key Vault.

PowerShell の使用Using PowerShell

次の例は、新しい Azure Key Vault とキーを作成し、目的のユーザーにアクセス許可を付与しています。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)SQL Server Management Studio (SSMS)

SSMS を使用し、Azure Key Vault に Always Encrypted キーを格納するためのチュートリアルは、「 Always Encrypted - データベース暗号化を使用して SQL Database で機密データを保護し、Windows 証明書ストアで暗号化キーを格納する」を参照してください。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).

Azure Key Vault のキーをアプリケーションとユーザーが使用できるようにするMaking Azure Key Vault Keys Available to Applications and Users

Azure Key Vault のキーを列のマスター キーとして使用する場合、アプリケーションが Azure を認証し、アプリケーションの ID がキー コンテナーに対する次の権限を持っている必要があります: getunwrapKeyverifyWhen 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 Key Vault に格納されている列マスター キーで保護されている列暗号化キーをプロビジョニングするには、 getunwrapKeywrapKeysign、および 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 Key Vault に新しいキーを作成するには create の権限、Key Vault の内容を一覧するには 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.

PowerShell の使用Using PowerShell

Azure Key Vault で実際のキーにアクセスするためにユーザーとアプリケーションを有効にするには、コンテナーのアクセス ポリシー (Set-AzKeyVaultAccessPolicy) を設定する必要があります。To enable users and applications to access 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

CNG を使用してハードウェア セキュリティ モジュールに列マスター キーを作成するCreating Column Master Keys in Hardware Security Modules using CNG

Always Encrypted の列マスター キーは、Cryptography Next Generation (CNG) API を実装するキー ストアに格納することができます。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 は、プラグイン カードまたはコンピューター (ローカルの 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 を使用できるようにするには、CNG を実装するキー記憶域プロバイダー (KSP) をコンピューターにインストールして構成する必要があります。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. Always Encrypted のクライアント ドライバー (ドライバー内部の列マスター キー ストア プロバイダー) は 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 にはソフトウェアベースの KSP である Microsoft ソフトウェア キー記憶域プロバイダーが含まれており、テスト目的で使用することができます。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/KSP を使用してキー ストア内の列マスター キーを作成するCreating 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.

HSM 固有ツールの使用Using HSM-specific Tools

HSM のドキュメントを参照してください。Consult the documentation for your HSM.

PowerShell の使用Using PowerShell

.NET API を使用すると、PowerShell で CNG を使用してキー ストアにキーを作成することができます。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 Studio の使用Using SQL Server Management Studio

Provisioning Column Master using SQL Server Management Studio (SSMS)」(SQL Server Management Studio (SSMS) を使用して列マスターをプロビジョニングする) を参照してください。See Provisioning Column Master using SQL Server Management Studio (SSMS).

CNG のキーをアプリケーションとユーザーが使用できるようにするMaking 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.

CAPI を使用してハードウェア セキュリティ モジュールに列マスター キーを作成するCreating Column Master Keys in Hardware Security Modules using CAPI

Always Encrypted の列マスター キーは、Cryptography 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 は、プラグイン カードまたはコンピューター (ローカルの 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 を使用できるようにするには、CAPI を実装する Cryptography Service Provider (CSP) をコンピューターにインストールして構成する必要があります。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. Always Encrypted のクライアント ドライバー (ドライバー内部の列マスター キー ストア プロバイダー) は 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 です。Note: CAPI is a legacy, deprecated API. HSM で KSP を使用できる場合、CSP/CAPI ではなく KSP を使用する必要があります。If a KSP is available for your HSM, you should use it, instead of a CSP/CAPI.

CSP は、Always Encrypted で使用される RSA アルゴリズムをサポートする必要があります。A CSP must support the RSA algorithm to be used with Always Encrypted.

Windows には RSA をサポートし、テスト目的で使用できる、(HSM ではサポートされない) 次のソフトウェアベースの CSP が含まれています: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/CSP を使用してキー ストア内の列マスター キーを作成するCreating 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.

HSM 固有ツールの使用Using HSM-specific Tools

HSM のドキュメントを参照してください。Consult the documentation for your HSM.

SQL Server Management Studio (SSMS) の使用Using SQL Server Management Studio (SSMS)

「Configuring Always Encrypted using SQL Server Management Studio」(SQL Server Management Studio を使用して Always Encrypted を構成する) で、列マスター キーのプロビジョニングに関するセクションを参照してください。See the Provisioning Column Master Keys section in Configuring Always Encrypted using SQL Server Management Studio.

CNG のキーをアプリケーションとユーザーが使用できるようにするMaking 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

その他のリソースAdditional Resources