다음을 통해 공유


연결된 서버의 보안

연결된 서버를 연결하는 동안(예를 들어 분산 쿼리를 처리할 때) 보내는 서버에서는 연결된 서버를 대신해서 로그인 이름과 암호를 제공하여 받는 서버에 연결합니다. 이 연결을 사용하려면 SQL Server 시스템 저장 프로시저를 사용하여 연결된 서버 간의 로그인 매핑을 만들어야 합니다.

연결된 서버 로그인 매핑은 sp_addlinkedsrvlogin을 사용하여 추가하고 sp_droplinkedsrvlogin을 사용하여 제거할 수 있습니다. 연결된 서버 로그인 매핑은 지정된 연결된 서버 및 로컬 로그인에 대한 원격 로그인 및 원격 암호를 만듭니다. SQL Server가 분산 쿼리 또는 저장 프로시저를 실행하기 위해 연결된 서버에 연결할 때, SQL Server는 프로시저의 쿼리를 실행 중인 현재 로그인에 대한 로그인 매핑을 찾습니다. 로그인 매핑이 있는 경우 SQL Server는 연결된 서버에 연결할 때 해당 원격 로그인과 암호를 보냅니다.

예를 들어 연결된 서버 S1에 대한 매핑이 원격 암호 8r4li034j7$를 사용하여 로컬 로그인 U1에서 원격 로그인 U2로 설정되었습니다. 로컬 로그인 U1에서 연결된 서버 S1에 저장된 테이블에 액세스하는 분산 쿼리를 실행하면 SQL Server가 연결된 서버 S1에 연결할 때 U2와 8r4li034j7$가 사용자 ID 및 암호로 전달됩니다.

연결된 서버 구성의 기본 매핑은 로그인의 현재 보안 자격 증명을 애뮬레이트하는 것입니다. 이런 유형의 매핑을 자체 매핑이라고 합니다. sp_addlinkedserver를 사용하여 연결된 서버를 추가하면 기본 자체 매핑이 모든 로컬 로그인에 대해 추가됩니다. 보안 계정 위임이 사용 가능하고 연결된 서버에 Windows 인증이 지원되면 Windows 인증 로그인에 대한 자체 매핑이 지원됩니다.

[!참고]

가능하면 Windows 인증을 사용하십시오.

보안 계정 위임이 클라이언트 또는 보내는 서버에서 사용 가능하지 않거나 연결된 서버/공급자가 Windows 인증 모드를 인식하지 않으면 Windows 인증을 사용하는 로그인에 자체 매핑을 사용할 수 없습니다. 따라서 Windows 인증을 사용하는 로그인의 로컬 로그인 매핑을 연결된 서버에 있는 Windows 인증 로그인이 아닌 특정 로그인에 대해 설정해야 합니다. 이 경우 원격 로그인은 연결된 서버가 SQL Server의 인스턴스인 경우 SQL Server 인증을 사용합니다.

분산 쿼리는 원격 테이블의 연결된 서버에 의한 원격 로그인을 허가하는 사용 권한에 따릅니다. 하지만 SQL Server는 컴파일 시 어떤 사용 권한 유효성 검사도 수행하지 않습니다. 모든 사용 권한의 유효성은 공급자에서 보고하는 쿼리 실행 시간에 감지됩니다.

[!참고]

연결된 서버의 테이블을 사용하는 경우 최상의 쿼리 계획을 만들려면 쿼리 프로세서가 연결된 서버에서 데이터 분포 통계를 가져와야 합니다. 테이블의 열에 대해 제한된 사용 권한을 가진 사용자는 유용한 모든 통계를 가져올 권한이 없으므로 덜 효율적인 쿼리 계획을 받게 되어 성능 저하 문제를 겪을 수 있습니다. 연결된 서버가 SQL Server 인스턴스인 경우 사용 가능한 모든 통계를 가져오려면 사용자가 해당 테이블의 소유자이거나 연결된 서버의 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.

연결된 서버 테스트

개체 탐색기에서 연결된 서버를 마우스 오른쪽 단추로 클릭한 다음 연결 테스트를 클릭합니다.