적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
데이터베이스의 모든 권한 또는 열 예외 권한에 대한 행을 반환합니다. 열의 경우 해당 개체 수준 사용 권한과 다른 모든 권한에 대한 행이 있습니다. 열 사용 권한이 해당 개체 사용 권한과 같으면 열에 대한 행이 없고 적용된 사용 권한은 개체의 사용 권한입니다.
Important
열 수준 권한은 동일한 엔터티에 대한 개체 수준 권한을 재정의합니다.
| 열 이름 | 데이터 형식 | Description |
|---|---|---|
| class | tinyint | 사용 권한이 있는 클래스를 식별합니다. 자세한 내용은 sys.securable_classes(Transact-SQL)를 참조하세요. 0 = 데이터베이스 1 = 개체 또는 열 3 = 스키마 4 = 데이터베이스 보안 주체 5 = 어셈블리 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 6 = 형식 10 = XML 스키마 컬렉션 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전 15 = 메시지 유형 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 16 = 서비스 계약 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 17 = 서비스 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 18 = 원격 서비스 바인딩 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 19 = 경로 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 23 =전체 텍스트 카탈로그 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 24 = 대칭 키 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 25 = 인증서 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 26 = 비대칭 키 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 29 = 전체 텍스트 중지 목록 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 31 = 검색 속성 목록 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전. 32 = 데이터베이스 범위 자격 증명 - 적용 대상: SQL Server 2016(13.x) 이상 버전. 34 = 외부 언어 - 적용 대상: SQL Server 2019(15.x) 이상 버전. |
| class_desc | nvarchar(60) | 사용 권한이 있는 클래스에 대한 설명입니다. DATABASE OBJECT_OR_COLUMN SCHEMA DATABASE_PRINCIPAL ASSEMBLY TYPE XML_SCHEMA_COLLECTION MESSAGE_TYPE SERVICE_CONTRACT SERVICE REMOTE_SERVICE_BINDING ROUTE FULLTEXT_CATALOG SYMMETRIC_KEYS CERTIFICATE ASYMMETRIC_KEY FULLTEXT STOPLIST SEARCH PROPERTY LIST DATABASE SCOPED CREDENTIAL EXTERNAL LANGUAGE |
| major_id | int | 클래스에 따라 해석되는 사용 권한이 있는 항목의 ID입니다. 일반적으로 클래스가 major_id 나타내는 항목에 적용되는 ID의 종류일 뿐입니다. 0 = 데이터베이스 자체 >0 = 사용자 개체의 개체 ID <0 = 시스템 개체의 개체 ID |
| minor_id | int | 클래스에 따라 해석되는 사용 권한이 있는 항목의 보조 ID입니다. 개체 클래스에 minor_id 사용할 수 있는 하위 범주가 없으므로 이 값은 0인 경우가 많습니다. 그렇지 않으면 테이블의 열 ID입니다. |
| grantee_principal_id | int | 사용 권한이 부여된 데이터베이스 보안 주체 ID입니다. |
| grantor_principal_id | int | 이러한 사용 권한 부여자의 데이터베이스 보안 주체 ID입니다. |
| type | char(4) | 데이터베이스 사용 권한의 유형입니다. 사용 권한 유형 목록은 다음 표를 참조하세요. |
| permission_name | nvarchar(128) | 퍼밋 이름. |
| state | char(1) | 허가 상태: D = 거부 R = 해지 G = 그랜트 W = Grant With Grant 옵션 |
| state_desc | nvarchar(60) | 사용 권한 상태에 대한 설명: DENY REVOKE GRANT GRANT_WITH_GRANT_OPTION |
데이터베이스 사용 권한
다음과 같은 유형의 사용 권한이 가능합니다.
| 사용 권한 유형 | 사용 권한 이름 | 보안 개체에 적용되는 항목 |
|---|---|---|
| AADS | ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT SESSION | DATABASE |
| AAMK | 모든 마스크 변경 | DATABASE |
| AEDS | 모든 EXTERNAL DATA SOURCE 수정 | DATABASE |
| AEFF | 모든 EXTERNAL FILE FORMAT 수정 | DATABASE |
| AL | ALTER | APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, DATABASEFULLTEXT CATALOGMESSAGE TYPECONTRACT목적어, , ROUTEUSERROLESCHEMASERVICESYMMETRIC KEYREMOTE SERVICE BINDINGXML SCHEMA COLLECTION |
| ALAK | 모든 ASYMMETRIC KEY 수정 | DATABASE |
| ALAR | 모든 APPLICATION ROLE 수정 | DATABASE |
| ALAS | 모든 ASSEMBLY 수정 | DATABASE |
| ALCF | 모든 CERTIFICATE 수정 | DATABASE |
| ALDS | 모든 DATASPACE 변경 | DATABASE |
| ALED | ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT NOTIFICATION | DATABASE |
| ALFT | 모든 FULLTEXT CATALOG 수정 | DATABASE |
| ALMT | 모든 MESSAGE TYPE 수정 | DATABASE |
| ALRL | 모든 ROLE 수정 | DATABASE |
| ALRT | 모든 ROUTE 수정 | DATABASE |
| ALSB | 모든 REMOTE SERVICE BINDING 수정 | DATABASE |
| ALSC | 모든 CONTRACT 수정 | DATABASE |
| ALSK | 모든 SYMMETRIC KEY 수정 | DATABASE |
| ALSM | 모든 SCHEMA 수정 | DATABASE |
| ALSV | 모든 SERVICE 수정 | DATABASE |
| ALTG | 어떤 DDL이든 DATABASE 수정하세요 TRIGGER | DATABASE |
| ALUS | 모든 USER 수정 | DATABASE |
| AUTH | AUTHENTICATE | DATABASE |
| BADB | BACKUP DATABASE | DATABASE |
| BALO | BACKUP 로그 | DATABASE |
| CL | CONTROL | APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACTMESSAGE TYPEFULLTEXT CATALOGDATABASE, , 객체, , ROLESCHEMAUSERROUTESERVICESYMMETRIC KEYTYPEREMOTE SERVICE BINDINGXML SCHEMA COLLECTION |
| CO | CONNECT | DATABASE |
| CORP | 복제 연결 | DATABASE |
| CP | CHECKPOINT | DATABASE |
| CRAG | CREATE AGGREGATE | DATABASE |
| CRAK | CREATE ASYMMETRIC KEY | DATABASE |
| CRAS | CREATE ASSEMBLY | DATABASE |
| CRCF | CREATE CERTIFICATE | DATABASE |
| CRDB | CREATE DATABASE | DATABASE |
| CRDF | CREATE DEFAULT | DATABASE |
| CRED | CREATE DATABASE DDL EVENT NOTIFICATION | DATABASE |
| CRFN | CREATE FUNCTION | DATABASE |
| CRFT | CREATE FULLTEXT CATALOG | DATABASE |
| CRMT | CREATE MESSAGE TYPE | DATABASE |
| CRPR | CREATE PROCEDURE | DATABASE |
| CRQU | CREATE QUEUE | DATABASE |
| CRRL | CREATE ROLE | DATABASE |
| CRRT | CREATE ROUTE | DATABASE |
| CRRU | CREATE RULE | DATABASE |
| CRSB | CREATE REMOTE SERVICE BINDING | DATABASE |
| CRSC | CREATE CONTRACT | DATABASE |
| CRSK | CREATE SYMMETRIC KEY | DATABASE |
| CRSM | CREATE SCHEMA | DATABASE |
| CRSN | CREATE SYNONYM | DATABASE |
| CRSO |
적용 대상: SQL Server 2012(11.x) 이상 버전. CREATE SEQUENCE |
DATABASE |
| CRSV | CREATE SERVICE | DATABASE |
| CRTB | CREATE TABLE | DATABASE |
| CRTY | CREATE TYPE | DATABASE |
| CRVW | CREATE VIEW | DATABASE |
| CRXS |
적용 대상: SQL Server 2008(10.0.x) 이상 버전 CREATE XML SCHEMA COLLECTION |
DATABASE |
| DABO | 대량 작업 관리 DATABASE | DATABASE |
| DL | DELETE | DATABASE, 목적, SCHEMA |
| EAES | 모든 외부 스크립트 실행 | DATABASE |
| EX | EXECUTE | ASSEMBLY, DATABASE, 목적어, SCHEMA, TYPE, XML SCHEMA COLLECTION |
| IM | IMPERSONATE | USER |
| IN | INSERT | DATABASE, 목적, SCHEMA |
| RC | RECEIVE | OBJECT |
| RF | REFERENCES | ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, MESSAGE TYPEFULLTEXT CATALOGDATABASE객체, SCHEMASYMMETRIC KEYTYPEXML SCHEMA COLLECTION |
| SL | SELECT | DATABASE, 목적, SCHEMA |
| SN | SEND | SERVICE |
| SPLN | SHOWPLAN | DATABASE |
| SUQN | 쿼리 알림 구독 | DATABASE |
| TO | 소유권 | ASSEMBLY, ASYMMETRIC KEY, , CERTIFICATECONTRACT, FULLTEXT CATALOGDATABASE, , MESSAGE TYPE, , 목적어, REMOTE SERVICE BINDING, ROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEXML SCHEMA COLLECTION |
| UP | UPDATE | DATABASE, 목적, SCHEMA |
| VW | VIEW 정의(DEFINITION) | APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACTMESSAGE TYPEFULLTEXT CATALOGDATABASE, , 객체, , ROLESCHEMAUSERROUTESERVICESYMMETRIC KEYTYPEREMOTE SERVICE BINDINGXML SCHEMA COLLECTION |
| VWCK | VIEW 어떤 COLUMN ENCRYPTION KEY 정의든 | DATABASE |
| VWCM | VIEW 어떤 COLUMN MASTER KEY 정의든 | DATABASE |
| VWCT | VIEW 변경 추적 | TABLE, SCHEMA |
| VWDS | VIEW DATABASE 국가 | DATABASE |
REVOKE 그리고 열-예외 권한
대부분의 경우, 명령어는 REVOKE sys.database_permissions에서 OR DENY 항목을 제거합니다GRANT.
하지만 객체에 대한 권한 또는 GRANTDENY 권한 설정과 REVOKE 열에 대한 권한 설정 방식이 가능합니다. 이 열-예외 권한은 sys.database_permissions과 마찬가지로 REVOKE 표시됩니다. 다음 예제를 고려하세요.
GRANT SELECT ON Person.Person TO [Sales];
REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];
이 권한들은 sys.database_permissions에서 테이블 위와 열에 각각 GRANT 1 REVOKE 으로 표시됩니다.
Important
REVOKE 는 와 다르 DENY며, 주체가 Sales 다른 권한을 통해 여전히 열에 접근할 수 있습니다. 만약 권한을 취소하지 않고 거부했다면, Sales 항상 를 초과GRANT하기 때문에 DENY 열의 내용을 볼 수 없었을 것입니다.
Permissions
모든 사용자는 자신의 권한을 볼 수 있습니다. 다른 사용자의 권한을 보려면, DEFINITION, USERCHANGE ANY , 또는 사용자에 대한 모든 권한이 필요합니다VIEW. 사용자 정의 역할을 보려면 ALTER ANY ROLE또는 역할(예: public) 멤버십이 필요합니다.
사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.
Examples
A. 데이터베이스 보안 주체의 모든 권한 나열
다음 쿼리는 데이터베이스 보안 주체에 대해 명시적으로 부여되거나 거부된 사용 권한을 나열합니다.
Important
고정 데이터베이스 역할의 사용 권한은 에 sys.database_permissions표시되지 않습니다. 따라서 데이터베이스 보안 주체에는 여기에 나열되지 않은 추가 권한이 있을 수 있습니다.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;
B. 데이터베이스 내의 스키마 개체에 대한 사용 권한 나열
다음 쿼리는 sys.database_principals 및 sys.database_permissions에 조인하여 특정 스키마 개체에 부여되거나 거부된 권한을 나열합니다.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1;
C. 특정 개체에 대한 사용 권한 나열
이전 예제를 사용하여 단일 데이터베이스 개체와 관련된 권한을 쿼리할 수 있습니다.
예를 들어 샘플 데이터베이스test부여된 다음 세분화된 사용 권한을 고려합니다.
GRANT SELECT ON dbo.vAssocSeqOrders TO [test];
할당된 세분화된 사용 권한을 찾습니다.dbo.vAssocSeqOrders
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1
AND o.name = 'vAssocSeqOrders'
AND s.name = 'dbo';
출력을 반환합니다.
principal_id name type_desc authentication_type_desc state_desc permission_name ObjectName
5 test SQL_USER INSTANCE GRANT SELECT dbo.vAssocSeqOrders