다음을 통해 공유


SQL Server Management Studio를 사용하여 Always Encrypted 키 순환

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance

이 문서에서는 SSMS(SQL Server Management Studio)를 사용하여 Always Encrypted 열 마스터 키 및 열 암호화 키를 회전하는 작업을 설명합니다.

모범 사례, 권장 사항 및 중요한 보안 고려 사항을 비롯한 Always Encrypted 키 관리의 개요는 Always Encrypted를 위한 키 관리 개요를 참조하세요.

참고 항목

Azure Key Vault의 관리되는 HSM에 저장된 열 마스터 키를 사용하려면 SSMS 18.9 이상 버전이 필요합니다.

열 마스터 키 회전

열 마스터 키 순환은 기존 열 마스터 키를 새 열 마스터 키로 대체하는 프로세스입니다. 키가 손상된 경우 또는 암호화 키를 정기적으로 순환하는 것이 의무적인 조직의 정책이나 규정 준수 규칙을 준수하기 위해 키를 순환해야 할 수 있습니다. 열 마스터 키 회전에는 현재 열 마스터 키로 보호되는 열 암호화 키의 암호를 해독하고, 새 열 마스터 키를 사용하여 다시 암호화하고, 키 메타데이터를 업데이트하는 작업이 포함됩니다.

1단계: 새 열 마스터 키 프로비전

새 열 마스터 키 대화 상자를 사용하여 열 마스터 키 프로비전의 단계를 수행합니다.

2단계: 새 열 마스터 키로 열 암호화 키 암호화

열 마스터 키는 일반적으로 하나 이상의 열 암호화 키를 보호합니다. 각 열 암호화 키에는 데이터베이스에 저장된 암호화된 값이 있으며 열 마스터 키로 열 암호화 키를 암호화하는 제품입니다. 이 단계에서는 순환할 열 마스터 키로 보호된 각 열 암호화 키를 새 열 마스터 키로 암호화하고 새로 암호화된 값을 데이터베이스에 저장합니다. 따라서 순환의 영향을 받는 각 열 암호화 키에는 기존 열 마스터 키로 암호화된 값과 새 열 마스터 키로 암호화된 새 값의 두 가지 암호화된 값이 있습니다.

  1. 개체 탐색기를 사용하여 보안>Always Encrypted 키>열 마스터 키 폴더로 이동한 다음 순환할 열 마스터 키를 찾습니다.
  2. 열 마스터 키를 마우스 오른쪽 단추로 클릭하고 회전을 선택합니다.
  3. 열 마스터 키 회전 대화 상자에서 대상 필드의 1단계에서 만든 새 열 마스터 키의 이름을 선택합니다.
  4. 기존 열 마스터 키로 보호되는 열 암호화 키의 목록을 검토합니다. 이러한 키는 회전의 영향을 받습니다.
  5. 확인을 클릭합니다.

SQL Server Management Studio는 이전 열 마스터 키로 보호되는 열 암호화 키의 메타데이터와 이전 및 새 열 마스터 키의 메타데이터를 가져옵니다. 그런 다음 SSMS는 열 마스터 키 메타데이터를 사용하여 이전 열 마스터 키가 포함된 키 저장소에 액세스하고 열 암호화 키를 해독합니다. 이후에 SSMS는 새 열 마스터 키가 포함된 키 저장소에 액세스하여 열 암호화 키의 새로 암호화된 값 집합을 생성한 다음 새 값을 메타데이터에 추가합니다( ALTER COLUMN ENCRYPTION KEY(Transact-SQL) 문 생성 및 실행).

참고 항목

이전 열 마스터 키로 암호화된 각 열 암호화 키가 다른 열 마스터 키로 암호화되지 않았는지 확인합니다. 즉, 회전이 적용되는 각 열 암호화 키는 데이터베이스에 정확히 하나의 암호화된 값만 포함해야 합니다. 영향을 받는 열 암호화 키에 둘 이상의 암호화된 값이 있는 경우 회전을 진행하기 전에 값을 제거해야 합니다(열 암호화 키의 암호화된 값을 제거하는 방법에 대한 4단계 참조).

3단계: 새 열 마스터 키로 애플리케이션 구성

