열 마스터 키 만들기 및 저장(상시 암호화)Create and Store Column Master Keys (Always Encrypted)

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse 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. 자세한 내용은 상시 암호화를 위한 키 관리 개요를 참조하세요.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 are 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. 응용 프로그램이 중앙 집중식 키 저장소에 연결하도록 구성되어 있는지 확인해야 합니다.You need to 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. 일부 드라이버를 사용하면 사용자 지정 열 마스터 키 저장소 공급자를 구현 및 등록할 수 있으므로 지원하는 기본 제공 공급자가 없어도 모든 키 저장소를 사용할 수 있습니다.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. 특정 드라이버에서 기본적으로 지원하는 키 저장소와 사용 중인 드라이버가 사용자 지정 키 저장소 공급자를 지원하는지 여부는 상시 암호화 설명서를 참조하세요.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 StudioSqlServer PowerShell 모듈 을 사용하여 상시 암호화를 구성하고 상시 암호화 키를 관리할 수 있습니다.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. 상시 암호화 지원 드라이버에서는 만료 날짜 또는 인증 기관 체인을 확인하지 않습니다.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.
  • 두 인증서 저장 위치인 로컬 컴퓨터 또는 현재 사용자중 하나에 저장되어야 합니다.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 cmdlet을 사용하여 자체 서명된 인증서를 만듭니다.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

SSMS(SQL Server Management Studio)를 사용하여 자체 서명된 인증서 만들기Create a self-signed certificate using SQL Server Management Studio (SSMS)

자세한 내용은 SQL Server Management Studio를 사용하여 상시 암호화 구성을 참조하세요.For details, see Configure Always Encrypted using SQL Server Management Studio. SSMS를 사용하고 Windows 인증서 저장소에 상시 암호화 키를 저장하는 단계별 자습서는 상시 암호화 마법사 자습서(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.

PowerShell 사용Using PowerShell

Import-PfxCertificateExport-PfxCertificate cmdlet을 사용하여 인증서를 가져오고 내보낼 수 있습니다.Use the Import-PfxCertificate and Export-PfxCertificate cmdlets to import and export a certificate.

Microsoft Management Console 사용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.

Azure 주요 자격 증명 모음에서 열 마스터 키 만들기Creating 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.

PowerShell 사용Using 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.
Login-AzureRmAccount
$SubscriptionId = "<Azure subscription ID>"
$resourceGroup = "<resource group name>"
$azureLocation = "<key vault location>"
$akvName = "<key vault name>"
$akvKeyName = "<column master key name>"
$azureCtx = Set-AzureRMContext -SubscriptionId $SubscriptionId # Sets the context for the below cmdlets to the specified subscription.
New-AzureRmResourceGroup –Name $resourceGroup –Location $azureLocation # Creates a new resource group - skip, if you desire group already exists.
New-AzureRmKeyVault -VaultName $akvName -ResourceGroupName $resourceGroup -Location $azureLocation -SKU premium # Creates a new key vault - skip if your vault already exists.
Set-AzureRmKeyVaultAccessPolicy -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

SSMS(SQL Server Management Studio)SQL Server Management Studio (SSMS)

SSMS를 사용하고 Azure 주요 자격 증명 모음에 상시 암호화 키를 저장하는 단계별 자습서는 상시 암호화 마법사 자습서(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).

응용 프로그램 및 사용자가 Azure 주요 자격 증명 모음을 사용할 수 있도록 설정Making Azure Key Vault Keys Available to Applications and Users

Azure 주요 자격 증명 모음 키를 열 마스터 키로 사용하는 경우 응용 프로그램에서 Azure를 인증해야 하고 응용 프로그램 ID에 주요 자격 증명 모음에 대한 get, unwrapKeyverify권한이 있어야 합니다.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, signverify 권한이 필요합니다.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.

PowerShell 사용Using PowerShell

사용자와 응용 프로그램에서 Azure 주요 자격 증명 모음의 실제 키에 액세스할 수 있게 하려면 자격 증명 모음 액세스 정책(Set-AzureRmKeyVaultAccessPolicy)을 설정해야 합니다.To enable users and applications to access the actual keys in the Azure Key Vault you must set the vault access policy (Set-AzureRmKeyVaultAccessPolicy):

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

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

CNG를 사용하여 하드웨어 보안 모듈에서 열 마스터 키 만들기Creating Column Master Keys in Hardware Security Modules using CNG

상시 암호화를 위한 열 마스터 키를 CNG(Cryptography Next Generation) 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. 상시 암호화 클라이언트 드라이버(드라이버 내의 열 마스터 키 저장소 공급자)는 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 소프트웨어 키 저장소 공급자(소프트웨어 기반 KSP)가 있습니다.Windows includes Microsoft Software Key Storage Provider – a software-based KSP, which you can use for testing purposes. 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

PowerShell의 CNG를 사용 중인 키 저장소에서 .NET API를 사용하여 키를 만들 수 있습니다.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

SSMS(SQL Server Management Studio)를 사용하여 열 마스터 프로비전을 참조하세요.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

상시 암호화를 위한 열 마스터 키를 CAPI(암호화 API)를 구현하는 키 저장소에 저장할 수 있습니다.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를 구현하는 CSP(Cryptography Service Provider)를 컴퓨터에서 설치 및 구성해야 합니다.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입니다.Note: 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에는 RSA를 지원하는 소프트웨어 기반(HSM에서 지원되지 않음) CSP인 Microsoft Enhanced RSA and 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.

SSMS(SQL Server Management Studio) 사용Using SQL Server Management Studio (SSMS)

SQL Server Management Studio를 사용하여 상시 암호화 구성의 열 마스터 키 프로비전 섹션을 참조하세요.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 Steps

추가 리소스Additional Resources