보안 개요(Service Broker)

적용 대상:SQL ServerAzure 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(10.50.x)에서 유효성을 검사했습니다. 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. 각 공급업체 관리자는 마스터 데이터베이스에 인증서를 소유하는 사용자를 만든 다음 메시지를 받을 SQL Server 인스턴스에 인증서를 설치합니다.

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

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

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

참고 항목