GRANT 개체 사용 권한(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
테이블, 뷰, 테이블 반환 함수, 저장 프로시저, 확장 저장 프로시저, 스칼라 함수, 집계 함수, 서비스 큐 또는 동의어에 대한 사용 권한을 부여합니다.
구문
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