다른 SQL 계정으로 실행되는 SQL 작업 단계


11

다른 SQL 로그인 계정으로 실행되도록 SQL 작업 단계를 설정하는 방법이 궁금합니다. 기존 자격 증명이 필요한 새 프록시 계정을 설정해야합니다. 자격 증명을 만들 때 유일한 옵션은 Windows 로그인 자격 증명을 사용하는 것입니다.

실행하려는 작업이 아래에 있습니다. 다른 추가 명령문이 있지만 작업 단계를 SQL 로그인으로 실행하도록 설정하면 실패합니다.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

이 작업이 SQL 작업 단계를 통해 실행되면 실패합니다.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

이 모든 테이블이 로컬 DB에 존재할 때 왜 원격 서버에 액세스하려고하는지 확실하지 않습니다.


SQL 작업 단계는 이미 SQL 인스턴스에 연결되어 있습니다. 따라서 비밀번호로 새로 연결하지 않고 기존 보안 컨텍스트를 변경해야합니다. 새 연결을 만들려면 sqlcmd 명령 또는 PowerShell 스크립트를 사용하면 스크립트 내에서 SQL 로그인 및 암호를 매개 변수로 사용할 수 있습니다. 그러나 수행해야 할 작업과 자체 컨텍스트가있는 저장 프로 시저가 충분한 지 고려해야합니다.
Rob Farley

답변:


15

T-SQL 작업 단계를 구성하는 경우 고급 페이지로 이동하여 "사용자로 실행"을 선택한 로그인으로 구성하십시오. 여기에 이미지 설명을 입력하십시오

PowerShell과 같은 다른 작업 단계 유형으로 작업하는 경우 프록시 계정을 구성해야합니다.


이 작업을 시도했지만 "현재 보안 컨텍스트를 신뢰할 수 없으므로 원격 서버에 대한 액세스가 거부되었습니다"라는 작업이 실패합니다. 그러나 사용자로 로그인 한 상태에서 스크립트를 실행하면 제대로 실행될 수 있습니다. 쿼리에 연결된 서버가 없으므로 원격 서버를 참조하는 이유를 이해할 수 없습니다. 이견있는 사람?
Geoff Dawdy

질문에 작업이 수행하려는 작업을 추가하고 정확한 오류가 있으면 해결책을 제시하는 데 도움이 될 것입니다.

제 경우에는 설정을 무시했습니다. SQL 2012 사용.
Miguel Sv

1

EXECUTE AS시작할 때 사용 하거나 특정 컨텍스트에서 실행되는 저장 프로 시저를 만듭니다.


이것은 나쁘다. 제한된 사용자로 저장 프로 시저를 호출하려면 sysadmin (또는 작업 소유자) 권한으로 되돌릴 수 있습니다. 해결 방법은 쿠키를 사용하는 것입니다.
Jens W.

EXECUTE AS 옵션을 사용하여 작성된 저장 프로시 저는 권한 에스컬레이션을 처리하며 누군가가 도중에 변경을 허용하지 않습니다. 사용 가능한 저장 프로 시저가 없으면 다른 로그인을 가장하면 스크립트 시작시 EXECUTE AS와 같이 트릭이 수행됩니다.
Rob Farley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.