다른 사용자 권한으로 저장 프로 시저에서 SSIS 패키지 실행


14

다양한 권한 수준으로 인해 사용자가 합리적인 방식으로 SSIS 패키지를 실행할 수 있도록하는 데 문제가 있습니다.

시나리오 : 우리는 데이터로 데이터를로드하는 두 가지 다른 SSIS 패키지를 사용하여 데이터웨어 하우스를 만들었습니다. 하나는 SQL 에이전트 작업을 통해 자동으로 실행되고 제대로 작동해야합니다. 업스트림 데이터가 마무리되고 정리되면 사용자 요구

이 패키지는 실행 시작시 데이터베이스 백업 (확실히 확인), 계산 된 테이블 삭제 및 재생성 등 매우 특권이있는 작업을 수행합니다.

[SSISDB]. [catalog]. [create_execution] 및 [SSISDB]. [catalog]. [start_execution] 저장 프로 시저를 통해이 작업을 실행하기위한 저장 프로 시저를 작성했습니다 .... 내 계정으로 실행할 때 제대로 작동합니다. (저는 시스템 관리자입니다).

SSISDB 및 MSDB에서 실행을 대기열에 추가하는 데 필요한 높은 수준의 권한으로 인해 일반 사용자가 실행할 때 저장 프로 시저가 실패했으며 패키지 자체가 보안 수준이 낮기 때문에 패키지 자체가 실패했습니다.

내가 시도한 것 :

저장 프로 시저에서 'Execute As'를 사용하여 문제를 해결하려고 시도했지만 데이터베이스 간 체인 문제, 신뢰할 수있는 플래그 등으로 인해 실패했습니다.

또한 에이전트 작업을 통해 패키지를 실행하고 저장 프로 시저에서 에이전트 작업을 실행하여 문제를 해결하려고 시도했지만 다음과 같은 고통의 세계로 빠르게 들어갔습니다.

  • 작업별로 실행 권한을 설정할 수 없음
  • 시간이 지남에 따라 직원을 변경하기 위해 중앙 서버 역할을 통해이 액세스를 구성하고 작업에 단일 사용자 만 소유자로 가질 수 있기를 희망합니다.
  • 프록시 계정의 어두운 세계, sql-auth 로그인 등의 자격 증명

계획 C와 D

내가 생각할 수있는 유일한 옵션은 높은 권한으로 전용 SQL Server 로그인을 만들고 가져 오기를 예약 한 사람의 자격 증명을 잃어버린 감사 자격 증명을 전달하지 않도록 사용자를 신뢰하는 것입니다 (이 문제가 다른 영역에서 해결되는 방법) 사용자가 자신의 '서버 역할'계정으로 인증 할 수 있도록 순수하게 웹 프런트 엔드를 구축 한 다음 웹 응용 프로그램에서 두 번째 (권한있는) 연결로 저장 프로 시저를 실행하도록합니다.

그래서....

방법에 대한 조언이 있습니까?

  • SSIS 패키지가 권한있는 작업을 수행하도록합니다
  • 권한이 낮은 사용자가 실행 (AD Windows 계정 사용)
  • 바람직하게는 작업을 실행하기위한 액세스가 중앙 서버 역할을 통해 관리되는 경우 (새 창 그룹을 쉽게 만들 수는 없습니다)
  • 새로운 중간 / 프록시 계정이 SQL Server 인증 계정 인 경우 (다시 말해 AD를 변경할 수있는 기능이 매우 제한적 임)

여기에 움직이는 부분이 많고 일부는 회전하는 블레이드와 같은 느낌이 들기 때문에 내가 놓친 다른 정보가 있으면 알려주십시오.

건배, 팀

편집하다....

그래서 오늘 저는 ssis_admin 권한으로 전용 SQL Server 로그인을 생성하고 해당 사용자가 소유 한 3 개의 SQL Server 에이전트 작업을 생성했으며 최종 사용자가 execute as해당 사용자 에게 호출하는 저장 프로 시저를 업데이트했습니다 . create executionSQL Server 로그인 으로 호출 할 수 없어서 Windows 계정이 필요하기 때문에 실패했습니다 .

사용자 저장 프로 시저를 execute asWindows 계정으로 업데이트했습니다. SQL Server가 (AD 서비스 계정)으로 실행 중이고 권한이 부여 ssis_admin되어 오류가 발생했습니다.

