更新 : November 2007
SQL Server では、すべてのバージョンで、個々のユーザーではなくロール (つまり、ユーザーのグループ) に対して権限を割り当てることのできるロール ベースのセキュリティが使用されています。固定サーバー ロールおよび固定データベース ロールには、固定された一連の権限が割り当てられています。
固定サーバー ロール
固定サーバー ロールは、固定された一連の権限とサーバー規模のスコープを持ちます。SQL Server の管理を目的としており、このロールに割り当てられた権限を変更することはできません。固定サーバー ロールには、データベースにユーザー アカウントがなくても、ログインを割り当てることができます。
![]() |
---|
sysadmin 固定サーバー ロールは他のすべてのロールを内包し、無制限のスコープを持ちます。本当に信頼できる場合以外、このロールにプリンシパルを追加することは避けてください。sysadmin ロールのメンバには、サーバーのすべてのデータベースおよびリソースに対する取り消し不可能な管理特権が与えられます。 |
固定サーバー ロールに追加するユーザーは慎重に選ぶ必要があります。たとえば、bulkadmin ロールでは、ユーザーがローカル ファイルの内容をテーブルに挿入できるため、データの整合性が損なわれる可能性があります。固定サーバー ロールと権限を網羅した一覧については、SQL Server 2005 オンライン ブックを参照してください。SQL Server 2000 の固定サーバー ロールには、同じロール名および SQL Server 2000 に適した権限セットが割り当てられています。
固定データベース ロール
固定データベース ロールには、権限のグループを簡単に管理できるように、あらかじめ定義された一連の権限が割り当てられています。db_owner ロールのメンバは、データベースに対するすべての構成作業とメンテナンス作業を実行できます。
SQL Server の定義済みロールの詳細については、次のリソースを参照してください。
リソース |
説明 |
---|---|
サーバー レベルのロール/固定サーバー ロールの権限 (SQL Server 2005 オンライン ブック) |
SQL Server 2005 の固定サーバー ロールおよびそれに関連付けられている権限について説明します。 |
データベース レベルのロール/固定データベース ロールの権限 (SQL Server 2005 オンライン ブック) |
固定データベース ロールおよびそれに関連付けられている権限について説明します。 |
定義済みロールへのメンバの追加 (SQL Server 2000 オンライン ブック) |
固定サーバー ロールと固定データベース ロールに関連付けられている権限、およびロールにメンバを追加する方法について説明します。 |
データベース ロールおよびユーザー
データベース ユーザー アカウントはデータベース オブジェクトを扱う関係上、ログインにマップされている必要があります。データベース ユーザーをデータベース ロールに追加すると、そのロールに関連付けられたすべての権限セットが継承されます。SQL Server 2005 以降では、すべての権限を付与できます。
アプリケーションのセキュリティを計画する際は、public ロール、dbo ユーザー アカウント、および guest アカウントも考慮する必要があります。
public ロール
public ロールは、システム データベースを含め、すべてのデータベースに存在します。このロールは削除できません。また、ユーザーを追加したり削除したりすることもできません。他のすべてのユーザーおよびロールは既定で public ロールに所属するため、public ロールに付与された権限を継承します。public には、すべてのユーザーに割り当てる必要のある権限だけを付与してください。
dbo ユーザー アカウント
dbo (データベース所有者) は、データベースのすべてのアクティビティを実行する暗黙権限を持ったユーザー アカウントです。sysadmin 固定サーバー ロールのメンバは、自動的に dbo にマップされます。
![]() |
---|
SQL Server 2005 以降では、dbo が、スキーマの名前としても使用されています。詳細については、「SQL Server における所有権とユーザーとスキーマの分離 (ADO.NET)」を参照してください。 |
dbo ユーザー アカウントは、よく db_owner 固定データベース ロールと混同されます。sysadmin のスコープがサーバー全体であるのに対し、db_owner のスコープはデータベースです。db_owner ロールのメンバであるからといって、dbo のユーザー権限があるとは限りません。
guest ユーザー アカウント
認証されて SQL Server のインスタンスへのログインが許可されたユーザーが、その後、データベースにアクセスするためには各データベースに別個のユーザー アカウントが存在している必要があります。データベースごとにユーザー アカウントが要求されるため、SQL Server のインスタンスに接続したとしても、ユーザーは、サーバー上のすべてのデータベースにアクセスできるわけではありません。この要件を回避するには、データベースに guest ユーザー アカウントを設定します。guest ユーザーは、データベースにユーザー アカウントがなくてもデータベースにログインしてアクセスできます。
guest アカウントは、SQL Server のすべてのバージョンが備えている組み込みのアカウントです。新しいデータベースでは、既定で無効化されています。このアカウントを有効にした場合でも、Transact-SQL の REVOKE CONNECT FROM GUEST ステートメントを実行して、CONNECT 権限を取り消すことによって無効にできます。SQL Server 2000 では、Transact-SQL の sp_dropuser または sp_revokedbaccess システム ストアド プロシージャを実行することによって無効にできます。
![]() |
---|
guest アカウントはできるだけ使用しないようにしてください。ユーザーごとに割り当てられたデータベース権限がなくても、すべてのログイン ユーザーが、このアカウントに付与されているデータベース権限を取得できるようになります。guest アカウントを使用する必要がある場合は、最小限の権限を付与するようにしてください。 |
SQL Server のログイン、ユーザー、およびロールの詳細については、次のリソースを参照してください。
リソース |
説明 |
---|---|
ID とアクセス制御 (SQL Server 2008 オンライン ブック) |
プリンシパル、ロール、資格情報、セキュリティ保護可能なリソース、および権限について説明したトピックへのリンクが含まれています。 |
プリンシパル (SQL Server 2005 オンライン ブック) |
プリンシパルの説明のほか、サーバー ロールとデータベース ロールについて説明したトピックへのリンクが含まれています。 |
セキュリティ アカウントの作成/セキュリティ アカウントの管理 (SQL Server 2000 オンライン ブック) |
ログイン、ユーザー、およびロールの作成方法と管理方法について説明します。 |
参照
概念
SQL Server におけるアプリケーション セキュリティのシナリオ (ADO.NET)
SQL Server における所有権とユーザーとスキーマの分離 (ADO.NET)
SQL Server の承認とアクセス許可 (ADO.NET)