잡동사니

반응형

질문

사용자에게 뷰에 대한 액세스 권한을 부여하지만 사용자가 뷰가 선택한 테이블에 액세스하지 못하도록 제한 할 수 있습니까?

CREATE TABLE [dbo].[tUsers](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Username] [nvarchar](50) NULL,
    [Password] [nvarchar](50) NULL,
    [TenantID] int
) ON [PRIMARY]

CREATE VIEW [scmTenant1].[vUsers]
AS
SELECT     ID, Username, Password
FROM         dbo.tUsers
WHERE        TenantID = 1

SQL Server 사용자 계정 ( usrTenant1 )은 스키마 scmTenant1 에 액세스 할 수 있지만 dbo 스키마에는 액세스 할 수 없습니다. SQL Server Management Studio에 usrTenant1 로 로그인하고 다음 쿼리를 실행합니다.

SELECT * FROM scmTenant1.vUsers

나에게 오류를 준다 :

'tUsers'객체, 'Sandbox'데이터베이스, 'dbo'스키마에 대한 SELECT 권한이 거부되었습니다.

이 계정에 dbo 스키마에 대한 액세스 권한을 부여하면 쿼리가 제대로 실행됩니다.

테이블에 대한 뷰 권한을 부여하고 싶은 생각이 듭니다. 하지만 내 질문은 사용자에게 뷰에 대한 액세스 권한을 부여하고 해당 사용자가 뷰가 선택한 기본 테이블에 액세스하지 못하도록 제한 할 수 있습니까?


답변1

scmTenant가 아닌 dbo 뷰의 소유자를 만들거나 동일한 작업을 수행하는 중간 뷰를 만드는 경우 기본 테이블에 대한 권한을 부여하지 않고도 뷰에 대한 권한을 부여 할 수 있습니다.

CREATE VIEW dbo.vUsers_T1
AS 
SELECT     ID, Username, Password 
FROM         dbo.tUsers 
WHERE        TenantID = 1

CREATE VIEW [scmTenant1].[vUsers] as
SELECT * FROM dbo.vUsers_T1

CREATE VIEW dbo.vUsers
AS 
SELECT     ID, Username, Password 
FROM         dbo.tUsers 
WHERE        TenantID = dbo.GetCurrentTenant()


 

 

 

 

출처 : https://stackoverflow.com/questions/13032818/sql-server-view-permission-to-table

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band