Azure Arc 지원 SQL Managed Instance에서 투명한 데이터 암호화를 사용하여 데이터베이스 암호화

이 문서에서는 Azure Arc 지원 SQL Managed Instance에서 만든 데이터베이스에서 투명한 데이터 암호화를 사용하도록 설정하는 방법을 설명합니다. 이 문서에서 관리되는 인스턴스라는 용어는 Azure Arc 지원 SQL Managed Instance 배포를 나타냅니다.

필수 조건

이 문서를 진행하기 전에 Azure Arc 리소스를 통해 사용하도록 설정된 SQL Managed Instance를 만들고 연결해야 합니다.

관리되는 인스턴스의 데이터베이스에서 투명한 데이터 암호화 켜기

관리되는 인스턴스에서 투명한 데이터 암호화를 켜는 것은 SQL Server 온-프레미스와 동일한 단계를 따릅니다. SQL Server 투명한 데이터 암호화 가이드에 설명된 단계를 따릅니다.

필요한 자격 증명을 만든 후 새로 만든 자격 증명을 백업하세요.

투명한 데이터 암호화 자격 증명 백업

관리되는 인스턴스의 자격 증명을 백업하면 자격 증명이 컨테이너 내에 저장됩니다. 영구 볼륨에 자격 증명을 저장하려면 컨테이너에 탑재 경로를 지정합니다. 예: var/opt/mssql/data. 다음 예제에서는 관리되는 인스턴스의 인증서를 백업합니다.

참고 항목

kubectl cp 명령이 Windows에서 실행되는 경우 절대 Windows 경로를 사용할 때 명령이 실패할 수 있습니다. 상대 경로 또는 아래에 지정된 명령을 사용합니다.

  1. 컨테이너에서 /var/opt/mssql/data로 인증서를 백업합니다.

    USE master;
    GO
    
    BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    

    예시:

    USE master;
    GO
    
    BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    
  2. 컨테이너에서 파일 시스템으로 인증서를 복사합니다.

kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>

예시:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
  1. 컨테이너에서 파일 시스템으로 프라이빗 키를 복사합니다.
 kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>

예시:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
  1. 컨테이너에서 인증서와 프라이빗 키를 삭제합니다.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    예시:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

관리되는 인스턴스로 투명한 데이터 암호화 자격 증명 복원

자격 증명을 복원하는 방법도 위와 유사합니다. 자격 증명을 컨테이너에 복사하고 나중에 해당 T-SQL을 실행하면 됩니다.

참고 항목

kubectl cp 명령이 Windows에서 실행되는 경우 절대 Windows 경로를 사용할 때 명령이 실패할 수 있습니다. 상대 경로 또는 아래에 지정된 명령을 사용합니다.

  1. 파일 시스템에서 컨테이너로 인증서를 복사합니다.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>

예시:

type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
  1. 파일 시스템에서 컨테이너로 프라이빗 키를 복사합니다.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>

예시:

type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
  1. /var/opt/mssql/data의 파일 경로를 사용하여 인증서를 만듭니다.

    USE master;
    GO
    
    CREATE CERTIFICATE <certicate-name>
    FROM FILE = '<certificate-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    

    예시:

    USE master;
    GO
    
    CREATE CERTIFICATE MyServerCertRestored
    FROM FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    
  2. 컨테이너에서 인증서와 프라이빗 키를 삭제합니다.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    예시:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

투명한 데이터 암호화