PowerShell을 사용하여 상시 암호화 구성

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SqlServer PowerShell 모듈은 Azure SQL Database 또는 SQL Server 모두에서 Always Encrypted를 구성하기 위한 cmdlet을 제공합니다.

PowerShell을 사용하여 상시 암호화 구성 시 보안 고려 사항

Always Encrypted의 주요 목표는 데이터베이스 시스템이 손상된 경우에도 암호화된 중요한 데이터를 안전하게 보호하는 것이므로 SQL Server 컴퓨터에서 키 또는 중요한 데이터를 처리하는 PowerShell 스크립트를 실행하면 기능의 이점이 감소하거나 무효화될 수 있습니다. 추가 보안 관련 권장 사항은 키 관리에 대한 보안 고려 사항을 참조하세요.

PowerShell을 사용하여 역할 분리와 관계없이 Always Encrypted 키를 관리할 수 있으며 키 저장소의 실제 암호화 키에 대한 액세스 권한이 있는 사용자와 데이터베이스에 대한 액세스 권한이 있는 사용자를 제어할 수 있습니다.

추가 권장 사항은 키 관리에 대한 보안 고려 사항을 참조하세요.

전제 조건

SQL Server 인스턴스를 호스팅하는 컴퓨터가 아닌 보안 컴퓨터에 SqlServer PowerShell 모듈 버전 22.0.50 이상을 설치합니다. 이 모듈은 PowerShell 갤러리에서 직접 설치할 수 있습니다. 자세한 내용은 다운로드 지침을 참조하세요.

SqlServer 모듈 가져오기

SqlServer 모듈을 로드하려면 다음을 수행합니다.

  1. Set-ExecutionPolicy cmdlet을 사용하여 적절한 스크립트 실행 정책을 설정합니다.
  2. Import-Module cmdlet을 사용하여 SqlServer 모듈을 가져옵니다.

이 예제에서는 SqlServer 모듈을 로드합니다.

# Import the SQL Server Module.  
Import-Module "SqlServer" -MinimumVersion 22.0.50

데이터베이스에 연결

Always Encrypted cmdlet 중 일부는 데이터베이스의 데이터 또는 메타데이터에서 작동하며 먼저 데이터베이스에 연결해야 합니다. SqlServer 모듈을 사용하여 Always Encrypted를 구성할 때 데이터베이스에 연결하는 두 가지 권장 방법이 있습니다.

  1. Get-SqlDatabase cmdlet을 사용하여 연결합니다.
  2. SQL Server PowerShell 공급자를 사용하여 연결합니다.

Get-SqlDatabase 사용

Get-SqlDatabase cmdlet을 사용하여 SQL Server 또는 Azure SQL Database의 데이터베이스에 연결할 수 있습니다. 데이터베이스 개체를 반환하며, 데이터베이스에 연결하는 cmdlet의 InputObject 매개 변수를 사용하여 전달할 수 있습니다.

SQL Server PowerShell 사용

# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50

# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr

# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database

또는 파이핑을 사용할 수 있습니다.

$database | Get-SqlColumnMasterKey

SQL Server PowerShell 공급자 사용

SQL Server PowerShell 공급자파일 시스템 경로와 유사한 경로에 SQL Server 개체의 계층 구조를 노출합니다. SQL Server PowerShell을 사용하면 일반적으로 파일 시스템 경로를 탐색하는 데 사용하는 명령과 유사한 Windows PowerShell 별칭을 사용하여 경로를 탐색할 수 있습니다. 대상 인스턴스 및 데이터베이스로 이동하면 다음 예제와 같이 후속 cmdlet이 해당 데이터베이스를 대상으로 합니다.

참고 항목

데이터베이스에 연결하는 이 방법은 SQL Server에서만 작동합니다(Azure SQL Database에서는 지원되지 않음).

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey

또는 데이터베이스로 이동하는 대신 제네릭 경로 매개 변수를 사용하여 데이터베이스 경로를 지정할 수 있습니다.

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase

PowerShell을 사용하는 Always Encrypted 작업

상시 암호화 Cmdlet 참조

Always Encrypted에 사용할 수 있는 PowerShell cmdlet은 다음과 같습니다.

CMDLET 설명
Add-SqlAzureAuthenticationContext Azure에 인증을 수행하고 인증 토큰을 획득합니다.
Add-SqlColumnEncryptionKeyValue 데이터베이스의 기존 열 암호화 키 개체에 대해 암호화된 새 값을 추가합니다.
Complete-SqlColumnMasterKeyRotation 열 마스터 키 순환을 완료합니다.
Get-SqlColumnEncryptionKey 데이터베이스에 정의된 모든 열 암호화 키 개체를 반환하거나 지정된 이름의 열 암호화 키 개체 하나를 반환합니다.
Get-SqlColumnMasterKey 데이터베이스에 정의된 열 마스터 키 개체를 반환하거나 지정된 이름의 열 마스터 키 개체 하나를 반환합니다.
Invoke-SqlColumnMasterKeyRotation 열 마스터 키 순환을 시작합니다.
New-SqlAzureKeyVaultColumnMasterKeySettings Azure Key Vault에 저장된 비대칭 키를 설명하는 SqlColumnMasterKeySettings 개체를 만듭니다.
New-SqlCngColumnMasterKeySettings CNG(Cryptography Next Generation) API를 지원하는 키 저장소에 저장된 비대칭 키를 설명하는 SqlColumnMasterKeySettings 개체를 만듭니다.
New-SqlColumnEncryptionKey 데이터베이스에 열 암호화 키 개체를 만듭니다.
New-SqlColumnEncryptionKeyEncryptedValue 열 암호화 키의 암호화된 값을 생성합니다.
New-SqlColumnEncryptionSettings CEK 및 암호화 형식을 포함하여 단일 열의 암호화에 대한 정보를 캡슐화하는 SqlColumnEncryptionSettings 개체를 만듭니다.
New-SqlColumnMasterKey 데이터베이스에 열 마스터 키 개체를 만듭니다.
New-SqlColumnMasterKeySettings 지정된 공급자 및 키 경로를 사용하여 열 마스터 키에 대한 SqlColumnMasterKeySettings 개체를 만듭니다.
New-SqlCspColumnMasterKeySettings CSP(Cryptography Service Provider)가 CAPI(암호화 API)를 지원하는 키 저장소에 저장된 비대칭 키를 설명하는 SqlColumnMasterKeySettings 개체를 만듭니다.
Remove-SqlColumnEncryptionKey 데이터베이스에서 열 암호화 키 개체를 제거합니다.
Remove-SqlColumnEncryptionKeyValue 데이터베이스의 기존 열 암호화 키 개체에서 암호화된 값을 제거합니다.
Remove-SqlColumnMasterKey 데이터베이스에서 열 마스터 키 개체를 제거합니다.
Set-SqlColumnEncryption 데이터베이스에서 지정된 열을 암호화, 암호 해독 또는 다시 암호화합니다.

참고 항목