다음을 통해 공유


sys.database_permissions (Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric 의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스Microsoft Fabric 미리 보기의 SQL 데이터베이스

데이터베이스의 모든 권한 또는 열 예외 권한에 대한 행을 반환합니다. 열의 경우 해당 개체 수준 사용 권한과 다른 모든 권한에 대한 행이 있습니다. 열 사용 권한이 해당 개체 사용 권한과 같으면 열에 대한 행이 없고 적용된 사용 권한은 개체의 사용 권한입니다.

Important

열 수준 권한은 동일한 엔터티에 대한 개체 수준 권한을 재정의합니다.

Column name Data type 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

부동산 검색 목록

데이터베이스 범위의 자격 증명

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) Permission name.
state char(1) Permission state:

D = 거부

R = 해지

G = Grant

W = Grant With Grant 옵션
state_desc nvarchar(60) 사용 권한 상태에 대한 설명:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Database Permissions

다음과 같은 유형의 사용 권한이 가능합니다.

Permission type Permission name 보안 개체에 적용되는 항목
AADS 모든 데이터베이스 이벤트 세션 변경 DATABASE
AAMK 모든 마스크 변경 DATABASE
AEDS 외부 데이터 소스 수정 권한 DATABASE
AEFF 외부 파일 형식 변경 권한 부여 DATABASE
AL ALTER 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 사용자, XML 스키마 컬렉션
ALAK ALTER ANY 비대칭 키 DATABASE
ALAR 애플리케이션 역할 변경 권한 (ALTER ANY APPLICATION ROLE) DATABASE
ALAS 모든 어셈블리 수정 DATABASE
ALCF 모든 인증서 수정 DATABASE
ALDS 모든 DATASPACE 변경 DATABASE
ALED ALTER ANY DATABASE 이벤트 알림 수정 DATABASE
ALFT 모든 전문 검색 카탈로그 변경 DATABASE
ALMT 아무 메시지 형식 변경 DATABASE
ALRL 모든 역할 변경 DATABASE
ALRT 모든 경로 변경 DATABASE
ALSB 모든 원격 서비스 바인딩 변경 DATABASE
ALSC 모든 계약 변경 DATABASE
ALSK 임의의 대칭 키 수정 DATABASE
ALSM 스키마 변경 권한 부여 DATABASE
ALSV 모든 서비스를 변경 DATABASE
ALTG 모든 데이터베이스 DDL 트리거 변경 DATABASE
ALUS 모든 사용자 변경 DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 유형, 사용자, XML 스키마 컬렉션
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK 비대칭 키 만들기 DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED 데이터베이스 DDL 이벤트 알림 생성 DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT 전체 텍스트 카탈로그 만들기 DATABASE
CRMT 메시지 형식 만들기 DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB 원격 서비스 바인딩 만들기 DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK 대칭 키 생성 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) 이상 버전

XML 스키마 컬렉션 생성
DATABASE
DABO 데이터베이스 대량 작업 관리 DATABASE
DL DELETE DATABASE, OBJECT, SCHEMA
EAES 모든 외부 스크립트 실행 DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 스키마, 대칭 키, 형식, XML 스키마 컬렉션
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN 쿼리 알림 구독 DATABASE
TO TAKE OWNERSHIP 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, FULLTEXT 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 형식, XML 스키마 컬렉션
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 유형, 사용자, XML 스키마 컬렉션
VWCK 열 암호화 키 정의 보기 DATABASE
VWCM 열 마스터 키 정의 보기 DATABASE
VWCT 변경 내용 추적 보기 TABLE, SCHEMA
VWDS 데이터베이스 상태 보기 DATABASE

REVOKE 및 열 예외 권한

대부분의 경우 REVOKE 명령은 sys.database_permissions GRANT 또는 DENY 항목을 제거합니다.

그러나 개체에 대한 권한을 부여하거나 거부한 다음 열에 대한 권한을 REVOKE할 수 있습니다. 이 열 예외 권한은 sys.database_permissions REVOKE로 표시됩니다. 다음 예제를 고려하세요.

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

이러한 권한은 sys.database_permissions 하나의 GRANT(테이블)와 하나의 REVOKE(열)로 표시됩니다.

Important

REVOKE는 Sales 보안 주체가 다른 권한을 통해 열에 계속 액세스할 수 있으므로 DENY와 다릅니다. 사용 권한을 취소하는 대신 거부했으면 DENY가 항상 GRANT를 대체하므로 Sales 열의 내용을 볼 수 없습니다.

Permissions

모든 사용자는 자신의 권한을 볼 수 있습니다. 다른 사용자에 대한 사용 권한을 보려면 VIEW DEFINITION, ALTER ANY USER 또는 사용자에 대한 모든 권한이 필요합니다. 사용자 정의 역할을 보려면 ALTER ANY ROLE 또는 역할(예: 공용)의 멤버 자격이 필요합니다.

사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 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;

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 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

See also

Next steps