이벤트 알림에 대한 대화 보안 구성

적용 대상:SQL Server

Service Broker 대화 보안을 구성해야 합니다. 대화 상자 보안은 Service Broker 대화 상자 전체 보안 모델에 따라 수동으로 구성해야 합니다. 전체 보안 모델을 사용하면 원격 서버와 주고 받는 메시지를 암호화하고 암호 해독할 수 있습니다. 이벤트 알림은 한 방향으로 전송되지만 오류와 같은 다른 메시지도 반대 방향으로 반환됩니다.

이벤트 알림에 대한 대화 상자 보안 구성

이벤트 알림에 대한 대화 상자 보안을 구현하는 데 필요한 프로세스는 다음 단계에 설명되어 있습니다. 이러한 단계에는 원본 서버와 대상 서버 모두에서 수행할 작업이 포함됩니다. 원본 서버는 이벤트 알림이 생성되는 서버입니다. 대상 서버는 이벤트 알림 메시지를 받는 서버입니다. 다음 단계를 계속하기 전에 원본 서버와 대상 서버 모두에 대한 각 단계의 작업을 완료해야 합니다.

Important

모든 인증서는 유효한 시작 및 만료 날짜로 만들어야 합니다.

1단계: TCP 포트 번호 및 대상 서비스 이름을 설정합니다.

원본 서버와 대상 서버가 메시지를 받을 TCP 포트를 설정합니다. 대상 서비스의 이름도 결정해야 합니다.

2단계: 데이터베이스 수준 인증에 대한 암호화 및 인증서 공유를 구성합니다.

원본 서버와 대상 서버 모두에서 다음 작업을 완료합니다.

원본 서버 대상 서버
이벤트 알림 및 마스터 키를 저장할 데이터베이스를 선택하거나 만듭니다. 마스터 키를 저장할 데이터베이스를 선택하거나 만듭니다.
원본 데이터베이스 에 대한 마스터 키가 없는 경우 마스터 키를 만듭니다. 원본 및 대상 데이터베이스 모두에 마스터 키가 있어야 해당 인증서를 보호할 수 있습니다. 대상 데이터베이스에 대한 마스터 키가 없는 경우 마스터 키를 만듭니다.
원본 데이터베이스에 대한 로그인 및 해당 사용자를 만듭니다. 대상 데이터베이스에 대한 로그인 및 해당 사용자를 만듭니다.
원본 데이터베이스의 사용자가 소유하는인증서를 만듭니다 . 대상 데이터베이스의 사용자가 소유한 인증서를 만듭니다.
대상 서버에서 액세스할 수 있는 파일에 인증서 를 백업합니다. 원본 서버에서 액세스할 수 있는 파일에 인증서를 백업합니다.
대상 데이터베이스의 사용자를 지정하고 LOGIN 없이 사용자를 만듭니다. 이 사용자는 백업 파일에서 만들 대상 데이터베이스 인증서를 소유합니다. 이 사용자의 유일한 목적은 다음 3단계에서 만든 대상 데이터베이스 인증서를 소유하는 것뿐이므로 사용자가 로그인에 매핑될 필요가 없습니다. 원본 데이터베이스의 사용자를 지정하고 LOGIN 없이 사용자를 만듭니다. 이 사용자는 백업 파일에서 만들 원본 데이터베이스 인증서를 소유합니다. 이 사용자의 유일한 목적은 다음 3단계에서 만든 원본 데이터베이스 인증서를 소유하는 것뿐이므로 사용자는 로그인에 매핑할 필요가 없습니다.

3단계: 인증서를 공유하고 데이터베이스 수준 인증에 대한 권한을 부여합니다.

원본 서버와 대상 서버 모두에서 다음 작업을 완료합니다.

원본 서버 대상 서버
대상 데이터베이스 사용자를 소유자로 지정하여 대상 인증서의 백업 파일에서 인증서 를 만듭니다. 원본 데이터베이스 사용자를 소유자로 지정하여 원본 인증서의 백업 파일에서 인증서를 만듭니다.
원본 데이터베이스 사용자에게 이벤트 알림을 만들 수 있는 권한을 부여합니다. 이 권한에 대한 자세한 내용은 CREATE EVENT NOTIFICATION(Transact-SQL)을 참조하세요. 기존 이벤트 알림 Service Broker 계약에 https://schemas.microsoft.com/SQL/Notifications/PostEventNotification대해 대상 데이터베이스 사용자에게 REFERENCES 권한을 부여합니다.
대상 서비스에 대한 원격 서비스 바인딩 을 만들고 대상 데이터베이스 사용자의 자격 증명을 지정합니다. 원격 서비스 바인딩은 원본 데이터베이스 사용자가 소유한 인증서의 공개 키가 대상 서버로 전송되는 메시지를 인증하도록 보장합니다. 대상 데이터베이스 사용자에게 CREATE QUEUE, CREATE SERVICE 및 CREATE SCHEMA 권한을 부여 합니다.
대상 데이터베이스 사용자로 데이터베이스에 아직 연결되지 않은 경우 지금 연결합니다.
이벤트 알림 메시지를 수신하는 큐 를 만들고 메시지를 배달하는 서비스를 만듭니다.
원본 데이터베이스 사용자에게 대상 서비스에 대한 SEND 권한을 부여 합니다.
원본 데이터베이스의 Service Broker 식별자를 대상 서버에 제공합니다. 이 식별자는 sys.databases 카탈로그 뷰의 service_broker_guid 열을 쿼리하여 가져올 수 있습니다. 서버 수준 이벤트 알림의 경우 msdbservice broker 식별자를 사용합니다. 대상 데이터베이스의 Service Broker 식별자를 원본 서버에 제공합니다.

