プリンシパル (データベース エンジン)Principals (Database Engine)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

プリンシパル は、 SQL ServerSQL Server リソースを要求できるエンティティです。Principals are entities that can request SQL ServerSQL Server resources. SQL ServerSQL Server の承認モデルの他のコンポーネントと同様に、プリンシパルは階層内に配置できます。Like other components of the SQL ServerSQL Server authorization model, principals can be arranged in a hierarchy. プリンシパルの効力のスコープは、プリンシパルの定義のスコープ (Windows、サーバー、データベース) と、プリンシパルが分割不可能かコレクションであるかによって異なります。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. 分割できないプリンシパルの例には Windows ログインがあり、コレクションであるプリンシパルの例には Windows グループがあります。A Windows Login is an example of an indivisible principal, and a Windows Group is an example of a principal that is a collection. 各プリンシパルには、1 つのセキュリティ識別子 (SID) があります。Every principal has a security identifier (SID). このトピックは、すべてのバージョンの SQL Server に適用されますが、SQL データベースまたは SQL データ ウェアハウスではサーバー レベルのプリンシパルでいくつかの制約があります。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.

SQL Server レベルのプリンシパルSQL Server-level principals

  • SQL ServerSQL Server 認証ログインauthentication Login
  • Windows ユーザーの Windows 認証ログインWindows authentication login for a Windows user
  • Windows グループの Windows 認証ログインWindows authentication login for a Windows group
  • Active Directory ユーザーの Azure Active Directory 認証ログインAzure Active Directory authentication login for a AD user
  • Active Directory グループの Azure Active Directory 認証ログインAzure Active Directory authentication login for a AD group
  • サーバー ロールServer Role

データベースレベルのプリンシパルDatabase-level principals

  • データベース ユーザー (12 種類のユーザーがあります。Database User (There are 12 types of users. 詳細については、「CREATE USER」 (ユーザーの作成) を参照してください。)For more information, see CREATE USER.)
  • データベース ロールDatabase Role
  • アプリケーション ロールApplication Role

sa ログインsa Login

SQL ServerSQL Server sa ログインは、サーバー レベルのプリンシパルです。The SQL ServerSQL Server sa log in is a server-level principal. このログインは、インスタンスのインストール時に既定で作成されます。By default, it is created when an instance is installed. SQL Server 2005 (9.x)SQL Server 2005 (9.x)より、sa の既定のデータベースは master です。Beginning in SQL Server 2005 (9.x)SQL Server 2005 (9.x), the default database of sa is master. これは、以前のバージョンの SQL ServerSQL Serverの動作から変更されています。This is a change of behavior from earlier versions of SQL ServerSQL Server. sa ログインは sysadmin 固定サーバーレベル ロールに属します。The sa login is a member of the sysadmin fixed server-level role. sa ログインにはサーバーのすべてのアクセス許可が与えられ、制限できません。The sa login has all permissions on the server and cannot be limited. sa ログインは削除できませんが、無効にすれば誰も利用できません。The sa login cannot be dropped, but it can be disabled so that no one can use it.

dbo ユーザーと dbo スキーマdbo User and dbo Schema

dbo ユーザーは、各データベースの特別なユーザー プリンシパルです。The dbo user is a special user principal in each database. すべての SQL Server 管理者、sysadmin 固定サーバー ロールのメンバー、sa ログイン、データベースの所有者は dbo ユーザーとしてデータベースに入ります。All SQL Server administrators, members of the sysadmin fixed server role, sa login, and owners of the database, enter databases as the dbo user. dbo ユーザーにはデータベースのすべてのアクセス許可が与えられ、制限したり、削除したりすることはできません。The dbo user has all permissions in the database and cannot be limited or dropped. dbo はデータベースの所有者 (database owner) という意味ですが、dbo ユーザー アカウントは db_owner 固定データベース ロールと同じではなく、db_owner 固定データベース ロールはデータベースの所有者として記録されているユーザー アカウントと同じではありません。dbo stands for database owner, but the dbouser 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.
dbo ユーザーは dbo スキーマを所有します。The dbo user owns the dbo schema. dbo スキーマは、その他のスキーマが指定されていない限り、すべてのユーザーの既定のスキーマとなります。The dbo schema is the default schema for all users, unless some other schema is specified. dbo スキーマは削除できません。The dbo schema cannot be dropped.

public のサーバー ロールとデータベース ロールpublic Server Role and Database Role

すべてのログインは public 固定サーバー ロールに属します。すべてのデータベース ユーザーは public データベース ロールに属します。Every login belongs to the public fixed server role, and every database user belongs to the public database role. セキュリティ保護可能なリソースに対する特定の権限が与えられていないか権限が拒否されたログインまたはユーザーは、public がそのリソースに対して許可されている権限を継承します。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. public 固定サーバー ロールと public 固定データベース ロールは削除できません。The public fixed server role and the public fixed database role cannot be dropped. ただし、public ロールからアクセス許可を取り消すことができます。However you can revoke permissions from the public roles. 既定で public ロールにはさまざまなアクセス許可が割り当てられています。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. public ログインまたはユーザーからアクセス許可を取り消す際は注意してください。すべてのログインまたはユーザーに影響を与えます。Be careful when revoking permissions from the public login or user, as it will affect all logins/users. 一般的に、public に対するアクセス許可は拒否しないでください。deny ステートメントは、個々に行う grant ステートメントをオーバーライドします。Generally you should not deny permissions to public, because the deny statement overrides any grant statements you might make to individuals.

INFORMATION_SCHEMA と sys のユーザーとスキーマINFORMATION_SCHEMA and sys Users and Schemas

各データベースには、カタログ ビューにユーザーとして表示される 2 つのエンティティ INFORMATION_SCHEMA および sys が含まれています。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.

証明書ベースの SQL Server ログインCertificate-based SQL Server Logins

名前が 2 つの番号記号 (##) で囲まれたサーバー プリンシパルは、内部システムでのみ使用されます。Server principals with names enclosed by double hash marks (##) are for internal system use only. SQL ServerSQL Server のインストール時に証明書から作成される以下のプリンシパルは、削除しないでください。The following principals are created from certificates when SQL ServerSQL Server is installed, and should not be deleted.

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

これらのプリンシパル アカウントのパスワードは、Microsoft に発行された証明書に基づくので、管理者は変更できません。These principal accounts do not have passwords that can be changed by administrators as they are based on certificates issued to Microsoft.

guest ユーザーThe guest User

各データベースには、 guestの動作から変更されています。Each database includes a guest. データベースにはアクセスできるが、データベース内のユーザー アカウントは持っていないユーザーは、 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. guest ユーザーを削除することはできませんが、 CONNECT 権限を取り消すことで無効にすることはできます。The guest user cannot be dropped, but it can be disabled by revoking it's CONNECT permission. CONNECT 権限を取り消すには、master または tempdb 以外のデータベース内で REVOKE CONNECT FROM GUEST; を実行します。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.

SQL ServerSQL Server オンライン ブックのこのセクションの内容は次のとおりです。The following topics are included in this section of SQL ServerSQL Server Books Online:

参照See Also

SQL Server の保護 Securing SQL Server
sys.database_principals (Transact-SQL) sys.database_principals (Transact-SQL)
sys.server_principals (Transact-SQL) sys.server_principals (Transact-SQL)
sys.sql_logins (Transact-SQL) sys.sql_logins (Transact-SQL)
sys.database_role_members (Transact-SQL) sys.database_role_members (Transact-SQL)
サーバー レベルのロール Server-Level Roles
データベース レベルのロールDatabase-Level Roles