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

プリンシパル は、 SQL Server リソースを要求できるエンティティです。 SQL Server の承認モデルの他のコンポーネントと同様に、プリンシパルは階層内に配置できます。 プリンシパルの効力のスコープは、プリンシパルの定義のスコープ (Windows、サーバー、データベース) と、プリンシパルが分割不可能かコレクションであるかによって異なります。 分割できないプリンシパルの例には Windows ログインがあり、コレクションであるプリンシパルの例には Windows グループがあります。 各プリンシパルには、1 つのセキュリティ識別子 (SID) があります。

Windows レベルのプリンシパル

  • Windows ドメイン ログイン

  • Windows ローカル ログイン

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

  • SQL Server ログイン

  • サーバー ロール

データベースレベルのプリンシパル

  • データベース ユーザー

  • データベース ロール

  • アプリケーション ロール

SQL Server sa ログイン

SQL Server sa ログインは、サーバー レベルのプリンシパルです。 このログインは、インスタンスのインストール時に既定で作成されます。 2005 年SQL Server以降、sa の既定のデータベースは master です。 これは、以前のバージョンの SQL Serverの動作から変更されています。

public データベース ロール

データベース ユーザーはすべて、public データベース ロールに属しています。 セキュリティ保護可能なリソースに対する特定の権限が与えられていないか権限が拒否されたユーザーは、public がそのリソースに対して許可されている権限を継承します。

INFORMATION_SCHEMA と sys

各データベースには、カタログ ビューにユーザーとして表示される 2 つのエンティティ INFORMATION_SCHEMA および sys が含まれています。 これらのエンティティは、SQL Serverで必要です。 これらのエンティティはプリンシパルではなく、変更も削除もできません。

証明書ベースの SQL Server ログイン

名前が 2 つの番号記号 (##) で囲まれたサーバー プリンシパルは、内部システムでのみ使用されます。 SQL Server のインストール時に証明書から作成される以下のプリンシパルは、削除しないでください。

  • ##MS_SQLResourceSigningCertificate##

  • ##MS_SQLReplicationSigningCertificate##

  • ##MS_SQLAuthenticatorCertificate##

  • ##MS_AgentSigningCertificate##

  • ##MS_PolicyEventProcessingLogin##

  • ##MS_PolicySigningCertificate##

  • ##MS_PolicyTsqlExecutionLogin##

guest ユーザー

各データベースには ゲストが含まれます。 データベースにはアクセスできるが、データベース内のユーザー アカウントは持っていないユーザーは、 guest ユーザーに許可された権限を継承します。 ゲスト ユーザーは削除できませんが、アクセス許可をCONNECT取り消すことで無効にすることができます。 CONNECT master または tempdb 以外のデータベース内で を実行することで、アクセス許可をREVOKE CONNECT FROM GUEST取り消すことができます。

クライアントとデータベース サーバー

定義上、クライアントとデータベース サーバーはセキュリティ プリンシパルであり、セキュリティで保護できます。 これらのエンティティは、安全なネットワーク接続が確立される前に相互に認証できます。 SQL Serverでは、クライアントがネットワーク認証サービスと対話する方法を定義する Kerberos 認証プロトコルがサポートされています。

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)
サーバーレベルのロール
データベース レベルのロール