다음을 통해 공유


SQL Server 빅 데이터 클러스터의 외부 키 공급자

중요

Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. Software Assurance를 사용하는 SQL Server 2019의 모든 기존 사용자는 플랫폼에서 완전히 지원되며, 소프트웨어는 지원 종료 시점까지 SQL Server 누적 업데이트를 통해 계속 유지 관리됩니다. 자세한 내용은 공지 블로그 게시물Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.

이 문서에서는 키 관리를 위해 SQL Server 빅 데이터 클러스터에서 외부 키 공급자를 구성하는 방법의 세부 정보를 제공합니다.

SQL Server 빅 데이터 클러스터에서 키 버전을 사용하는 방법에 대한 자세한 내용은 SQL Server 빅 데이터 클러스터의 키 버전을 참조하세요.

미사용 데이터 암호화를 구성하고 사용하는 방법에 대한 자세한 내용은 다음 가이드를 참조하세요.

필수 조건

외부 공급자를 사용하는 루트 키 암호화

기본 암호화 키는 SQL Server 빅 데이터 클러스터에서 외부 키를 가져올 수 있으므로 고객이 배포하는 애플리케이션을 사용하여 퍼블릭 키를 가져옵니다. HDFS 키를 회전하고 사용하는 경우 HDFS 키의 암호를 해독하는 호출은 컨트롤 플레인으로 전송된 다음, 고객이 제공한 키 식별자를 사용하여 애플리케이션으로 리디렉션됩니다. SQL Server의 경우 컨트롤 플레인에 퍼블릭 키가 있기 때문에 컨트롤 플레인에서 암호화 요청을 전송하고 수행합니다. SQL Server의 DEK(데이터 암호화 키) 암호를 해독하는 요청도 컨트롤 플레인으로 전송된 다음, HSM(하드웨어 보안 모듈)과 같은 외부 공급자와 상호 작용하는 애플리케이션으로 리디렉션됩니다.

Diagram represents the situation after Customer Key is installed.

다음 다이어그램은 컨트롤 플레인에서 외부 키를 구성하는 동안의 상호 작용을 설명합니다.

Diagram explains the interactions while configuring external keys in control plane.

키를 설치한 후에는 다른 페이로드의 암호화 및 암호 해독이 기본 암호화 키로 보호됩니다. 이 보호는 시스템 관리형 키와 유사합니다. 단, 컨트롤 플레인으로 라우팅된 암호 해독 호출은 KMS(키 관리 서비스) 플러그 인 앱으로 라우팅됩니다. KMS 플러그 인 앱은 HSM, Hashicorp Vault, 다른 제품 등의 적절한 위치로 요청을 라우팅합니다.

구성

제공된 템플릿 애플리케이션은 외부 키 공급자와 상호 작용하는 데 사용되는 플러그 인입니다. 이 애플리케이션을 사용자 지정하여 선택한 외부 키 공급자의 통합 지점으로 사용할 수 있도록 빅 데이터 클러스터에 배포해야 합니다.

템플릿 애플리케이션에는 SoftHSM을 사용하여 표준 PKCS11 프로토콜로 외부 공급자 구현과 통합하는 방법의 예제가 포함되어 있습니다. Azure Key Vault 및 Hashicorp Vault를 사용하는 예제도 있습니다. 템플릿 애플리케이션은 있는 그대로 참조 구현으로 제공됩니다.

다음 섹션에서는 SQL Server 데이터베이스와 HDFS 암호화 영역의 암호화 루트 키로 사용할 외부 키 공급자를 구성하는 데 필요한 단계를 제공합니다.

외부 키 공급자에서 RSA 2048 키 만들기

2048비트 RSA 키가 포함된 PEM 파일을 만들어 외부 키 공급자의 키 값 저장소에 업로드합니다.

예를 들어 Hashicorp Vault의 KV 저장소에서 bdc-encryption-secret 경로에 키 파일을 추가할 수 있으며, 비밀의 이름은 rsa2048일 수 있습니다.

