복붙노트

[SQL] 기본 개체에 뷰에 SELECT 권한을 부여,하지만

SQL

기본 개체에 뷰에 SELECT 권한을 부여,하지만

나는 종종 VIEW의 하나의 목적은 보안이라고 읽어에만 파생보기에 일부 사용자의 기본 테이블에 액세스하고, 다른 사용자를 허용 할 수 있습니다. 그것으로 마음에 나는 공급이 외부 사용자에 대한 데이터 집합을 제한하는 것이 여러 가지 뷰를 디자인했다.

모든 아주 좋은, 그러나 실제로이 작동하지 않습니다. 내가보기에 SELECT 권한을 부여하면 나도 모든 기본 개체에 대한 SELECT 권한을 부여하지 않는 한, 사용자가 액세스 할 수 없습니다. 저장 프로 시저에 대한 같은 이야기. 그것은 하나 개의 객체를 잊기 쉬운을 위해 내가 아직 부여 잘못된 사용자가 민감한 데이터에 액세스 할뿐만 아니라 성가신을 종료에 대한 최종 결과는 비 기능이며, 사용자는 뷰가 "하지 않는 불평 돌아와 작업".

너무 기본 개체를 노출하지 않고 뷰 또는 저장 프로 시저에 SELECT 권한을 부여하는 방법이 있나요?

해결법

  1. ==============================

    1.보기를 소유하는 동일한 사용자는 기본 테이블을 소유 하는가? 그렇지 않은 경우, 테이블의 소유자는 GRANT 옵션으로보기 소유자 권한을 부여 할 필요가있다. 같은 사용자가 테이블과 뷰를 모두 소유 한 경우,보기에 권한을 부여하는 것은 충분해야한다.

    보기를 소유하는 동일한 사용자는 기본 테이블을 소유 하는가? 그렇지 않은 경우, 테이블의 소유자는 GRANT 옵션으로보기 소유자 권한을 부여 할 필요가있다. 같은 사용자가 테이블과 뷰를 모두 소유 한 경우,보기에 권한을 부여하는 것은 충분해야한다.

  2. ==============================

    2.당신은 테이블과 다른 스키마에 귀하의 의견이있는 경우, 당신도 기본 테이블, "AUTHORIZE"과 같이보기로 테이블의 소유자에 대한 사용자 액세스 권한을 부여해야합니다 :

    당신은 테이블과 다른 스키마에 귀하의 의견이있는 경우, 당신도 기본 테이블, "AUTHORIZE"과 같이보기로 테이블의 소유자에 대한 사용자 액세스 권한을 부여해야합니다 :

    ALTER AUTHORIZATION ON reporting.MyViewName TO dbo
    

    DBO 위의 예에서 reporting.MyViewName가 액세스되는 테이블을 소유하고있는 사용자는

  3. ==============================

    3.당신은 도움이 포럼에서 정보를 찾을 수 있습니다.

    당신은 도움이 포럼에서 정보를 찾을 수 있습니다.

    마지막 게시물은 볼 수있는 권한이 아닌 기본 테이블을 부여 실행 된 것을의 세부 사항이 있습니다 :

    CREATE USER [Reports] FOR LOGIN [Reports] WITH DEFAULT_SCHEMA = Reports
    CREATE SCHEMA Reports AUTHORIZATION Reports --Auth as Reports was the key piece of information that I had missed.
    GO
    CREATE ROLE Reporting AUTHORIZATION db_securityadmin
    GO
    exec sp_addrolemember @rolename = 'Reporting', @membername = 'Reports'
    GO
    GRANT CREATE VIEW TO Reporting
    GRANT CREATE TABLE TO Reporting
    
    GRANT SELECT, VIEW DEFINITION ON [dbo].[zName] TO Reporting;
    

    참고 - 저장 프로 시저의 경우, 절차에 EXEC를 부여해야한다.

  4. from https://stackoverflow.com/questions/4134740/grant-select-permission-on-a-view-but-not-on-underlying-objects by cc-by-sa and MIT license