4단계: 경로를 만들고 서버 수준 인증을 설정합니다.

원본 서버와 대상 서버 모두에서 다음 작업을 완료합니다.

원본 서버 대상 서버
대상 서비스에 대한 경로를 만들고 대상 데이터베이스의 서비스 브로커 식별자와 합의된 TCP 포트 번호를 지정합니다. 원본 서비스에 대한 경로를 만들고 원본 데이터베이스의 서비스 브로커 식별자와 합의된 TCP 포트 번호를 지정합니다. 원본 서비스를 지정하려면 제공된 다음 서비스를 https://schemas.microsoft.com/SQL/Notifications/EventNotificationService사용합니다.
마스터 데이터베이스로 전환하여 서버 수준 인증을 구성합니다. 마스터 데이터베이스로 전환하여 서버 수준 인증을 구성합니다.
master 데이터베이스에 대한 마스터 키가 없는 경우 마스터 키를 만듭니다. master 데이터베이스에 대한 마스터 키가 없는 경우 마스터 키를 만듭니다.
데이터베이스를 인증하는인증서를 만듭니다 . 데이터베이스를 인증하는인증서를 만듭니다 .
대상 서버에서 액세스할 수 있는 파일에 인증서 를 백업합니다. 원본 서버에서 액세스할 수 있는 파일에 인증서를 백업합니다.
엔드포인트를 만들고 합의된 TCP 포트 번호, FOR SERVICE_BROKER(AUTHENTICATION = CERTIFICATE certificate_name) 및 인증 인증서의 이름을 지정합니다. 엔드포인트를 만들고 합의된 TCP 포트 번호, FOR SERVICE_BROKER(AUTHENTICATION = CERTIFICATE certificate_name) 및 인증 인증서의 이름을 지정합니다.
로그인을 만들고 대상 서버의 로그인을 지정합니다. 로그인을 만들고 원본 서버의 로그인을 지정합니다.
대상 인증자 로그인에 엔드포인트에 대한 CONNECT 권한을 부여 합니다. 원본 인증자 로그인에 엔드포인트에 대한 CONNECT 권한을 부여합니다.
사용자를 만들고 대상 인증자 로그인을 지정합니다. 사용자를 만들고 원본 인증자 로그인을 지정합니다.

5단계: 서버 수준의 인증에 대한 인증서를 공유하고 이벤트 알림을 만듭니다.

원본 서버와 대상 서버 모두에서 다음 작업을 완료합니다.

원본 서버 대상 서버
대상 인증자 사용자를 소유자로 지정하여 대상 인증서의 백업 파일로부터인증서를 만듭니다 . 원본 인증자 사용자를 소유자로 지정하여 원본 인증서의 백업 파일에서 인증서를 만듭니다.
이벤트 알림을 만들 원본 데이터베이스로 전환하고 원본 데이터베이스 사용자로 연결되어 있지 않으면 지금 연결합니다. 대상 데이터베이스로 전환하여 이벤트 알림 메시지를 받습니다.
이벤트 알림을 만들고 대상 데이터베이스의 broker 서비스 및 식별자를 지정합니다.

참고 항목

GRANT(Transact-SQL)
BACKUP CERTIFICATE(Transact-SQL)
sys.databases(Transact-SQL)
암호화 계층
이벤트 알림 구현
CREATE MASTER KEY(Transact-SQL)
CREATE LOGIN(Transact-SQL)
CREATE USER(Transact-SQL)
CREATE CERTIFICATE(Transact-SQL)
CREATE REMOTE SERVICE BINDING(Transact-SQL)
GRANT(Transact-SQL)
CREATE ROUTE(Transact-SQL)
CREATE QUEUE(Transact-SQL)
CREATE SERVICE(Transact-SQL)
CREATE ENDPOINT(Transact-SQL)
CREATE EVENT NOTIFICATION(Transact-SQL)