통합 애플리케이션 사용자 지정 및 빅 데이터 클러스터에 배포

  1. 로컬 머신에서 kms_plugin_app이 포함된 폴더, 빅 데이터 클러스터 AppDeploy 템플릿 애플리케이션으로 이동합니다.

  2. 템플릿 중 하나를 선택하고 시나리오에 맞게 조정하여 애플리케이션을 사용자 지정합니다.

    • 파일 custom_softhsm.py에는 SoftHSM를 사용한 참조 구현이 포함됩니다.
    • 파일 custom_akv.py에는 Azure Key Vault 예제가 포함되어 있습니다.
    • 파일 custom_hcv.py에는 HashiCorp Vault 예제가 포함되어 있습니다.

    주의

    기능 계약이나 서명은 통합 지점이므로 변경하면 안 됩니다. 필요한 경우 기능 구현만 변경합니다.

  3. 이에 따라 위의 템플릿에서 만드는 파일의 이름을 지정합니다. 예를 들어, custom_softhsm.pymy_custom_integration_v1.py로 저장한 다음, 사용자 지정을 수행합니다. 이 접근 방식은 다음 단계에서 중요합니다.

  4. app.py는 애플리케이션을 로드할 진입점입니다. 이 파일에서는 이전 단계의 .py 확장자가 없는 사용자 지정 파일 이름을 가리키도록 줄 11을 변경해야 합니다. 위의 예제에 따라 다음을 변경합니다.

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    다음 값입니다.

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. spec.yaml이 있는 폴더에서 다음 명령을 사용하여 빅 데이터 클러스터에 애플리케이션을 배포합니다.

    azdata app create -s
    
  6. 애플리케이션 배포가 완료될 때까지 기다립니다. 다음 명령을 사용하여 준비 상태를 확인할 수 있습니다.

    azdata app list
    

외부 키 공급자를 사용하도록 빅 데이터 클러스터 구성

  1. AZDATA_EXTERNAL_KEY_PIN 환경 변수를 설정하여 외부 키 공급자에 대한 액세스를 허용하는 토큰을 제공합니다.

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    참고

    통합 애플리케이션 배포 프로세스는 토큰을 사용하여 외부 키 공급자에 액세스합니다. 그러나 AZDATA_EXTERNAL_KEY_PIN 변수는 애플리케이션에서 해석할 수 있도록 빅 데이터 클러스터 컨트롤 플레인에 암호화되어 저장됩니다. 다른 인증 메커니즘을 사용할 수도 있지만 애플리케이션을 변경해야 합니다. 사용되는 전체 통합 논리는 custom*.py Python 애플리케이션에서 확인합니다.

  2. 다음 azdata 명령 구조를 사용하여 빅 데이터 클러스터 키를 구성합니다. 필요한 매개 변수를 특정 구현으로 변경합니다. 다음 예제에서는 custom2.py에서 제공하는 HashiCorp Vault 구조를 사용합니다.

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    --provider External 매개 변수 값은 통합 애플리케이션을 키 작업의 엔드포인트로 사용하도록 빅 데이터 클러스터 KMS를 구성합니다.

  3. 다음 명령을 사용하여 루트 암호화 키를 외부 관리형 키로 확인합니다.

    azdata bdc kms show
    

새 키를 사용하여 데이터베이스 및 암호화 영역 암호화

구성 후에도 SQL Server 데이터베이스와 HDFS 암호화 영역은 이전 키 계층 구조로 암호화됩니다. 외부 관리형 키를 사용하여 명시적으로 암호화해야 합니다.

SQL Server에서 외부 관리형 키를 기반으로 하는 새 비대칭 키가 설치됩니다. 해당 키를 사용하여 데이터베이스를 암호화합니다.

sys.asymmetric_keys 시스템 카탈로그 뷰에서 다음 T-SQL 쿼리를 사용하여 비대칭 키를 확인할 수 있습니다.

USE master;
select * from sys.asymmetric_keys;

비대칭 키는 명명 규칙 tde_asymmetric_key_<version>과 함께 나타납니다. SQL Server 관리자는 ALTER DATABASE ENCRYPTION KEY를 사용하여 DEK의 보호기를 비대칭 키로 변경할 수 있습니다. 예를 들어 다음 T-SQL 명령을 사용합니다.

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. 다음 명령을 실행하여 현재 암호화 키를 확인합니다.

    azdata bdc hdfs key describe
    
  2. 암호화 영역 키를 보호하는 키의 버전 정보를 가져옵니다.

    azdata bdc hdfs key describe --name <key name>
    
  3. 키를 새 외부 관리형 키로 롤링합니다.

    azdata bdc hdfs key roll --name <new key name>
    
  4. 다음 명령을 사용하여 암호화를 시작합니다.

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. 다음 명령을 사용하여 키 계층 구조를 확인합니다.

    azdata bdc kms show
    azdata bdc hdfs key describe
    

다음 단계