ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TDE 암호화 된 데이터 베이스 마이그레이션
    카테고리 없음 2024. 3. 13. 13:53
    반응형

    아래는 원본 서버에서 실행

     

    -- 원본 SQL Server에서 TDE 인증서의 마스터 키 백업
    USE master;
    BACKUP MASTER KEY TO FILE = 'D:\TDE\20240313\MasterKeyBackup.key'
    ENCRYPTION BY PASSWORD = 'P@ssw0rd!';



    -- 원본 SQL Server에서 TDE 인증서의 개인 키 백업
    USE master;
    BACKUP CERTIFICATE YourCertificateName TO FILE = 'D:\TDE\20240313\CertBackup.cer'
    WITH PRIVATE KEY (FILE = 'D:\TDE\20240313\PrivateKeyBackup.key',
                      ENCRYPTION BY PASSWORD = 'P@ssw0rd!');

    -- 목적지 SQL Server로 TDE 인증서 백업 파일을 복사


    USE master ;
    GO

     

     

     

    아래는 목적지 서버에서 수행

     

    -- 목적지 SQL Server에서 마스터 키 복원
    USE master;
    RESTORE MASTER KEY FROM FILE = 'D:\TDE\MasterKeyBackup.key'
    DECRYPTION BY PASSWORD = 'P@ssw0rd!'
    ENCRYPTION BY PASSWORD = ' P@ssw0rd!';


    -- 위 단계에서 가지고 온 마스터 키에 대한 세션 키를 개방
    OPEN MASTER KEY DECRYPTION BY PASSWORD = 'P@ssw0rd!';

    -- 목적지 SQL Server에서 TDE 인증서 복원
    USE master;
    CREATE CERTIFICATE YourCertificateName FROM FILE = 'D:\TDE\CertBackup.cer'
    WITH PRIVATE KEY (FILE = 'D:\TDE\PrivateKeyBackup.key',
                      DECRYPTION BY PASSWORD = 'P@ssw0rd!');

    -- 복원된 TDE 인증서를 사용하여 데이터베이스의 TDE 설정 변경
    ALTER DATABASE YourDatabaseName SET ENCRYPTION ON;
    ALTER DATABASE YourDatabaseName SET ENCRYPTION ON SERVER CERTIFICATE YourCertificateName;

     

     

    메시지 15581, 수준 16, 상태 7, 줄 18
    이 작업을 수행하기 전에 데이터베이스에서 마스터 키를 만들거나 세션의 마스터 키를 여십시오.

     

    위의 오류 메시지가 나오면 아래와 같이 마스터 키 세션을 열어 준다.
    -- 마스터 키 세션 열기
    OPEN MASTER KEY DECRYPTION BY PASSWORD = 'P@ssw0rd!';

     

    위와 같은 오류가 발생할 때 아래의 명령어를 수행하라.
    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY

     

     

     

    active-active node sql 마이그레이션 중이고 위는 신규 1번 노드였고, 지금 부터는 2번 노드

     

    위 단계의 인증서 백업 후, 신규 2번 서버에 인증서를 설치하려고 했더니 아래와 같은 오류가 발생

     

     

    자, 이제 해결 해보자.

     

    해결! 

     

    이유는 참으로 어리석은 행동이 원인이었다. MS SQL 의 쿼리 실행은 여러대의 SQL Instance 를 연결했을 때는 SSMS 최상단에 표시된 문구를 확인하고 실행을 해야 한다. 원인은 두 대의 인스턴스가 있는 서버에서 실제 B 노드에서 실행해야 하는 쿼리를 A노드에서 실행하고 있었기 때문이다.

     

    아래 그림의 파란색으로 칠해진 부분이 호스트네임\인스턴스네임 인데, 쿼리를 실행할 때, 반드시 확인해야 한다는 사실!

     

    https://stackoverflow.com/questions/46373723/please-create-a-master-key-in-the-database-or-open-the-master-key-in-the-session

    반응형
Designed by Tistory.