2009-10-27 6 views
1

일부 사용자는 읽기 액세스 권한이있는 저장 프로 시저를 만들 수 있도록 설정해야합니다. 또한 프로덕션에서는 SELECT를 가질 수 없으며 생성 된 procs에 대해 EXECUTE 만 수행 할 수 있습니다. 개발 과정에서 SELECT를 사용하여 프로 시저를 만들 수 있습니다.스키마 및 보안에 대한 질문

Reports라는 스키마를 설정했습니다. 해당 스키마의 소유자는 로그인 - Report_Admin입니다. 해당 사용자는 테이블에 대한 선택 액세스 권한이 있습니다. 그런 다음 보고서 스키마에 대한 변경 및 실행을 보고서 작성자 계정으로 보냈습니다. Dbo는 테이블을 소유하므로 dbo가보고 스키마를 소유하고있는 경우 작동하지만 삭제도 절차에서 작동합니다!

우리는보고 서비스를 사용하고 있으며 유지 관리를 위해 데이터베이스에 모든 SQL을 갖고 싶습니다.

감사합니다.

답변

2

이미 발견 한 것처럼 소유권 체인을 사용하여 성공하지 못할 수도 있습니다. 해결책은 다음과 같습니다. report_writer는 report_writer 권한 하에서 실행되도록 EXECUTE AS SELF 절을 사용하여 보고서를 작성해야합니다. 그런 다음 report_reader 그룹은 reports 스키마의 EXECUTE 권한을 사용하여 해당 보고서를 실행할 수 있으며 execute as 절로 인해 보고서가 데이터를 읽을 수 있습니다.

+0

질문을 올바르게 이해할 수 있는지 확실하지 않지만 report_writer 사용자가 선택 권한이없는 것으로 보입니다. 따라서 EXECUTE AS SELF는 저장 프로 시저가 아무 것도 선택하지 못하게합니다. – Andomar

+0

@Andomar : report_writer에 SELECT 권한이 있습니다. OP에서 Report_Admin입니다. –

0

역할 및 사용자에게 권한을 할당 할 수 있으며 별도의 스키마가 필요하지 않습니다. 그래서 하나의 스키마 만 사용합니다. "dbo"(기본값)

사용자에 대한 데이터베이스 역할을 만듭니다. 개발시 data_reader에 해당 역할을 부여하십시오. 개발 및 프로덕션 모두에서 저장 프로 시저에 대한 실행 권한을 부여하십시오. 지금까지 내가 아는 한, 각 저장 프로 시저에 대한 실행 권한을 부여해야합니다.

+0

두 번째 스키마는 모든 프로 시저를 하나씩 EXECUTE ann 할 수 있도록 정확하게 필요합니다. 두 개의 완전히 별개의 시스템을 갖는 것은 프로 시저 작성기에 대해 SELECT 권한을 분리하고 보고서를 실행하는 사용자에 대해서만 EXECUTE를 갖는 것과 정확히 같지 않습니다. 전혀 다르다. –

+0

좋습니다, dbo 스키마의 모든 프로 시저에 실행 권한을 부여 할 수없는 이유가 있습니까? Btw는 별도의 개발 시스템에 대해 언급합니다. – Andomar

관련 문제