예제: 인증서를 사용하여 데이터베이스 미러링 설정(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 데이터베이스에서 데이터베이스 마스터 키를 만듭니다.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_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 로그인을 만듭니다.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_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_A에 대한 HOST_B 로그인을 만듭니다.

    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  
    

Important

자동 장애 조치(Failover)를 지원하는 보호 우선 모드에서 실행하려는 경우 아웃바운드 및 인바운드 연결에 대한 미러링 모니터를 구성하기 위해 같은 설정 단계를 반복해야 합니다. 미러링 모니터 서버가 관련될 때 인바운드 연결을 설정하려면 두 파트너의 미러링 모니터 서버와 미러링 모니터 서버의 두 파트너에 대해 로그인 및 사용자를 설정해야 합니다.

자세한 내용은 데이터베이스 미러링 엔드포인트의 인바운드 연결에 대한 인증서 사용 허용(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 transacton safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    참고 항목

    자동 장애 조치(failover)를 사용하여 보호 우선 모드로 실행하려면 트랜잭션 안전을 FULL(기본 설정)로 설정된 상태로 두고 두 번째 SET PARTNER 'partner_server' 문을 실행한 후 가능한 한 빨리 미러링 모니터 서버를 추가합니다. 아웃바운드 및 인바운드 연결에 대해 미러링 모니터 서버를 먼저 구성해야 합니다.

[예제 상단]

관련 작업

참고 항목

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