다음을 통해 공유


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

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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)
서버 수준 역할
데이터베이스 수준 역할