다음을 통해 공유


예제: 인증서를 사용하여 데이터베이스 미러링 설정(Transact-SQL)

적용 대상:SQL Server

이 예에서는 인증서 기반 인증을 사용하여 데이터베이스 미러링 세션을 만드는 데 필요한 모든 단계를 보여 줍니다. 이 항목의 예에서는 Transact-SQL을 사용합니다. 네트워크 보안을 보장할 수 없는 경우에는 데이터베이스 미러링 연결에 암호화를 사용하는 것이 좋습니다.

인증서를 다른 시스템에 복사하는 경우 보안 복사 방법을 사용합니다. 모든 인증서를 안전하게 보관하는 데 많은 주의를 기울여야 합니다.

예시

다음 예에서는 HOST_A에 있는 한 파트너에서 실행되어야 하는 단계를 보여 줍니다. 이 예에서 파트너 2개는 컴퓨터 시스템 3대의 기본 서버 인스턴스입니다. 두 서버 인스턴스는 비독점 Windows에서 실행되므로 인증서 기반 인증이 필요합니다.

초기 주 역할은 HOST_A가 수행하고 미러 역할은 HOST_B가 수행합니다.

인증서를 사용한 데이터베이스 미러링 설정에는 네 개의 일반적인 단계가 포함되며, 그 중 세 개인 1, 2 및 4단계는 이 예제에서 보여 줍니다. 이러한 단계는 다음과 같습니다.

  1. 아웃바운드 연결 구성

    이 예제는 다음 단계를 보여줍니다.

    1. 아웃바운드 연결을 위한 Host_A 구성.

    2. 아웃바운드 연결을 위한 Host_B 구성.

    이 데이터베이스 미러링 설정 단계에 대한 자세한 내용은 데이터베이스 미러링 엔드포인트의 아웃바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 사용합니다.

  2. 인바운드 연결 구성

    이 예제는 다음 단계를 보여줍니다.

    1. 인바운드 연결을 위한 Host_A 구성.

    2. 인바운드 연결을 위한 Host_B 구성.

    이 데이터베이스 미러링 설정 단계에 대한 자세한 내용은 데이터베이스 미러링 엔드포인트의 인바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 사용합니다.

  3. 미러 데이터베이스 생성

    미러 데이터베이스를 만드는 방법에 대한 자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.

  4. 미러링 파트너 구성

아웃바운드 연결 구성

아웃바운드 연결에 대한 Host_A를 구성하려면

  1. 필요한 경우 master 데이터베이스에서 데이터베이스 마스터 키를 만듭니다. <password> 유효한 암호로 대체합니다.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';  
    GO  
    
  2. 이 서버 인스턴스에 대한 인증서를 만듭니다.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. 인증서를 사용하여 서버 인스턴스에 대한 미러링 엔드포인트를 만듭니다.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_A_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. HOST_A 인증서를 백업하여 다른 시스템 HOST_B에 복사합니다.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. 보안 복사 방법을 사용하여 C:\HOST_A_cert.cer를 HOST_B에 복사합니다.

아웃바운드 연결에 대한 Host_B를 구성하려면

  1. 필요한 경우 master 데이터베이스에서 데이터베이스 마스터 키를 만듭니다.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. HOST_B 서버 인스턴스에 대한 인증서를 만듭니다.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. HOST_B에 서버 인스턴스에 대한 미러링 엔드포인트를 만듭니다.

    CREATE ENDPOINT Endpoint_Mirroring  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=7024  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE HOST_B_cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. HOST_B 인증서를 백업합니다.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. 보안 복사 방법을 사용하여 C:\HOST_B_cert.cer를 HOST_A에 복사합니다.

자세한 내용은 데이터베이스 미러링 엔드포인트의 아웃바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 참조하세요.

[예제 상단]

인바운드 연결 구성

인바운드 연결에 대한 Host_A를 구성하려면

  1. HOST_B에 접속하기 위한 HOST_A 로그인을 생성합니다. <password> 유효한 암호로 대체합니다.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>';  
    GO  
    
  2. --해당 로그인의 사용자를 만듭니다.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --인증서를 사용자와 연결합니다.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. 원격 미러링 엔드포인트에 대한 로그인에 CONNECT 권한을 부여합니다.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];  
    GO  
    

인바운드 연결에 대한 Host_B를 구성하려면

  1. HOST_B에서 HOST_A에 대한 로그인을 만듭니다.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. 해당 로그인의 사용자를 만듭니다.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. 인증서를 사용자와 연결합니다.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. 원격 미러링 엔드포인트에 대한 로그인에 CONNECT 권한을 부여합니다.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];  
    GO  
    

중요한

자동 장애 조치를 지원하는 고안전 모드에서 실행하려는 경우 아웃바운드 및 인바운드 연결에 대한 중재자를 구성하기 위해 동일한 설정 단계를 반복해야 합니다. 양 당사자에 증인이 관련된 경우, 인바운드 연결을 설정하려면, 두 파트너에서 증인을 위한 로그인 및 사용자를 설정하고, 증인에서 두 파트너를 위한 로그인 및 사용자를 설정해야 합니다.

자세한 내용은 데이터베이스 미러링 엔드포인트의 인바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 참조하세요.

[예제 상단]

미러 데이터베이스 생성

미러 데이터베이스를 만드는 방법에 대한 자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.

미러링 파트너 구성

  1. HOST_B의 미러 서버 인스턴스에서 HOST_A의 서버 인스턴스를 초기 주 서버 인스턴스로 만들어 파트너로 설정합니다. 유효한 네트워크 주소를 TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024로 대체합니다. 자세한 내용은 서버 네트워크 주소 지정(데이터베이스 미러링)을 참조하세요.

    --At HOST_B, set server instance on HOST_A as partner (principal server):  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  2. HOST_A의 주 서버 인스턴스에서 HOST_B의 서버 인스턴스를 파트너로 설정합니다(초기 미러 서버 인스턴스로 설정). 유효한 네트워크 주소를 TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024로 대체합니다.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  3. 이 예제에서는 세션이 고성능 모드에서 실행된다고 가정합니다. 고성능 모드에 대해 이 세션을 구성하려면 주 서버 인스턴스(HOST_A)에서 트랜잭션 보안을 OFF로 설정합니다.

    --Change to high-performance mode by turning off transaction safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    메모

    자동 장애 조치 기능과 함께 고안전 모드로 실행하려면 트랜잭션 안전을 FULL(기본 설정) 상태로 유지하고 두 번째 SET PARTNER 'partner_server' 문을 실행한 후, 가능한 한 빨리 증인 서버를 추가합니다. 아웃바운드 및 인바운드 연결에 대해 목격자 서버를 먼저 구성해야 합니다.

[예제 상단]

관련 작업

참고 항목

데이터베이스 미러링 및 Always On 가용성 그룹에 대한 전송 보안(SQL Server)
서버 네트워크 주소 지정(데이터베이스 미러링)
데이터베이스 미러링 엔드포인트(SQL Server)
데이터베이스 미러링 엔드포인트에 대한 인증서 사용(Transact-SQL)
ALTER DATABASE (Transact-SQL)
SQL Server 데이터베이스 엔진 및 Azure SQL 데이터베이스용 Security Center