이 단계에서는 회전하는 열 마스터 키로 보호된 데이터베이스 열을 쿼리하는 모든 클라이언트 애플리케이션이 새 열 마스터 키(즉, 회전하는 열 마스터 키로 암호화되어 열 암호화 키로 암호화된 데이터베이스 열)에 액세스할 수 있는지 확인해야 합니다. 이 단계는 새 열 마스터 키가 있는 키 저장소의 유형에 따라 달라집니다. 예시:

  • 새 열 마스터 키가 Windows 인증서 저장소에 저장된 인증서인 경우 데이터베이스에서 열 마스터 키의 키 경로에 지정된 위치와 동일한 인증서 저장소 위치(현재 사용자 또는 로컬 컴퓨터)에 인증서를 배포해야 합니다. 애플리케이션에서 인증서에 액세스할 수 있어야 합니다.
    • 인증서가 현재 사용자 인증서 저장소 위치에 저장된 경우 인증서를 애플리케이션 Windows ID(사용자)의 현재 사용자 저장소로 가져와야 합니다.
    • 인증서가 로컬 컴퓨터 인증서 저장소 위치에 저장된 경우 애플리케이션의 Windows ID에 인증서에 액세스할 수 있는 권한이 있어야 합니다.
  • 새 열 마스터 키가 Microsoft Azure 주요 자격 증명 모음에 저장되면 애플리케이션이 Azure에 인증할 수 있고 키에 액세스할 권한을 갖도록 구현되어야 합니다.

자세한 내용은 열 마스터 키 만들기 및 저장(Always Encrypted)을 참조하세요.

참고 항목

순환의 이 시점에서는 이전 열 마스터 키와 새 열 마스터 키가 모두 유효하며 데이터에 액세스하는 데 사용할 수 있습니다.

4단계: 이전 열 마스터 키로 암호화된 열 암호화 키 값 정리

새 열 마스터 키를 사용하도록 모든 애플리케이션을 구성한 후에는 데이터베이스에서 이전 열 마스터 키로 암호화된 열 암호화 키의 값을 제거합니다. 이전 값을 제거하면 다음 회전이 준비됩니다(회전할 열 마스터 키로 보호되는 각 열 암호화 키에는 정확히 하나의 암호화된 값이 있어야 합니다).

이전 열 마스터 키를 보관 또는 제거하기 전에 이전 값을 정리하는 다른 이유는 성능 때문입니다. 암호화된 열을 쿼리할 때 상시 암호화 가능 클라이언트 드라이버가 두 값(이전 값과 새 값)의 암호를 모두 해독해야 할 수도 있습니다. 드라이버는 애플리케이션 환경에서 유효한 두 개의 열 마스터 키 중 어느 것이 유효한지 알지 못하므로 서버에서 암호화된 값을 모두 검색합니다. 여러 값 중 하나의 암호 해독이 실패한 경우 이는 사용할 수 없는 열 마스터 키로 보호되므로 (예: 저장소에서 제거된 이전 열 마스터 키) 드라이버는 새 열 마스터 키를 사용하여 다른 값의 암호 해독을 시도합니다.

Warning

애플리케이션에 해당 열 마스터 키가 제공되기 전에 열 암호화 키 값을 제거하면 애플리케이션에서 데이터베이스 열의 암호를 더 이상 해독할 수 없습니다.

  1. 개체 탐색기를 사용하여 보안>Always Encrypted 키 폴더로 이동하여 바꾸고자 하는 기존 열 마스터 키를 찾습니다.
  2. 기존 열 마스터 키를 마우스 오른쪽 단추로 클릭하고 정리를 선택합니다.
  3. 제거할 열 암호화 키 값 목록을 검토합니다.
  4. 확인을 클릭합니다.

SQL Server Management Studio는 이전 열 마스터 키로 암호화된 열 암호화 키의 암호화된 값을 삭제하기 위해 ALTER COLUMN ENCRYPTION KEY(Transact-SQL) 문을 실행합니다.

5단계: 이전 열 마스터 키에 대한 메타데이터 삭제

데이터베이스에서 이전 열 마스터 키의 정의를 제거하도록 선택한 경우 아래 단계를 따르세요.

  1. 개체 탐색기를 사용하여 보안>Always Encrypted 키>열 마스터 키 폴더로 이동한 다음 데이터베이스에서 삭제하고자 하는 이전 열 마스터 키를 찾습니다.
  2. 이전 열 마스터 키를 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다. 이렇게 하면 CREATE COLUMN MASTER KEY(Transact-SQL) 문이 생성 및 실행되어 열 마스터 키 메타데이터를 제거합니다.
  3. 확인을 클릭합니다.

참고 항목

