보안 개요(Service Broker)

적용 대상: SQL Server(지원되는 모든 버전) Azure SQL Managed Instance

Service Broker를 통해 확장성이 매우 크며 안전하고 안정적인 데이터베이스 응용 프로그램을 작성할 수 있습니다. Service Broker 보안을 사용하면 SQL Server 인스턴스가 다른 신뢰 관계가 없는 여러 컴퓨터에 있거나 원본 및 대상 컴퓨터가 동시에 같은 네트워크에 연결되어 있지 않아도 서로 다른 인스턴스가 호스트하는 서비스는 안전하게 통신할 수 있습니다.

Service Broker 보안은 인증서를 이용합니다. 일반적으로 인증서를 사용하여 원격 데이터베이스의 자격 증명을 설정한 다음 원격 데이터베이스에서 로컬 사용자에게 작업을 매핑합니다. 로컬 사용자에 대한 사용 권한은 원격 서비스 대신 모든 작업에 적용됩니다. 인증서는 데이터베이스 간에 공유됩니다. 사용자에 대한 다른 정보는 공유되지 않습니다.

Service Broker는 두 가지 고유한 보안 유형인 대화 보안과 전송 보안을 제공합니다. 이러한 두 가지 유형의 보안과 이들이 함께 작동하는 방법을 이해하는 것이 Service Broker 응용 프로그램을 디자인, 배포 및 관리하는 데 도움이 됩니다.

  • 대화 보안 - 개별 대화 메시지를 암호화하고 대화 참가자의 ID를 확인합니다. 또한 원격 권한 부여와 메시지 무결성 검사를 제공합니다. 대화 보안은 두 서비스 간에 인증되고 암호화된 통신을 설정합니다.

  • 전송 보안 - 권한이 없는 데이터베이스에서 Service Broker 메시지를 로컬 인스턴스의 데이터베이스로 보낼 수 없게 합니다. 전송 보안은 두 데이터베이스 간에 인증된 네트워크 연결을 설정합니다.

대화 프로토콜 및 인접한 Broker 프로토콜은 원격 데이터베이스에서 명령을 실행하지 않고 데이터베이스 간에 메시지를 전달하도록 디자인되었습니다. 이러한 스타일의 통신을 통해 Service Broker는 데이터베이스에 SQL Server 로그인 또는 Windows 보안 자격 증명 공유를 요청하지 않고도 서비스를 제공할 수 있습니다.

인증서에 대한 자세한 내용은 CREATE CERTIFICATE(Transact-SQL)를 참조하세요.

Adventure Works Cycles 보안 시나리오

참고

예제는 SQL Server 2008 R2에서 유효성을 검사했습니다. AdventureWorks 샘플 데이터베이스AdventureWorks2008R2 샘플 데이터베이스를 사용하여 예제를 완료하는 것이 좋습니다.

SQL Server Service Broker는 현재 버전의 SQL Server에서 지원됩니다.

예제 비즈니스 시나리오에서 가상의 기업인 Adventure Works Cycles는 공급업체에 부품 주문을 배달하기 위해 Service Broker 서비스를 만듭니다. 이 서비스를 사용하려면 Adventure Works와 공급업체 모두에 대한 보안이 필요합니다. 각 공급업체는 기존 고객만 주문할 수 있다는 것을 보장할 수 있어야 하고 Adventure Works는 자격이 있는 공급업체만 주문을 받을 수 있다는 것을 보장할 수 있어야 합니다. AdventureWorks2008R2 데이터베이스와 공급업체 간 메시지는 타사가 메시지를 읽을 수 없게 암호화되어야 합니다. 가능한 높은 수준의 보안을 보장하려면 자격이 있는 공급업체만 AdventureWorks2008R2 데이터베이스에 연결할 수 있어야 합니다.

메시지 암호화 요구 사항을 만족하려면 Adventure Works 및 공급업체가 Service Broker 대화 보안을 사용합니다.

  1. 대화 보안을 설정하려면 AdventureWorks2008R2 관리자가 VendorOutgoing이라는 로컬 사용자를 만들고 그 사용자에 대한 키 쌍을 만듭니다.

  2. 관리자는 키 쌍의 공개 키가 포함된 인증서를 서비스에 액세스해야 하는 공급업체에게 배포합니다.

  3. 각 공급업체는 Adventure Works Cycles의 인증서를 데이터베이스에 설치하고 그 인증서를 소유하는 사용자를 만듭니다.

  4. 그런 다음 공급업체는 키 쌍을 만들고 그 키 쌍의 퍼블릭 키와 함께 공급업체 서비스의 서비스 이름 및 인증서에 대한 정보를 AdventureWorks2008R2 관리자에게 보냅니다.

  5. AdventureWorks2008R2 관리자는 각 공급업체에 대한 사용자를 만들고 해당 공급업체의 인증서를 사용자와 연결합니다.

  6. 또한 관리자는 공급업체 서비스 이름과 공급업체에 대해 만들어진 사용자를 연결하는 각 공급업체의 원격 서비스 바인딩을 만듭니다.

자격이 있는 공급업체만 AdventureWorks2008R2 데이터베이스에 연결할 수 있는 요구 사항을 만족하려면 AdventureWorks2008R2 관리자가 Service Broker 전송 보안을 사용합니다.

  1. 전송 보안을 설정하려면 AdventureWorks2008R2 관리자가 메시지를 보내는 SQL Server 인스턴스의 master 데이터베이스에 인증서를 만듭니다.

  2. AdventureWorks2008R2 관리자는 각 공급업체에 인증서를 보냅니다.

  3. 각 공급업체 관리자는 master 데이터베이스에 인증서를 소유할 사용자를 만든 후 메시지를 받을 SQL Server 인스턴스에 인증서를 설치합니다.

  4. 그런 다음, 인스턴스의 master 데이터베이스에 인증서를 만들고 해당 사용자에 대한 퍼블릭 키를 AdventureWorks2008R2 관리자에게 보냅니다.

  5. 마지막으로 AdventureWorks2008R2 관리자는 master 데이터베이스에 각 공급업체 퍼블릭 키 인증서를 소유할 사용자를 만들고 각 공급업체 인증서를 데이터베이스에 설치합니다.

전송 보안과 대화 보안 조합을 사용하면 AdventureWorks2008R2 관리자가 이 애플리케이션의 보안 요구 사항을 만족시키는 데 도움을 줍니다. 이 시나리오에서는 공급업체가 AdventureWorks2008R2 데이터베이스에 로그온할 수 없으며 AdventureWorks 관리자가 공급업체 데이터베이스에 로그온할 수 없습니다. Service Broker 메시지만 데이터베이스 간에 교환할 수 있습니다.

참고 항목