보안 주체(데이터베이스 엔진)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

보안 주체는 SQL Server 리소스를 요청할 수 있는 엔터티입니다. SQL Server 권한 부여 모델의 다른 구성 요소와 마찬가지로 보안 주체를 계층 구조로 정렬할 수 있습니다. 보안 주체의 영향 범위는 보안 주체의 정의 범위인 Windows, 서버 및 데이터베이스와 보안 주체가 분해 불가능하거나 컬렉션인지 여부에 따라 달라집니다. Windows 로그인은 나눌 수 없는 보안 주체의 예이며 Windows 그룹은 컬렉션인 보안 주체의 예입니다. 모든 보안 주체에는 SID(보안 식별자)가 있습니다. 이 항목은 모든 버전의 SQL Server에 적용되지만 SQL Database 또는 Azure Synapse Analytics의 서버 수준 보안 주체에는 몇 가지 제한 사항이 있습니다.

참고 항목

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

SQL Server 수준 보안 주체

  • SQL Server 인증 로그인
  • Windows 사용자에 대한 Windows 인증 로그인
  • Windows 그룹에 대한 Windows 인증 로그인
  • Microsoft Entra 사용자에 대한 Microsoft Entra 인증 로그인
  • Microsoft Entra 그룹에 대한 Microsoft Entra 인증 로그인
  • 서버 역할

데이터베이스 수준 보안 주체

  • 데이터베이스 사용자(12가지 유형의 사용자가 있습니다. 자세한 내용은 CREATE USER를 참조하세요.)
  • 데이터베이스 역할
  • 애플리케이션 역할

sa 로그인

SQL Server sa 로그인은 서버 수준 보안 주체입니다. 기본적으로 인스턴스가 설치될 때 만들어집니다. SQL Server 2005(9.x)부터 sa의 기본 데이터베이스는 master입니다. 이 동작은 이전 버전의 SQL Server에서 변경되었습니다. 로그인은 sa 고정 서버 수준 역할의 sysadmin 멤버입니다. 로그인에는 sa 서버에 대한 모든 권한이 있으며 제한할 수 없습니다. 로그인을 sa 삭제할 수는 없지만 아무도 사용할 수 없도록 사용하지 않도록 설정할 수 있습니다.

dbo 사용자 및 dbo 스키마

사용자는 dbo 각 데이터베이스의 특수 사용자 보안 주체입니다. 모든 SQL Server 관리자, 고정 서버 역할의 sysadmin 멤버, sa 로그인 및 데이터베이스 소유자는 데이터베이스를 dbo 사용자로 입력합니다. 사용자에게 데이터베이스 dbo 의 모든 권한이 있으며 제한하거나 삭제할 수 없습니다. dbo는 데이터베이스 소유자를 나타내지만 dbo 사용자 계정은 db_owner 고정 데이터베이스 역할과 동일하지 않고 db_owner 고정 데이터베이스 역할은 데이터베이스 소유자로 기록되는 사용자 계정과 동일하지 않습니다.
dbo 사용자가 스키마를 소유합니다dbo. dbo 다른 스키마를 지정하지 않는 한 스키마는 모든 사용자의 기본 스키마입니다. 스키마를 dbo 삭제할 수 없습니다.

공용 서버 역할 및 데이터베이스 역할

모든 로그인은 public 고정 서버 역할에 속하며 모든 데이터베이스 사용자는 데이터베이스 역할에 속합니다 public . 로그인이나 사용자에게 보안 개체에 대한 특정 사용 권한이 부여되지 않았거나 거부된 경우 로그인이나 사용자는 해당 보안 개체에 대해 public으로 부여된 사용 권한을 상속받습니다. public 고정 서버 역할 및 public 고정 데이터베이스 역할을 삭제할 수 없습니다. 그러나 역할에서 권한을 취소할 public 수 있습니다. 기본적으로 역할에 할당되는 public 많은 권한이 있습니다. 이러한 권한의 대부분은 데이터베이스의 일상적인 작업에 필요합니다. 모든 사용자가 수행할 수 있어야 하는 작업의 유형입니다. 모든 로그인/사용자에게 영향을 주기 때문에 공용 로그인 또는 사용자로부터 사용 권한을 취소할 때는 주의해야 합니다. 일반적으로 거부 문은 개인에게 부여할 수 있는 모든 허용 문을 재정의하기 때문에 공용에 대한 사용 권한을 거부해서는 안 됩니다.

사용자 및 스키마 INFORMATION_SCHEMA 및 sys

모든 데이터베이스에는 카탈로그 뷰에 사용자로 표시되는 두 엔터티인 INFORMATION_SCHEMAsys가 포함됩니다. 이러한 엔터티는 데이터베이스 엔진 내부적으로 사용해야 합니다. 수정하거나 삭제할 수 없습니다.

인증서 기반 SQL Server 로그인

이중 해시 표시(##)로 묶인 이름의 서버 보안 주체는 내부 시스템 전용입니다. 다음 보안 주체는 SQL Server가 설치될 때 인증서에서 생성되며 삭제해서는 안 됩니다.

  • ##MS_SQLResourceSigningCertificate##
  • ##MS_SQLReplicationSigningCertificate##
  • ##MS_SQLAuthenticatorCertificate##
  • ##MS_AgentSigningCertificate##
  • ##MS_PolicyEventProcessingLogin##
  • ##MS_PolicySigningCertificate##
  • ##MS_PolicyTsqlExecutionLogin##

이러한 사용자 계정은 Microsoft에 발급된 인증서에 기반하므로 관리자에 의해 변경될 수 있는 암호를 갖지 않습니다.

게스트 사용자

각 데이터베이스에는 .guest 사용자에게 부여된 guest 사용 권한은 데이터베이스에 대한 액세스 권한이 있지만 데이터베이스에 사용자 계정이 없는 사용자가 상속합니다. guest 사용자를 삭제할 수는 없지만 CONNECT 권한을 취소하여 사용하지 않도록 설정할 수 있습니다. CONNECT 권한은 master 또는 tempdb가 아닌 임의의 데이터베이스 내에서 REVOKE CONNECT FROM GUEST;를 실행하여 취소할 수 있습니다.

권한 시스템 디자인에 대한 정보는 Getting Started with Database Engine Permissions을(를) 참조하세요.

다음 항목은 SQL Server 온라인 설명서의 이 섹션에 포함되어 있습니다.

참고 항목

SQL Server 보안 설정
sys.database_principals(Transact-SQL)
sys.server_principals(Transact-SQL)
sys.sql_logins(Transact-SQL)
sys.database_role_members(Transact-SQL)
서버 수준 역할
데이터베이스 수준 역할