다양한 권한 수준으로 인해 사용자가 합리적인 방식으로 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 execution
SQL Server 로그인 으로 호출 할 수 없어서 Windows 계정이 필요하기 때문에 실패했습니다 .
사용자 저장 프로 시저를 execute as
Windows 계정으로 업데이트했습니다. SQL Server가 (AD 서비스 계정)으로 실행 중이고 권한이 부여 ssis_admin
되어 오류가 발생했습니다.
현재 보안 컨텍스트를 되돌릴 수 없습니다. '다른 이름으로 실행'이 호출 된 원래 데이터베이스로 전환 한 후 다시 시도하십시오.
이것은 빠른 곳으로 가지 않습니다 :(
create_execution
sproc에서 작업으로 매개 변수 (3 개의 값 중 하나)를 전달해야하기 때문에 사용 하고 있습니다. 그것이 해결되면 3 개의 sprocs / job 등을 갖게되어 기쁩니다. 2) ssis_admin이 저를 가져 오는 가장 낮은 권한 역할 인 경우에는 sysadmin보다 낫습니다. 적어도 sysadmin보다 낫고 일반적인 용도로웨어 하우스 테이블을 실수로 떨어 뜨리거나 푸는 문제를 해결합니다.
ssis_admin
역할을 통해 SSIS 패키지를 실행할 수 있지만 (procs는 sysadmin 또는 ssis_admin 역할의 멤버 자격을 확인합니다.)이 패키지는 그대로 실행되므로 백업 등을 수행 할 수 없다고 생각 합니다. (나는 그것을 테스트 해야하는지, 그것이 그들이 실행되는지 또는 SQL Server 서비스 계정으로 실행되는지는 결코 기억할 수 없다). 그러나 ssis_admin의 구성원이되면 좋은 구성이 아닐 수도있는 구성으로 패키지 및 머들을 배포 할 수 있습니다. 2016 년은 우리에게 더 세밀한 역할을 제공하지만 여기서 많이 사용하지는 않습니다
EXECUTE AS
통해 특정 작업을 실행할 수있는 세 가지 proc를 만듭니다 sp_start_job
. 보안에 끔찍한 임의의 인터넷 사람을 말합니다
create_execution
즉 , "데이터 준비 시나리오"에 대해 실행시 매개 변수를 지정해야합니까? 2) ssis_admin 역할에 관심이 없다고 가정해도 안전합니까?