적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
의 SQL 분석 엔드포인트Microsoft Fabric
의 웨어하우스Microsoft Fabric의 SQL 데이터베이스
SQL Server의 데이터베이스에 대한 사용 권한을 부여합니다.
Syntax
GRANT <permission> [ ,...n ]
TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission>::=
permission | ALL [ PRIVILEGES ]
<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을 부여한다는 것은 다음 권한을 부여하는 것과 같습니다: BACKUP, LOG, DATABASE, BACKUP, CREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURE.CREATE RULECREATE TABLECREATE VIEW
PRIVILEGES ANSI-92 준수를 위해 포함됩니다. ALL의 동작을 변경하지 않습니다.
WITH GRANT OPTION은 주체가 다른 주체에게도 지정된 권한을 부여할 수 있음을 나타냅니다.
AS <database_principal> 이 쿼리를 실행하는 보안 주체가 사용 권한을 부여하는 권한을 부여할 수 있는 다른 보안 주체를 지정합니다.
Database_user 데이터베이스 사용자를 지정합니다.
Database_role 데이터베이스 역할을 지정합니다.
Application_role적용 대상: SQL Server 2008(10.0.x) 이상, SQL Database
애플리케이션 역할을 지정합니다.
Database_user_mapped_to_Windows_User적용 대상: SQL Server 2008(10.0.x) 이상
Windows 사용자로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_Windows_Group적용 대상: SQL Server 2008(10.0.x) 이상
Windows 그룹으로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_certificate적용 대상: SQL Server 2008(10.0.x) 이상
인증서로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_mapped_to_asymmetric_key적용 대상: SQL Server 2008(10.0.x) 이상
비대칭 키로 매핑된 데이터베이스 사용자를 지정합니다.
Database_user_with_no_login 해당하는 서버 수준 보안 주체가 없는 데이터베이스 사용자를 지정합니다.
Remarks
Important
일부 경우에서 ALTER 사용 권한과 REFERENCE 사용 권한의 조합을 사용하면 피부여자가 데이터를 보거나 권한 없는 함수를 실행할 수 있습니다. 예를 들면 다음과 같습니다. 테이블에 대한 ALTER 권한과 함수에 대한 REFERENCE 권한을 가진 사용자는 함수를 통해 계산 열을 만들고 실행할 수 있습니다. 이 경우 계산 열에 대한 SELECT 사용 권한도 있어야 합니다.
데이터베이스는 사용 권한 계층에서 해당 데이터베이스의 부모인 서버에 포함된 보안 개체입니다. 다음 표에는 데이터베이스에 대해 부여할 수 있는 가장 제한적인 특정 사용 권한이 의미상 이러한 사용 권한을 포함하는 보다 일반적인 사용 권한과 함께 나열되어 있습니다.
| 데이터베이스 권한 | 데이터베이스 사용 권한에 포함된 사용 권한 | 서버 사용 권한에 포함된 사용 권한 |
|---|---|---|
| 대량 작업 관리 DATABASE 적용 대상: SQL Database. |
CONTROL | 제어 서버 |
| ALTER | CONTROL | 모든 DATABASE 수정 |
| 모든 APPLICATION ROLE 수정 | ALTER | 제어 서버 |
| 모든 ASSEMBLY 수정 | ALTER | 제어 서버 |
| 모든 ASYMMETRIC KEY 수정 | ALTER | 제어 서버 |
| 모든 CERTIFICATE 수정 | ALTER | 제어 서버 |
| 모든 COLUMN ENCRYPTION KEY 수정 | ALTER | 제어 서버 |
| 어떤 정의든 COLUMN MASTER KEY 바꾸세요 | ALTER | 제어 서버 |
| 모든 CONTRACT 수정 | ALTER | 제어 서버 |
| 감사 DATABASE 변경 | ALTER | 모든 SERVER AUDIT 수정 |
| 어떤 DDL이든 DATABASE 수정하세요 TRIGGER | ALTER | 제어 서버 |
| ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT NOTIFICATION | ALTER | 모든 EVENT NOTIFICATION 수정 |
| ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT SESSION 적용 대상: SQL Database. |
ALTER | 모든 EVENT SESSION 수정 |
| 모든 DATABASE SCOPED CONFIGURATION 수정 적용 대상: SQL Server 2016(13.x) 이상, SQL Database. |
CONTROL | 제어 서버 |
| 모든 DATASPACE 변경 | ALTER | 제어 서버 |
| 모든 EXTERNAL DATA SOURCE 수정 | ALTER | 제어 서버 |
| 모든 EXTERNAL FILE FORMAT 수정 | ALTER | 제어 서버 |
| 모든 EXTERNAL LIBRARY 수정 적용 대상: SQL Server 2017(14.x). |
CONTROL | 제어 서버 |
| 모든 FULLTEXT CATALOG 수정 | ALTER | 제어 서버 |
| 모든 마스크 변경 | CONTROL | 제어 서버 |
| 모든 MESSAGE TYPE 수정 | ALTER | 제어 서버 |
| 모든 REMOTE SERVICE BINDING 수정 | ALTER | 제어 서버 |
| 모든 ROLE 수정 | ALTER | 제어 서버 |
| 모든 ROUTE 수정 | ALTER | 제어 서버 |
| 모든 SCHEMA 수정 | ALTER | 제어 서버 |
| 모든 SECURITY POLICY 수정 적용 대상: Azure SQL Database. |
CONTROL | 제어 서버 |
| 모든 SENSITIVITY CLASSIFICATION 수정 적용 대상: SQL Server(SQL Server 2019 이상), Azure SQL Database. |
CONTROL | 제어 서버 |
| 모든 SERVICE 수정 | ALTER | 제어 서버 |
| 모든 SYMMETRIC KEY 수정 | ALTER | 제어 서버 |
| 모든 USER 수정 | ALTER | 제어 서버 |
| AUTHENTICATE | CONTROL | 서버 인증 |
| BACKUP DATABASE | CONTROL | 제어 서버 |
| BACKUP 로그 | CONTROL | 제어 서버 |
| CHECKPOINT | CONTROL | 제어 서버 |
| CONNECT | 복제 연결 | 제어 서버 |
| 복제 연결 | CONTROL | 제어 서버 |
| CONTROL | CONTROL | 제어 서버 |
| CREATE AGGREGATE | ALTER | 제어 서버 |
| 아무거나 만들어 EXTERNAL LIBRARY 적용 대상: SQL Server 2017(14.x). |
CONTROL | 제어 서버 |
| CREATE ASSEMBLY | 모든 ASSEMBLY 수정 | 제어 서버 |
| CREATE ASYMMETRIC KEY | 모든 ASYMMETRIC KEY 수정 | 제어 서버 |
| CREATE CERTIFICATE | 모든 CERTIFICATE 수정 | 제어 서버 |
| CREATE CONTRACT | 모든 CONTRACT 수정 | 제어 서버 |
| CREATE DATABASE | CONTROL | 아무거나 만들어 DATABASE |
| CREATE DATABASE Ddl EVENT NOTIFICATION | ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT NOTIFICATION | DDL 생성 EVENT NOTIFICATION |
| CREATE DEFAULT | ALTER | 제어 서버 |
| CREATE FULLTEXT CATALOG | 모든 FULLTEXT CATALOG 수정 | 제어 서버 |
| CREATE FUNCTION | ALTER | 제어 서버 |
| CREATE MESSAGE TYPE | 모든 MESSAGE TYPE 수정 | 제어 서버 |
| CREATE PROCEDURE | ALTER | 제어 서버 |
| CREATE QUEUE | ALTER | 제어 서버 |
| CREATE REMOTE SERVICE BINDING | 모든 REMOTE SERVICE BINDING 수정 | 제어 서버 |
| CREATE ROLE | 모든 ROLE 수정 | 제어 서버 |
| CREATE ROUTE | 모든 ROUTE 수정 | 제어 서버 |
| CREATE RULE | ALTER | 제어 서버 |
| CREATE SCHEMA | 모든 SCHEMA 수정 | 제어 서버 |
| CREATE SERVICE | 모든 SERVICE 수정 | 제어 서버 |
| CREATE SYMMETRIC KEY | 모든 SYMMETRIC KEY 수정 | 제어 서버 |
| CREATE SYNONYM | ALTER | 제어 서버 |
| CREATE TABLE | ALTER | 제어 서버 |
| CREATE TYPE | ALTER | 제어 서버 |
| CREATE VIEW | ALTER | 제어 서버 |
| CREATE XML SCHEMA COLLECTION | ALTER | 제어 서버 |
| DELETE | CONTROL | 제어 서버 |
| EXECUTE | CONTROL | 제어 서버 |
| 외부 어떤 것도 실행하세요 ENDPOINT 적용 대상: Azure SQL Database. |
CONTROL | 제어 서버 |
| 모든 외부 스크립트 실행 적용 대상: SQL Server 2016(13.x). |
CONTROL | 제어 서버 |
| 외부 스크립트 실행 적용 대상: SQL Server 2019(15.x). |
모든 외부 스크립트 실행 | 제어 서버 |
| INSERT | CONTROL | 제어 서버 |
| 연결 처치 DATABASE 적용 대상: Azure SQL Database. |
CONTROL | 모든 연결 변경 |
| REFERENCES | CONTROL | 제어 서버 |
| SELECT | CONTROL | 제어 서버 |
| SHOWPLAN | CONTROL | 알터 트레이스 |
| 쿼리 알림 구독 | CONTROL | 제어 서버 |
| 소유권 | CONTROL | 제어 서버 |
| UNMASK | CONTROL | 제어 서버 |
| UPDATE | CONTROL | 제어 서버 |
| VIEW 모든 COLUMN ENCRYPTION KEY 정의 | CONTROL | VIEW 모든 정의 |
| VIEW 모든 COLUMN MASTER KEY 정의 | CONTROL | VIEW 모든 정의 |
|
VIEW
DATABASE 성능 상태 적용 대상: SQL Server 2022(16.x) 이상 버전 |
VIEW DATABASE 상태(STATE) | VIEW 서버 성능 상태 |
|
VIEW
DATABASE 보안 상태 적용 대상: SQL Server 2022(16.x) 이상 버전 |
VIEW DATABASE 상태(STATE) | VIEW 서버 보안 상태 |
| VIEW DATABASE 상태(STATE) | CONTROL | VIEW 서버 상태 |
| VIEW 정의(DEFINITION) | CONTROL | VIEW 모든 정의 |
|
VIEW 성능 정의 적용 대상: SQL Server 2022(16.x) 이상 버전 |
VIEW 정의(DEFINITION) | VIEW 모든 성능 정의 |
|
VIEW 보안 정의 적용 대상: SQL Server 2022(16.x) 이상 버전 |
VIEW 정의(DEFINITION) | VIEW 모든 보안 정의 |
Permissions
부여자(또는 AS 옵션으로 지정된 주인)는 OPTION이 포함된 GRANT 권한 자체를 보유하거나, 허가가 부여되는 것을 암시하는 상위 권한을 가져야 합니다.
AS 옵션을 사용하는 경우 다음과 같은 추가 요구 사항이 적용됩니다.
| granting_principal | 필요한 추가 사용 권한 |
|---|---|
| 데이터베이스 사용자 | 사용자에 대한 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 고정 서버 역할의 멤버 자격 |
개체 소유자는 소유하고 있는 개체에 대한 사용 권한을 부여할 수 있습니다. 보안 개체에 대한 CONTROL 권한을 가진 보안 주체는 해당 보안 개체에 대한 사용 권한을 부여할 수 있습니다.
sysadmin 고정 서버 역할의 멤버와 같이 CONTROL SERVER 사용 권한이 부여된 사용자는 서버의 모든 보안 개체에 대한 사용 권한을 부여할 수 있습니다.
Examples
A. 테이블을 만들기 위한 사용 권한 부여
다음 예에서는 사용자 CREATE TABLE에게 AdventureWorks 데이터베이스에 대한 MelanieK 권한을 부여합니다.
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B. 애플리케이션 역할에 SHOWPLAN 사용 권한 부여
다음 예에서는 SHOWPLAN 애플리케이션 역할에 AdventureWorks2025 데이터베이스에 대한 AuditMonitor 권한을 부여합니다.
적용 대상: SQL Server 2008(10.0.x) 이상, SQL Database
USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO
C. 옵션 부여 CREATE VIEWGRANT
다음 예에서는 다른 보안 주체에게 CREATE VIEW를 부여할 수 있는 권한이 있는 사용자 AdventureWorks2025에게 CarmineEs 데이터베이스에 대한 CREATE VIEW 권한을 부여합니다.
USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO
D. 데이터베이스 사용자에게 CONTROL 권한 부여
다음 예에서는 데이터베이스 사용자 CONTROL에게 AdventureWorks2025 데이터베이스의 Sarah 권한을 부여합니다. 사용자가 데이터베이스에 존재해야 하며 컨텍스트가 데이터베이스로 설정되어야 합니다.
USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO