다음을 통해 공유


방법: 전체 대화 보안을 위한 대상 서비스 구성(Transact-SQL)

SQL Server는 시작 서비스를 호스팅하는 데이터베이스에 원격 서비스 바인딩이 있는 서비스와의 모든 대화에 대화 보안을 사용합니다. 대상 서비스를 호스팅하는 데이터베이스에 대화를 만든 사용자에 해당되는 사용자가 포함될 경우 대화에서 높은 수준의 보안을 사용합니다.

대상 서비스가 대화 보안을 사용하도록 하려면 시작 서비스에 로그인할 사용자를 만듭니다. 각 시작 서비스에 대해 사용자를 만들고 시작 사용자에 대한 인증서를 설치합니다. 대상 서비스는 원격 서비스 바인딩을 사용하지 않습니다.

전체 대화 보안을 위한 대상 서비스를 구성하려면

  1. 로그인 없이 사용자를 만듭니다.

  2. 사용자 인증서를 만듭니다.

    [!참고]

    마스터 키를 사용하여 인증서를 암호화해야 합니다. 자세한 내용은 CREATE MASTER KEY(Transact-SQL)을 참조하십시오.

  3. 이 사용자를 대상 서비스 소유자로 만듭니다.

  4. 인증서를 파일에 백업합니다.

    보안 정보보안 정보

    이 사용자의 인증서만 백업합니다. 인증서와 연결된 개인 키는 백업 또는 배포하지 마십시오.

  5. 대상 서비스 사용자가 대상 서비스에 사용되는 큐에서 메시지를 받을 수 있는 권한을 부여합니다.

  6. 원격 데이터베이스의 데이터베이스 관리자에게 인증서와 시작 서비스 이름을 제공합니다.

    [!참고]

    SQL Server에서 전체 대화 보안을 사용하려면 인증서를 원격 데이터베이스에 설치해야 하고 인증서 사용자가 대상 서비스의 원격 서비스 바인딩에 지정된 사용자여야 합니다.

  7. 신뢰할 수 있는 출처에서 원격 데이터베이스의 사용자 인증서를 얻습니다. 이렇게 하려면 일반적으로 암호화된 전자 메일을 사용하여 인증서를 보내거나 플로피 디스크와 같은 물리적 미디어로 인증서를 전송해야 합니다.

    보안 정보보안 정보

    신뢰할 수 있는 출처에서 제공하는 인증서만 설치하십시오.

  8. 로그인 없이 사용자를 만듭니다.

  9. 시작 서비스에 대한 인증서를 설치합니다. 이전 단계에서 생성된 사용자가 인증서를 소유하고 있습니다.

  10. 시작 서비스 인증서에 대한 로그인 없이 사용자를 만듭니다.

  11. 시작 사용자에게 대상 서비스에 메시지를 보낼 수 있는 권한을 부여합니다.

USE AdventureWorks2008R2 ;
GO

--------------------------------------------------------------------
-- The first part of the script configures security for the local user.
-- The script creates a user in this database, creates a certificate
-- for the user, writes the certificate to the file system, and
-- grants permissions to the user. Since this service is a target
-- service, no remote service binding is necessary.


-- Create a user without a login. For convenience,
-- the name of the user is based on the name of the
-- the remote service.

CREATE USER [SupplierOrdersUser]
    WITHOUT LOGIN;
GO

-- Create a certificate for the initiating service
-- to use to send messages to the target service.

CREATE CERTIFICATE [SupplierOrdersCertificate]
    AUTHORIZATION [SupplierOrdersUser]
    WITH SUBJECT = 'Certificate for the SupplierOrders service user.';
GO

-- Dump the certificate. Provide the certificate file
-- to the administrator for the database that hosts
-- the other service.

BACKUP CERTIFICATE [SupplierOrdersCertificate]
   TO FILE = 'C:\Certificates\SupplierOrders.cer';
GO
-- Make this user the owner of the target service.

ALTER AUTHORIZATION ON SERVICE::SupplierOrders TO [SupplierOrdersUser];
GO

-- Grant receive on the orders queue to the local user.

GRANT RECEIVE ON SupplierOrdersQueue
    TO [SupplierOrdersUser];
GO

---------------------------------------------------------------
-- The second part of the script configures security in this
-- database for the remote service. This consists of creating
-- a user in this database, loading the certificate for the remote
-- service, and granting permissions for the user.


-- Create a user without a login.

CREATE USER [OrderPartsUser]
    WITHOUT LOGIN;
GO

-- Install a certificate for the initiating user.
-- The certificate is provided by the owner of the
-- initiating service.

CREATE CERTIFICATE [OrderPartsCertificate]
    AUTHORIZATION [OrderPartsUser]
    FROM FILE='C:\Certificates\OrderParts.cer';
GO

-- Grant send on the target service to the user for the
-- initating service.

GRANT SEND ON SERVICE::[SupplierOrders]
    TO [OrderPartsUser];
GO