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

적용 대상: 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의 서버 수준 보안 주체에는 몇 가지 제한 사항이 있습니다.

SQL Server 수준의 보안 주체

  • SQL Server 인증 로그인
  • Windows 사용자에 대한 Windows 인증 로그인
  • Windows 그룹에 대한 Windows 인증 로그인
  • AD 사용자에 대한 Azure Active Directory 인증 로그인
  • AD 그룹에 대한 Azure Active Directory 인증 로그인
  • 서버 역할

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

  • 데이터베이스 사용자(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 역할로부터 사용 권한을 취소할 수 있습니다. 기본적으로 public 역할에 할당되는 사용 권한은 많습니다. 대부분의 이러한 사용 권한은 모든 사용자가 수행할 수 있어야 하는 작업의 유형인 데이터베이스의 일상적인 작업에 필요합니다. public 로그인 또는 사용자로부터 사용 권한을 취소하면 모든 로그인/사용자에 영향을 미치므로 주의해야 합니다. deny 문은 개인에 대한 모든 grant 문을 재정의하기 때문에 일반적으로 public에 대한 사용 권한은 거부하면 안 됩니다.

INFORMATION_SCHEMA 및 sys 사용자와 스키마

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

인증서 기반 SQL Server 로그인

이름이 이중 해시 표시(##)로 묶인 서버 보안 주체는 내부 시스템 용도로만 사용됩니다. 다음 보안 주체는 SQL Server 를 설치할 때 인증서에서 생성되며 삭제하면 안 됩니다.

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

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

guest 사용자

각 데이터베이스에는 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)
서버 수준 역할
데이터베이스 수준 역할