title | ms.custom | ms.date | ms.prod | ms.prod_service | ms.reviewer | ms.technology | ms.topic | f1_keywords | helpviewer_keywords | ms.assetid | author | ms.author | monikerRange | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Principals (Database Engine) | Microsoft Docs |
01/09/2017 |
sql |
database-engine, sql-database, sql-data-warehouse, pdw |
security |
conceptual |
|
|
3f7adbf7-6e40-4396-a8ca-71cbb843b5c2 |
VanMSFT |
vanto |
>=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-server-2016||=sqlallproducts-allversions||>=sql-server-linux-2017||=azuresqldb-mi-current |
[!INCLUDEappliesto-ss-asdb-asdw-pdw-md]
Principals are entities that can request [!INCLUDEssNoVersion] resources. Like other components of the [!INCLUDEssNoVersion] authorization model, principals can be arranged in a hierarchy. The scope of influence of a principal depends on the scope of the definition of the principal: Windows, server, database; and whether the principal is indivisible or a collection. A Windows Login is an example of an indivisible principal, and a Windows Group is an example of a principal that is a collection. Every principal has a security identifier (SID). This topic applies to all version of SQL Server, but there are some restictions on server-level principals in SQL Database or SQL Data Warehouse.
- [!INCLUDEssNoVersion] authentication Login
- Windows authentication login for a Windows user
- Windows authentication login for a Windows group
- Azure Active Directory authentication login for a AD user
- Azure Active Directory authentication login for a AD group
- Server Role
- Database User (There are 12 types of users. For more information, see CREATE USER.)
- Database Role
- Application Role
The [!INCLUDEssNoVersion] sa
log in is a server-level principal. By default, it is created when an instance is installed. Beginning in [!INCLUDEssVersion2005], the default database of sa is master. This is a change of behavior from earlier versions of [!INCLUDEssNoVersion]. The sa
login is a member of the sysadmin
fixed server-level role. The sa
login has all permissions on the server and cannot be limited. The sa
login cannot be dropped, but it can be disabled so that no one can use it.
The dbo
user is a special user principal in each database. All SQL Server administrators, members of the sysadmin
fixed server role, sa
login, and owners of the database, enter databases as the dbo
user. The dbo
user has all permissions in the database and cannot be limited or dropped. dbo
stands for database owner, but the dbo
user account is not the same as the db_owner
fixed database role, and the db_owner
fixed database role is not the same as the user account that is recorded as the owner of the database.
The dbo
user owns the dbo
schema. The dbo
schema is the default schema for all users, unless some other schema is specified. The dbo
schema cannot be dropped.
Every login belongs to the public
fixed server role, and every database user belongs to the public
database role. When a login or user has not been granted or denied specific permissions on a securable, the login or user inherits the permissions granted to public on that securable. The public
fixed server role and the public
fixed database role cannot be dropped. However you can revoke permissions from the public
roles. There are many permissions that are assigned to the public
roles by default. Most of these permissions are needed for routine operations in the database; the type of things that everyone should be able to do. Be careful when revoking permissions from the public login or user, as it will affect all logins/users. Generally you should not deny permissions to public, because the deny statement overrides any grant statements you might make to individuals.
Every database includes two entities that appear as users in catalog views: INFORMATION_SCHEMA
and sys
. These entities are required for internal use by the Database Engine. They cannot be modified or dropped.
Server principals with names enclosed by double hash marks (##) are for internal system use only. The following principals are created from certificates when [!INCLUDEssNoVersion] is installed, and should not be deleted.
- ##MS_SQLResourceSigningCertificate##
- ##MS_SQLReplicationSigningCertificate##
- ##MS_SQLAuthenticatorCertificate##
- ##MS_AgentSigningCertificate##
- ##MS_PolicyEventProcessingLogin##
- ##MS_PolicySigningCertificate##
- ##MS_PolicyTsqlExecutionLogin##
These principal accounts do not have passwords that can be changed by administrators as they are based on certificates issued to Microsoft.
Each database includes a guest
. Permissions granted to the guest
user are inherited by users who have access to the database, but who do not have a user account in the database. The guest
user cannot be dropped, but it can be disabled by revoking it's CONNECT permission. The CONNECT permission can be revoked by executing REVOKE CONNECT FROM GUEST;
within any database other than master
or tempdb
.
For information about designing a permissions system, see Getting Started with Database Engine Permissions.
The following topics are included in this section of [!INCLUDEssNoVersion] Books Online:
Securing SQL Server
sys.database_principals (Transact-SQL)
sys.server_principals (Transact-SQL)
sys.sql_logins (Transact-SQL)
sys.database_role_members (Transact-SQL)
Server-Level Roles
Database-Level Roles