적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
의 SQL 분석 엔드포인트Microsoft Fabric
의 웨어하우스Microsoft Fabric의 SQL 데이터베이스
테이블, 뷰, 테이블 반환 함수, 저장 프로시저, 확장 저장 프로시저, 스칼라 함수, 집계 함수, 서비스 큐 또는 동의어에 대한 사용 권한을 부여합니다.
Syntax
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
Arguments
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.
Caution
ALL 권한은 사용되지 않으며 호환성을 위해서만 유지 관리됩니다.
PRIVILEGES
ANSI-92 호환성을 위해 포함되었습니다. ALL의 동작을 변경하지 않습니다.
column_name
사용 권한을 부여할 테이블, 뷰 또는 테이블 반환 함수의 열 이름을 지정합니다. 괄호 ( )가 필요합니다. 열에 대해 SELECT, REFERENCES, UPDATEUNMASK 권한을 부여할 수 있습니다. column_name 권한 절 또는 보안 이름 다음에 지정할 수 있습니다.
Caution
테이블 수준은 열 수준 DENYGRANT보다 우선하지 않습니다. 사용 권한 계층에서의 이러한 불일치는 이전 버전과의 호환성을 위해 유지되었습니다.
[ 물체 :: ] [ schema_name ] . object_name
사용 권한을 거부할 개체를 지정합니다. schema_name을 지정한 경우 OBJECT 구는 선택 사항입니다. OBJECT 구가 사용된 경우 범위 한정자(::)가 필요합니다. schema_name을 지정하지 않은 경우 기본 스키마가 사용됩니다. schema_name을 지정하지 않은 경우 기본 스키마 범위 한정자(.)가 사용됩니다.
to <database_principal>
사용 권한을 부여할 보안 주체를 지정합니다.
옵션 포함 GRANT
지정된 사용 권한을 다른 보안 주체에게 부여할 수 있는 권한도 이 보안 주체에 제공됨을 나타냅니다.
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
해당 서버 수준의 보안 주체가 없는 데이터베이스 사용자를 지정합니다.
Remarks
Important
경우에 따라 ALTER 사용 권한의 REFERENCE 조합으로 피부여자가 데이터를 보거나 권한 없는 함수를 실행할 수 있습니다. 예를 들어 테이블에 대한 사용 권한과 ALTER 함수에 대한 사용 권한이 있는 사용자는 REFERENCE 함수를 통해 계산 열을 만들고 실행할 수 있습니다. 이 경우 사용자는 계산 열에 대한 권한도 필요합니다 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 |
스키마 바인딩은 Azure Synapse Analytics에서 지원되지 않으며, 이로 인해 기본 개체가 수정되고 뷰에 권한이 부여될 때 예기치 않은 동작이 발생할 수 있습니다. 자세한 내용은 Azure Synapse Analytics의 전용 SQL 풀 및 서버리스 SQL 풀이 있는 T-SQL 보기를 참조하세요.
Permissions
부여자(또는 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 멤버 자격 |
Examples
A. 테이블에 대한 SELECT 권한 부여
다음 예에서는 사용자 SELECT에게 RosaQdM 데이터베이스의 Person.Address 테이블에 대한 AdventureWorks2025 사용 권한을 부여합니다.
작성된 이 예제는 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. OPTION으로 GRANT 뷰에 대해 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 테이블에 대한 AdventureWorks2025 사용 권한을 부여합니다.
작성된 이 예제는 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 테이블에 대한 AdventureWorks2025 사용 권한을 부여합니다.
작성된 이 예제는 도메인 계정을 사용하기 때문에 Microsoft Fabric에서 작동하지 않지만, 이 예제는 Microsoft Entra ID Fabric 사용자에 대해 작동합니다. 예를 들면 RosaQdM@contoso.com다음과 같습니다.
GRANT SELECT ON Person.Address TO [AdventureWorks2022\RosaQdM];
GO
F. 역할에 프로시저에 대한 EXECUTE 권한 부여
다음 예에서는 역할을 만든 다음 이 역할에 EXECUTE 데이터베이스의 uspGetBillOfMaterials 프로시저에 대한 AdventureWorks2025 사용 권한을 부여합니다.
CREATE ROLE newrole ;
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;
GO
G. 열에 UNMASK 권한 부여
다음 예제에서는 테이블 UNMASK 의 열 에 대해 동적 데이터 마스킹email일부인 권한을 사용자에게 Data.Membership부여 OutreachCoordinator 합니다.
동적 데이터 마스킹은 현재 Microsoft Fabric에서 지원되지 않습니다.
GRANT UNMASK ON OBJECT::Data.Membership (email) to OutreachCoordinator;
GO