현재 보안 컨텍스트를 되돌릴 수 없습니다. '다른 이름으로 실행'이 호출 된 원래 데이터베이스로 전환 한 후 다시 시도하십시오.

이것은 빠른 곳으로 가지 않습니다 :(


1) 패키지를 시작해야합니다. create_execution , "데이터 준비 시나리오"에 대해 실행시 매개 변수를 지정해야합니까? 2) ssis_admin 역할에 관심이 없다고 가정해도 안전합니까?
billinkc

1) create_executionsproc에서 작업으로 매개 변수 (3 개의 값 중 하나)를 전달해야하기 때문에 사용 하고 있습니다. 그것이 해결되면 3 개의 sprocs / job 등을 갖게되어 기쁩니다. 2) ssis_admin이 저를 가져 오는 가장 낮은 권한 역할 인 경우에는 sysadmin보다 낫습니다. 적어도 sysadmin보다 낫고 일반적인 용도로웨어 하우스 테이블을 실수로 떨어 뜨리거나 푸는 문제를 해결합니다.
Wokket 2019 년

ssis_admin역할을 통해 SSIS 패키지를 실행할 수 있지만 (procs는 sysadmin 또는 ssis_admin 역할의 멤버 자격을 확인합니다.)이 패키지는 그대로 실행되므로 백업 등을 수행 할 수 없다고 생각 합니다. (나는 그것을 테스트 해야하는지, 그것이 그들이 실행되는지 또는 SQL Server 서비스 계정으로 실행되는지는 결코 기억할 수 없다). 그러나 ssis_admin의 구성원이되면 좋은 구성이 아닐 수도있는 구성으로 패키지 및 머들을 배포 할 수 있습니다. 2016 년은 우리에게 더 세밀한 역할을 제공하지만 여기서 많이 사용하지는 않습니다
billinkc

가장 적은 위험은 권한이있는 사용자 / 계정의 올바른 조합을 사용하여 최소 권한 상태를 달성하는 3 개의 하드 코딩 된 작업이있을 것이라고 생각합니다. 그런 다음 해당 사용자에게 작업을 실행할 수있는 권한을 부여하거나이를 금지하고을 EXECUTE AS통해 특정 작업을 실행할 수있는 세 가지 proc를 만듭니다 sp_start_job. 보안에 끔찍한 임의의 인터넷 사람을 말합니다
billinkc

@billinkc 나는 ssis_operator 할 것이라고 생각
톰 V - topanswers.xyz 시도

답변:


2

후손을 위해 다음을 통해이 작업을 수행했습니다.

  • 사용자가 호출 한 저장 프로 시저 ( Admin.RunImport)를 변경하여 SQL 서비스에서 사용하는 계정을 '실행'
  • SQL Server 서비스 계정 (AD 관리 서비스 계정)은 execute as위 의 사용을 허용하는 Admin sproc을 실행할 수있는 권한을 갖도록 수정되었습니다.
  • ssisdb.ssis_admin 및 msdb.SQlAgentOperator 역할을 갖도록 SQL Server 서비스 계정이 수정되었습니다.
  • Admin.RunImport저장 프로시 저는 sp_start_job전달 된 매개 변수에 따라 3 가지 에이전트 작업 중 하나를 큐에 넣습니다.
    • 위의 ssis 보안 컨텍스트 오류를 ​​무시하려면 SQL 에이전트를 통한이 리디렉션이 필요합니다.
    • 에이전트 작업은 'sa'가 소유하며 Raw.hp_Execute_Import_Impl작업마다 다른 매개 변수를 전달 하는 기본 저장 프로 시저 ( )를 실행합니다 .
    • 이는 에이전트 작업 sa이 예약 된 작업과 동일한 위의 ssis_admin 권한 으로 인해 실행됨을 의미합니다.
  • Raw.hp_Execute_Import_Impl저장 프로 시저 큐으로 SSIS 패키지 sa일반과 동일.

이 목적을 위해 전용 Windows 계정을 만들 수있는 대신, 나는 지금 당장 얻을 것으로 생각합니다.

도와 주셔서 감사합니다!


2
돌아와서 솔루션을 게시 해 주셔서 감사합니다. 이제이 문제가 다시 발생하고 수행 한 작업을 잊어 버린 경우 웹에서 검색하면 자신의 솔루션을 찾을 수 있습니다!
Nick.McDermaid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.