다음을 통해 공유


GRANT 개체 사용 권한(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

테이블, 뷰, 테이블 반환 함수, 저장 프로시저, 확장 저장 프로시저, 스칼라 함수, 집계 함수, 서비스 큐 또는 동의어에 대한 사용 권한을 부여합니다.

Transact-SQL 구문 표기 규칙

구문

GRANT <permission> [ ,...n ] ON   
    [ OBJECT :: ][ schema_name ]. object_name [ ( column_name [ ,...n ] ) ]  
    TO <database_principal> [ ,...n ]   
    [ WITH GRANT OPTION ]  
    [ AS <database_principal> ]  
  
<permission> ::=  
    ALL [ PRIVILEGES ] | permission [ ( column_name [ ,...n ] ) ]  
  
<database_principal> ::=   
        Database_user   
    | Database_role   
    | Application_role   
    | Database_user_mapped_to_Windows_User   
    | Database_user_mapped_to_Windows_Group   
    | Database_user_mapped_to_certificate   
    | Database_user_mapped_to_asymmetric_key   
    | Database_user_with_no_login  

인수

permission

스키마 포함 개체에 대해 부여할 수 있는 사용 권한을 지정합니다. 사용 권한 목록은 비고를 참조 하세요.

ALL

ALL을 부여하더라도 일부 가능한 사용 권한은 부여되지 않습니다. ALL을 부여하는 것은 지정된 개체에 적용할 수 있는 모든 ANSI-92 사용 권한을 부여하는 것과 동일합니다. ALL의 의미는 다음과 같이 달라집니다.

  • 스칼라 함수 사용 권한: EXECUTE, REFERENCES
  • 테이블 반환 함수 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE
  • 저장 프로시저 사용 권한: EXECUTE
  • 테이블 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE
  • 뷰 사용 권한: DELETE, INSERT, REFERENCES, SELECT, UPDATE

주의

ALL 권한은 사용되지 않으며 호환성을 위해서만 유지 관리됩니다.

PRIVILEGES

ANSI-92 호환성을 위해 포함되었습니다. ALL의 동작을 변경하지 않습니다.

column_name

사용 권한을 부여할 테이블, 뷰 또는 테이블 반환 함수의 열 이름을 지정합니다. 괄호 ( )가 필요합니다. 열에 SELECT, REFERENCES, UPDATE 및 UNMASK 권한만 부여할 수 있습니다. column_name 권한 절 또는 보안 이름 다음에 지정할 수 있습니다.

주의

테이블 수준의 DENY는 열 수준의 GRANT보다 우선하지 않습니다. 사용 권한 계층에서의 이러한 불일치는 이전 버전과의 호환성을 위해 유지되었습니다.

ON [ OBJECT :: ] [ schema_name ] . object_name

사용 권한을 거부할 개체를 지정합니다. schema_name을 지정한 경우 OBJECT 구는 선택 사항입니다. OBJECT 구가 사용된 경우 범위 한정자(::)가 필요합니다. schema_name을 지정하지 않은 경우 기본 스키마가 사용됩니다. schema_name을 지정하지 않은 경우 기본 스키마 범위 한정자(.)가 사용됩니다.

TO <database_principal>

사용 권한을 부여할 보안 주체를 지정합니다.

WITH GRANT OPTION

지정된 사용 권한을 다른 보안 주체에게 부여할 수 있는 권한도 이 보안 주체에 제공됨을 나타냅니다.

AS <database_principal>

이 쿼리를 실행하는 보안 주체가 사용 권한을 부여하는 권한을 부여할 수 있는 다른 보안 주체를 지정합니다.

Database_user
데이터베이스 사용자를 지정합니다.

Database_role
데이터베이스 역할을 지정합니다.

Application_role
애플리케이션 역할을 지정합니다.

Database_user_mapped_to_Windows_User
Windows 사용자로 매핑된 데이터베이스 사용자를 지정합니다.

Database_user_mapped_to_Windows_Group
Windows 그룹으로 매핑된 데이터베이스 사용자를 지정합니다.

Database_user_mapped_to_certificate
인증서로 매핑된 데이터베이스 사용자를 지정합니다.

Database_user_mapped_to_asymmetric_key
비대칭 키로 매핑된 데이터베이스 사용자를 지정합니다.

Database_user_with_no_login
해당 서버 수준의 보안 주체가 없는 데이터베이스 사용자를 지정합니다.

설명

Important

경우에 따라 ALTER 사용 권한의 REFERENCE 조합으로 피부여자가 데이터를 보거나 권한 없는 함수를 실행할 수 있습니다. 예를 들어 테이블에 대한 사용 권한과 REFERENCE 함수에 대한 사용 권한이 있는 사용자는 ALTER 함수를 통해 계산 열을 만들고 실행할 수 있습니다. 이 경우 사용자는 계산 열에 대한 권한도 필요합니다 SELECT .

개체에 대한 정보는 다양한 카탈로그 뷰에 표시됩니다. 자세한 내용은 Object Catalog Views (Transact-SQL)을 참조하세요.

개체는 사용 권한 계층에서 해당 개체의 부모인 스키마에 포함된 스키마 수준 보안 개체입니다. 다음 표에는 개체에 대해 부여할 수 있는 가장 제한적인 특정 사용 권한이 의미상 이러한 사용 권한을 포함하는 보다 일반적인 사용 권한과 함께 나열되어 있습니다.

개체 사용 권한 개체 사용 권한에 포함된 사용 권한 스키마 사용 권한에 포함된 사용 권한
ALTER CONTROL ALTER
CONTROL CONTROL CONTROL
DELETE CONTROL DELETE
EXECUTE CONTROL EXECUTE
INSERT CONTROL INSERT
RECEIVE CONTROL CONTROL
REFERENCES CONTROL REFERENCES
SELECT RECEIVE SELECT
TAKE OWNERSHIP CONTROL CONTROL
UPDATE CONTROL UPDATE
VIEW CHANGE TRACKING CONTROL VIEW CHANGE TRACKING
VIEW DEFINITION CONTROL VIEW DEFINITION

사용 권한

부여자(또는 AS 옵션으로 지정된 보안 주체)에는 사용 권한 자체가 있거나 GRANT OPTION부여되는 사용 권한을 의미하는 더 높은 권한이 있어야 합니다.

AS 옵션을 사용하는 경우 다음과 같은 추가 요구 사항이 적용됩니다.

AS 필요한 추가 사용 권한
데이터베이스 사용자 IMPERSONATE 사용자에 대한 사용 권한, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격
Windows 로그인에 매핑된 데이터베이스 사용자 IMPERSONATE 사용자에 대한 사용 권한, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격
Windows 그룹에 매핑된 데이터베이스 사용자 Windows 그룹의 멤버 자격, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격입니다.
인증서에 매핑된 데이터베이스 사용자 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격입니다.
비대칭 키에 매핑된 데이터베이스 사용자 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격입니다.
서버 보안 주체에 매핑되지 않은 데이터베이스 사용자 IMPERSONATE 사용자에 대한 사용 권한, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격
데이터베이스 역할 ALTER 역할에 대한 사용 권한, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격
애플리케이션 역할 ALTER 역할에 대한 사용 권한, 고정 데이터베이스 역할의 db_securityadmin 멤버 자격, 고정 데이터베이스 역할의 db_owner 멤버 자격 또는 고정 서버 역할의 sysadmin 멤버 자격

예제

A. 테이블에 대한 SELECT 권한 부여

다음 예에서는 사용자 SELECT에게 RosaQdM 데이터베이스의 Person.Address 테이블에 대한 AdventureWorks2022 사용 권한을 부여합니다.

작성된 이 예제는 SQL 인증 로그인에 사용자를 사용하므로 Microsoft Fabric에서 작동하지 않지만, 이 예제는 Microsoft Entra ID Fabric 사용자에 대해 작동합니다. 예를 들면 RosaQdM@contoso.com다음과 같습니다.

GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;  
GO  

B. 저장 프로시저에 EXECUTE 권한 부여

다음 예에서는 EXECUTE이라는 애플리케이션 역할에 대해 저장 프로시저 HumanResources.uspUpdateEmployeeHireInfo에 대한 Recruiting11 사용 권한을 부여합니다.

USE AdventureWorks2022;   
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO   

C. GRANT OPTION을 사용하여 보기에 대한 REFERENCES 권한 부여

다음 예에서는 REFERENCES을 지정하여 사용자 BusinessEntityID에게 HumanResources.vEmployee 뷰의 Wanida 열에 대한 GRANT OPTION 사용 권한을 부여합니다.

작성된 이 예제는 SQL 인증 로그인에 사용자를 사용하므로 Microsoft Fabric에서 작동하지 않지만, 이 예제는 Microsoft Entra ID Fabric 사용자에 대해 작동합니다. 예를 들면 Wanida@contoso.com다음과 같습니다.

GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee   
    TO Wanida WITH GRANT OPTION;  
GO  

D. OBJECT 구를 사용하지 않고 테이블에 대한 SELECT 권한 부여

다음 예에서는 사용자 SELECT에게 RosaQdM 데이터베이스의 Person.Address 테이블에 대한 AdventureWorks2022 사용 권한을 부여합니다.

작성된 이 예제는 SQL 인증 로그인에 사용자를 사용하므로 Microsoft Fabric에서 작동하지 않지만, 이 예제는 Microsoft Entra ID Fabric 사용자에 대해 작동합니다. 예를 들면 RosaQdM@contoso.com다음과 같습니다.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E. 도메인 계정에 테이블에 대한 SELECT 권한 부여

다음 예에서는 사용자 SELECT에게 AdventureWorks2022\RosaQdM 데이터베이스의 Person.Address 테이블에 대한 AdventureWorks2022 사용 권한을 부여합니다.

작성된 이 예제는 도메인 계정을 사용하기 때문에 Microsoft Fabric에서 작동하지 않지만, 이 예제는 Microsoft Entra ID Fabric 사용자에 대해 작동합니다. 예를 들면 RosaQdM@contoso.com다음과 같습니다.

GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];  
GO  

F. 역할에 프로시저에 대한 EXECUTE 권한 부여

다음 예에서는 역할을 만든 다음 이 역할에 EXECUTE 데이터베이스의 uspGetBillOfMaterials 프로시저에 대한 AdventureWorks2022 사용 권한을 부여합니다.

CREATE ROLE newrole ;  
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;  
GO  

G. 열에 UNMASK 권한 부여

다음 예제에서는 테이블 Data.Membership 의 열 email 에 대해 동적 데이터 마스킹일부인 권한을 사용자에게 OutreachCoordinator부여 UNMASK 합니다.

동적 데이터 마스킹은 현재 Microsoft Fabric에서 지원되지 않습니다.

GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO