プリンシパル (データベース エンジン)
適用対象: SQL Server
Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
プリンシパルは、SQL Server リソースを要求できるエンティティです。 SQL Server の承認モデルの他のコンポーネントと同様に、プリンシパルは階層内に配置できます。 プリンシパルの効力のスコープは、プリンシパルの定義のスコープ (Windows、サーバー、データベース) と、プリンシパルが分割できないアイテムであるかコレクションであるかによって異なります。 分割できないプリンシパルの例には Windows ログインがあり、コレクションであるプリンシパルの例には Windows グループがあります。 各プリンシパルには、1 つのセキュリティ識別子 (SID) があります。 このトピックは、すべてのバージョンの SQL Server に適用されますが、SQL Database または Azure Synapse Analytics ではサーバー レベルのプリンシパルでいくつかの制約があります。
Note
Microsoft Entra ID は以前に Azure Active Directory(Azure AD)として知られていました。
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
はデータベースの所有者 (database owner) という意味ですが、dbo
ユーザー アカウントは db_owner
固定データベース ロールと同じではなく、db_owner
固定データベース ロールはデータベースの所有者として記録されているユーザー アカウントと同じではありません。
dbo
ユーザーは dbo
スキーマを所有します。 dbo
スキーマは、その他のスキーマが指定されていない限り、すべてのユーザーの既定のスキーマとなります。 dbo
スキーマは削除できません。
public のサーバー ロールとデータベース ロール
すべてのログインは public
固定サーバー ロールに属します。すべてのデータベース ユーザーは public
データベース ロールに属します。 セキュリティ保護可能なリソースに対する特定の権限が与えられていないか権限が拒否されたログインまたはユーザーは、public がそのリソースに対して許可されている権限を継承します。 public
固定サーバー ロールと public
固定データベース ロールは削除できません。 ただし、public
ロールからアクセス許可を取り消すことができます。 既定で public
ロールにはさまざまなアクセス許可が割り当てられています。 そのようなアクセス許可のほとんどはデータベースの日常的操作、つまり、誰にでも許可されなければならない類いの操作に必要となります。 public ログインまたはユーザーからアクセス許可を取り消す際は注意してください。すべてのログインまたはユーザーに影響を与えます。 一般的に、public に対するアクセス許可は拒否しないでください。deny ステートメントは、個々に行う grant ステートメントをオーバーライドします。
INFORMATION_SCHEMA と sys のユーザーとスキーマ
各データベースには、カタログ ビューにユーザーとして表示される 2 つのエンティティ INFORMATION_SCHEMA
および sys
が含まれています。 データベース エンジンによる内部利用でこれらのエンティティが必要になります。 変更したり、削除したりすることはできません。
証明書ベースの SQL Server ログイン
名前が 2 つの番号記号 (##) で囲まれたサーバー プリンシパルは、内部システムでのみ使用されます。 SQL Server のインストール時に証明書から作成される以下のプリンシパルは、削除しないでください。
- ##MS_SQLResourceSigningCertificate##
- ##MS_SQLReplicationSigningCertificate##
- ##MS_SQLAuthenticatorCertificate##
- ##MS_AgentSigningCertificate##
- ##MS_PolicyEventProcessingLogin##
- ##MS_PolicySigningCertificate##
- ##MS_PolicyTsqlExecutionLogin##
これらのプリンシパル アカウントのパスワードは、Microsoft に発行された証明書に基づくので、管理者は変更できません。
guest ユーザー
各データベースには、 guest
の動作から変更されています。 データベースにはアクセスできるが、データベース内のユーザー アカウントは持っていないユーザーは、 guest
ユーザーに許可された権限を継承します。 guest
ユーザーは消去することはできませんが、その CONNECT 権限を取り消すことで無効にすることはできます。 CONNECT 権限を取り消すには、master
または tempdb
以外のデータベース内で REVOKE CONNECT FROM GUEST;
を実行します。
Related Tasks
権限システムの設計の詳細については、「 データベース エンジンの権限の概要」を参照してください。
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)
サーバーレベルのロール
データベース レベルのロール