순환 후 이전 열 마스터 키를 영구적으로 삭제하지 않는 것이 좋습니다. 대신 이전 열 마스터 키를 현재 키 저장소에 유지하거나 다른 안전한 위치에 보관하세요. 백업 파일에서 새 열 마스터 키가 구성되기 전의 시점으로 데이터베이스를 복원하는 경우 데이터에 액세스하려면 이전 키가 필요합니다.

열 마스터 키를 회전하기 위한 권한

열 마스터 키를 회전하려면 다음 데이터베이스 권한이 필요합니다.

  • ALTER ANY COLUMN MASTER KEY - 새 열 마스터 키에 대한 메타데이터를 만들고 이전 열 마스터 키에 대한 메타데이터를 삭제하는 데 필요합니다.
  • ALTER ANY COLUMN ENCRYPTION KEY - 열 암호화 키 메타데이터를 수정하고 새로 암호화된 값을 추가하는 데 필요합니다.

키 저장소에서 이전 열 마스터 키와 새 열 마스터 키 모두에 액세스하려면 키 저장소 권한도 필요합니다. 키 관리 작업에 필요한 키 저장소 권한에 대한 자세한 정보는 Always Encrypted에 대한 열 마스터 키 생성 및 저장을 참조하고 키 저장소와 관련된 섹션을 확인하세요.

열 암호화 키 회전

열 암호화 키를 순환하려면 모든 열에서 순환할 키로 암호화된 데이터의 암호를 해독하고 새 열 암호화 키를 사용하여 데이터를 다시 암호화해야 합니다.

참고 항목

순환할 키로 암호화된 열을 포함하는 테이블이 크면 열 암호화 키를 순환하는 데 시간이 오래 걸릴 수 있습니다. 데이터가 다시 암호화되는 동안 애플리케이션은 영향을 받는 테이블에 쓸 수 없습니다. 따라서 조직에서 열 암호화 키 순환을 계획할 때는 주의해야 합니다. 열 암호화 키를 순환하려면 상시 암호화 마법사를 사용합니다.

  1. 데이터베이스에 대한 마법사를 엽니다. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 열 암호화를 클릭합니다.
  2. 소개 페이지를 검토하고 다음을 클릭합니다.
  3. 열 선택 페이지에서 테이블을 확장하고 현재 이전 열 암호화 키로 암호화된 열을 바꿀 모든 열을 찾습니다.
  4. 이전 열 암호화 키로 암호화된 각 열에 대해 암호화 키 를 자동 생성된 새 키로 설정합니다. 참고: 또는 마법사를 실행하기 전에 새 열 암호화 키를 만들 수 있습니다. 새 열 암호화 키 대화 상자를 사용하여 열 암호화 키 프로비전을 참조하세요.
  5. 마스터 키 구성 페이지에서 새 키를 저장할 위치를 선택하고 마스터 키 원본을 선택한 후 다음을 클릭합니다. 참고: 자동 생성된 열 암호화 키가 아니라 기존 열 암호화 키를 사용하는 경우에는 이 페이지에서 수행할 작업이 없습니다.
  6. 유효성 검사 페이지에서 스크립트를 즉시 실행할지 또는 PowerShell 스크립트를 만들 것인지 선택하고 다음을 클릭합니다.
  7. 요약 페이지에서 선택한 옵션을 검토하고 마침을 클릭한 후 완료되면 마법사를 종료합니다.
  8. 개체 탐색기를 사용하여 보안/Always Encrypted 키/열 암호화 키 폴더로 이동한 다음 데이터베이스에서 삭제할 이전 열 암호화 키를 찾습니다. 키를 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.

열 암호화 키 순환을 위한 권한

열 암호화 키를 순환하려면 다음과 같은 데이터베이스 권한이 필요합니다. ALTER ANY COLUMN MASTER KEY – 자동 생성된 새 열 암호화 키를 사용하는 경우에 필요합니다(새 열 마스터 키와 새 메타데이터도 생성됨). ALTER ANY COLUMN ENCRYPTION KEY - 새 열 암호화 키에 대한 메타데이터를 추가하는 데 필요합니다.

새 열 암호화 키와 이전 열 암호화 키 둘 다의 열 마스터 키에 액세스하려면 키 저장소 권한도 필요합니다. 키 관리 작업에 필요한 키 저장소 권한에 대한 자세한 정보는 Always Encrypted에 대한 열 마스터 키 생성 및 저장을 참조하고 키 저장소와 관련된 섹션을 확인하세요.

다음 단계

참고 항목