sys.database_principals(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

SQL Server 데이터베이스의 각 보안 주체에 대한 행을 반환합니다.

참고 항목

Microsoft Entra ID 는 이전에 Azure AD(Azure Active Directory)라고 했습니다.

열 설명

열 이름 데이터 형식 설명
이름 sysname 데이터베이스 내에서 고유한 보안 주체의 이름입니다.
principal_id int 데이터베이스 내에서 고유한 보안 주체의 ID입니다.
type char(1) 보안 주체 유형:

A = 애플리케이션 역할

C = 인증서에 매핑된 사용자

E = Microsoft Entra ID의 외부 사용자

G = Windows 그룹

K = 비대칭 키로 매핑된 사용자

R = 데이터베이스 역할

S = SQL 사용자

U = Windows 사용자

X = Microsoft Entra 그룹 또는 애플리케이션의 외부 그룹
type_desc nvarchar(60) 보안 주체 유형에 대한 설명입니다.

APPLICATION_ROLE

CERTIFICATE_MAPPED_USER

EXTERNAL_USER

WINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLE

SQL_USER

WINDOWS_USER

EXTERNAL_GROUPS
default_schema_name sysname SQL 이름에서 스키마를 지정하지 않을 때 사용할 이름입니다. S, U 또는 A 형식이 아닌 보안 주체의 경우 Null입니다.
create_date 날짜/시간 보안 주체가 생성된 시간입니다.
modify_date 날짜/시간 보안 주체가 마지막으로 수정된 시간입니다.
owning_principal_id int 이 보안 주체를 소유하는 보안 주체의 ID입니다. 모든 고정 데이터베이스 역할은 기본적으로 dbo에서 소유합니다.
sid varbinary(85) 보안 주체의 SID(보안 식별자)입니다. SYS 및 정보 스키마에 대한 NULL입니다.
is_fixed_role bit 1이면 이 행은 고정 데이터베이스 역할(db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter 중 하나에 대한 항목을 나타냅니다.
authentication_type int 적용 대상: SQL Server 2012(11.x) 이상

인증 유형을 의미합니다. 다음은 가능한 값 및 해당 설명입니다.

0: 인증 없음
1: 인스턴스 인증
2: 데이터베이스 인증
3 : Windows 인증
4: Microsoft Entra 인증
authentication_type_desc nvarchar(60) 적용 대상: SQL Server 2012(11.x) 이상

인증 유형에 대한 설명입니다. 다음은 가능한 값 및 해당 설명입니다.

NONE : 인증 없음
INSTANCE : 인스턴스 인증
DATABASE : 데이터베이스 인증
WINDOWS: Windows 인증
EXTERNAL: Microsoft Entra 인증
default_language_name sysname 적용 대상: SQL Server 2012(11.x) 이상

이 보안 주체의 기본 언어를 의미합니다.
default_language_lcid int 적용 대상: SQL Server 2012(11.x) 이상

이 보안 주체의 기본 LCID를 의미합니다.
allow_encrypted_value_modifications bit 적용 대상: SQL Server 2016(13.x) 이상, SQL Database.

대량 복사 작업에서 서버에 대한 암호화 메타데이터 검사를 표시하지 않습니다. 이렇게 하면 사용자는 데이터 암호를 해독하지 않고 테이블 또는 데이터베이스 간에 Always Encrypted를 사용하여 암호화된 데이터를 대량 복사할 수 있습니다. 기본값은 OFF입니다.

설명

PasswordLastSetTime 속성은 SQL Server의 지원되는 모든 구성에서 사용할 수 있지만 다른 속성은 SQL Server가 Windows Server 2003 이상에서 실행되고 CHECK_POLICY 및 CHECK_EXPIRATION 모두 사용하도록 설정된 경우에만 사용할 수 있습니다. 자세한 내용은 암호 정책을 참조하세요. 보안 주체가 삭제되어 계속 증가하지 않는 경우 principal_id 값이 다시 사용될 수 있습니다.

사용 권한

모든 사용자는 자신의 사용자 이름, 시스템 사용자 및 고정 데이터베이스 역할을 볼 수 있습니다. 다른 사용자를 보려면 ALTER ANY USER 또는 사용자에 대한 권한이 필요합니다. 사용자 정의 역할을 보려면 ALTER ANY ROLE 또는 역할의 멤버 자격이 필요합니다.

예제

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

B: 데이터베이스 내의 스키마 개체에 대한 사용 권한 나열

다음 쿼리는 sys.database_principals 및 sys.database_permissions를 sys.objects 및 sys.schemas에 조인하여 특정 스키마 개체에 부여되거나 거부된 사용 권한을 나열합니다.

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

C: 데이터베이스 보안 주체의 모든 권한 나열

다음 쿼리는 데이터베이스 보안 주체에 대해 명시적으로 부여되거나 거부된 사용 권한을 나열합니다.

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

D: 데이터베이스 내의 스키마 개체에 대한 사용 권한 나열

다음 쿼리는 sys.database_principalssys.database_permissions 특정 스키마 개체에 sys.schemassys.objects 부여되거나 거부된 사용 권한을 조인 및 나열합니다.

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

참고 항목

보안 주체(데이터베이스 엔진)
sys.server_principals(Transact-SQL)
보안 카탈로그 뷰(Transact-SQL)
포함된 데이터베이스 사용자 - 휴대용 데이터베이스 만들기
Microsoft Entra 인증을 사용하여 Azure SQL에 커넥트