Always Encrypted를 사용하여 암호화된 데이터를 열에 대량 로드

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

대량 복사 작업 중에 서버에서 메타데이터 검사를 수행하지 않고 암호화된 데이터를 로드하려면 ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 옵션을 사용하여 사용자를 만듭니다. 이 옵션은 Always Encrypted를 사용할 수 없는 레거시 도구 또는 타사 ETL(Extract-Transform-Load) 워크플로에서 사용됩니다. 이렇게 하면 사용자가 암호화된 열을 포함하는 한 테이블 집합에서 암호화된 열이 있는 다른 테이블 집합(동일하거나 다른 데이터베이스에 있는)으로 암호화된 데이터를 안전하게 이동할 수 있습니다.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 옵션

CREATE USERALTER USER 둘 다 ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 옵션이 있습니다. ON(기본값: OFF)으로 설정하면 이 옵션은 대량 복사 작업에서 서버의 암호화 메타데이터 검사를 표시하지 않습니다. 이를 통해 사용자는 데이터 암호를 해독하지 않고 테이블 또는 데이터베이스 간에 암호화된 데이터를 대량 복사할 수 있습니다.

데이터 마이그레이션 시나리오

다음 표는 몇 가지 마이그레이션 시나리오에 적합한 권장된 설정을 보여줍니다.

Screenshot of a table showing the recommended settings appropriate for several migration scenarios.

암호화된 데이터의 대량 로드

다음 프로세스를 사용하여 암호화된 데이터를 로드합니다.

  1. 대량 복사 작업의 대상인 데이터베이스의 사용자에 대한 옵션을 ON으로 설정합니다. 예:
 ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;  
  1. 대량 복사 애플리케이션 또는 도구 연결을 해당 사용자로 실행합니다. 애플리케이션에서 Always Encrypted 사용 클라이언트 드라이버를 사용하는 경우 데이터 원본에 대한 연결 문자열에 열 암호화 설정=enabled가 포함되어 있지 않은지 확인하여 암호화된 열에서 검색된 데이터가 암호화된 상태로 유지되도록 합니다. 자세한 내용은 Always Encrypted를 사용하여 애플리케이션 개발을 참조하세요.)

  2. ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 옵션을 다시 OFF로 설정합니다. 예:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;  
    

데이터 손상 가능성

이 옵션을 부적절하게 사용할 경우 데이터가 손상될 수 있습니다. ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 옵션을 통해 사용자는 다른 키, 잘못 암호화 또는 전혀 암호화되지 않은 데이터를 포함해 모든 데이터를 데이터베이스의 암호화된 열로 삽입할 수 있습니다. 사용자가 대상 열에 대해 설정된 암호화 구성표(열 암호화 키, 알고리즘, 암호화 유형)를 사용하여 올바르게 암호화되지 않은 데이터를 실수로 복사하는 경우 데이터를 해독할 수 없습니다(데이터가 손상됨). 이 옵션은 데이터베이스의 데이터가 손상될 수 있으므로 신중하게 사용해야 합니다.

다음 시나리오에서는 데이터를 잘못 가져오면 데이터가 손상될 수 있는 방법을 보여 줍니다.

  1. 옵션은 사용자에 대해 ON으로 설정되어 있습니다.

  2. 사용자는 데이터베이스에 연결하는 애플리케이션을 실행합니다. 애플리케이션은 대량 API를 사용하여 일반 텍스트 값을 암호화된 열에 삽입합니다. 애플리케이션은 Always Encrypted 사용 클라이언트 드라이버가 삽입할 때 데이터를 암호화해야 합니다. 그러나 애플리케이션이 잘못 구성되었으므로 Always Encrypted를 지원하지 않는 드라이버를 사용하게 되거나 연결 문자열에 열 암호화 설정=사용이 포함되지 않습니다.

  3. 애플리케이션은 일반 텍스트 값을 서버로 보냅니다. 암호화 메타데이터 검사가 사용자에 대해 서버에서 사용하지 않도록 설정되어 있으므로, 서버는 잘못된 데이터(올바르게 암호화된 암호 텍스트 대신 일반 텍스트)를 암호화된 열로 삽입하게 됩니다.

  4. 동일하거나 다른 애플리케이션은 Always Encrypted 사용 드라이버를 사용하여 데이터베이스에 연결하고 연결 문자열에서 열 암호화 설정=사용이 설정된 상태에서 데이터를 검색합니다. 애플리케이션은 데이터가 투명하게 암호 해독될 것을 예상합니다. 그러나 데이터가 잘못된 암호 텍스트이므로 데이터의 암호를 해독하지 못합니다.

모범 사례

이 옵션을 사용하여 장기 실행 작업에 지정된 사용자 계정을 사용합니다.

암호화된 데이터를 암호 해독하지 않고 이동해야 하는 짧은 실행 대량 복사 애플리케이션 또는 도구의 경우 애플리케이션을 실행하기 직전에 옵션을 ON으로 설정하고 작업을 실행한 직후 OFF로 다시 설정합니다.

새 애플리케이션 개발에 이 옵션을 사용하지 말고 대신 SQL Server용 .NET Framework 데이터 공급자의 AllowEncryptedValueModifications 옵션과 같이 단일 세션에 대한 암호화 메타데이터 검사를 표시하지 않는 API를 제공하는 클라이언트 드라이버를 사용합니다. SqlBulkCopy를 사용하여 암호화된 데이터 복사를 참조하세요.

다음 단계

참고 항목