다음을 통해 공유


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

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

시작 서비스에 대화 보안이 사용되도록 하려면 서비스에 대한 원격 서비스 바인딩을 만듭니다. SQL Server가 높은 수준의 보안을 사용하도록 하려면 원격 서비스 바인딩이 익명 보안을 지정해서는 안 되며 대상 데이터베이스가 이 서비스에 대해 높은 수준의 보안을 사용하도록 구성되어야 합니다.

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

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

    보안 정보보안 정보

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

    [!참고]

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

  2. 원격 서비스에 대해 로그인 없는 사용자를 만듭니다.

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

  4. 원격 서비스 사용자와 서비스를 지정하는 원격 서비스 바인딩을 만듭니다.

  5. 로그인 없이 로컬 서비스를 소유할 사용자를 만듭니다.

  6. 로컬 서비스에 대한 인증서를 만듭니다. 이전 단계에서 생성된 사용자가 인증서를 소유하고 있습니다.

    [!참고]

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

  7. 인증서를 백업합니다.

    보안 정보보안 정보

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

  8. 원격 데이터베이스의 데이터베이스 관리자에게 인증서와 시작 서비스 이름을 제공합니다. 예를 들어 인증서를 파일 공유에 저장하여 플로피 디스크나 CD-ROM 같은 물리적 디스크로 또는 보안 전자 메일을 통해 교환할 수도 있습니다.

    [!참고]

    SQL Server가 전체 대화 보안을 사용하도록 하려면 원격 데이터베이스에 인증서를 설치해야 하며 7단계에서 생성된 사용자가 대화를 시작하는 사용자여야 합니다.

USE AdventureWorks ;
GO

--------------------------------------------------------------------
-- The first part of the script configures security to allow the
-- remote service to send messages in this database. The script creates
-- a user in this database, loads the certificate for the remote service,
-- grants permission to the user, and creates a remote service binding.

-- Given a certificate for the owner of the remote target service
-- SupplierOrders, create a remote service binding for
-- the service.  The remote user will be granted permission
-- to send messages to the local service OrderParts. 
-- This example assumes that the certificate for the service 
-- is saved in the file'C:\Certificates\SupplierOrders.cer' and that
-- the initiating service already exists.


-- 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

-- Install a certificate for a user
-- in the remote database. The certificate is
-- provided by the owner of the remote service. The
-- user for the remote service owns the certificate.

CREATE CERTIFICATE [SupplierOrdersCertificate]
    AUTHORIZATION [SupplierOrdersUser]
    FROM FILE='C:\Certificates\SupplierOrders.cer' ;
GO

-- Create the remote service binding. Notice
-- that the user specified in the binding
-- does not own the binding itself.

-- Creating this binding specifies that messages from
-- this database are secured using the certificate for
-- the [SupplierOrdersUser] user.

-- When the anonymous option is omitted, anonymous is OFF.
-- Therefore, the credentials for the user that begins
-- are used in the remote database.

CREATE REMOTE SERVICE BINDING [SupplierOrdersBinding]
    TO SERVICE 'SupplierOrders'
    WITH USER = [SupplierOrdersUser] ;
GO

--------------------------------------------------------------------
-- The second part of the script creates a local user that will begin
-- conversations to the remote service. The certificate for this
-- user must be provided to the owner of the remote service.


-- Create a user without a login for the local service.

CREATE USER [OrderPartsUser]
    WITHOUT LOGIN ;
GO

-- Create a certificate for the local service.
CREATE CERTIFICATE [OrderPartsCertificate]
    AUTHORIZATION [OrderPartsUser]
    WITH SUBJECT = 'Certificate for the order service user.';
GO

-- Make this user the owner of the initiator service.

ALTER AUTHORIZATION ON SERVICE::OrderParts TO OrderPartsUser 

-- Backup the certificate for the user that initiates the
-- conversation. This example assumes that the certificate
-- is named OrderServiceCertificate.
BACKUP CERTIFICATE [OrderPartsCertificate]
    TO FILE = 'C:\Certificates\OrderParts.cer' ;
GO

-- Grant RECEIVE permissions on the queue for the service.
-- This allows the local user to begin conversations from
-- services that use the queue.

GRANT RECEIVE ON [OrderPartsQueue] TO [OrderPartsUser] ;
GO