[INF] SQL Server 2000 Service Pack 3 での複数データベースの組み合わせ所有権の動作の変更点

文書翻訳 文書翻訳
文書番号: 810474 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

Microsoft SQL Server Service Pack 3 (SP3) のセットアップ中に、[すべてのデータベースで、複数データベースの組み合わせ所有権を有効にする] という複数データベースの組み合わせ所有権のオプションに関連する新しいセキュリティの機能強化が提供されます。この資料では、SQL Server 2000 SP3 での複数データベースの組み合わせ所有権の動作について説明します。この新しいオプションを使うことで、複数データベースの組み合わせ所有権を許可するかどうかを制御することが可能です。デフォルトでは、このオプションは無効になっています。マイクロソフトは、データベースをより安全に保つために、デフォルトのオプションのままで使用することをお勧めします。。

詳細

組み合わせ所有権

すべてのデータベース オブジェクトには所有者が存在します。ビュー、ストアド プロシージャ、ユーザー定義関数などのオブジェクトが他のオブジェクトを参照するときに、所有権の継承が確立されます。たとえば、ビューを所有するユーザと同じユーザーがテーブルを所有している場合です。ビュー、ストアド プロシージャ、またはユーザー定義関数などのソース オブジェクトを所有するユーザがすべての対象オブジェクト (元になるテーブル、ビュー、またはその他のオブジェクト) を所有するときは、所有権の継承は "壊れていない" と言います。所有権の継承が壊れていないとき、SQL Server はソース オブジェクトの権限を確認しますが、対象オブジェクトの権限については確認しません。

複数データベースの組み合わせ所有権

複数データベースの組み合わせ所有権は、ソース オブジェクトが他のデータベースのオブジェクトに従属するときに発生します。また、複数データベースの組み合わせ所有権は、データベース内の所有権の継承と同じ方法で機能します。ただし、壊れていない所有権の継承がすべてのオブジェクト所有者が同じログイン アカウントにマッピングされることに基づいている場合を除きます。そのため、複数データベースの組み合わせ所有権が有効になっていると、ソース データベース内のソース オブジェクトと対象データベース内の対象オブジェクトを同じログイン アカウントが所有している場合は、SQL Server は対象オブジェクトの権限を確認しません。

複数のデータベースを使用するアプリケーションがデータベース内のストアド プロシージャやビューを呼び出し、そのストアド プロシージャやビューの元となるオブジェクトが別のデータベースに存在する場合、複数データベースの組み合わせ所有権が使用されます。複数データベースの組み合わせ所有権オプションを無効にすると、複数データベースの組み合わせ所有権に依存するアプリケーションにおいて権限拒否エラーが発生することがあります。

複数データベースの組み合わせ所有権に関連する危険性

データベースの組み合わせ所有権オプションを有効にした状態では、高レベルの権限を持つユーザーが以下のような操作を実行できるため、マイクロソフトは複数データベースの組み合わせ所有権オプションを無効にすることをお勧めします。
  • データベース所有者、および db_ddladmin データベース ロールまたは db_owners データベース ロールのメンバは、他のユーザーが所有するオブジェクトを作成できます。このようなオブジェクトが他のデータベースの対象オブジェクトになる可能性があります。つまり、複数データベースの組み合わせ所有権を有効にする場合は、すべてのデータベースにおいてデータを使用するこのようなユーザーを全面的に信頼する必要があります。現在のデータベースの db_ddladmin ロールおよび db_owners ロールのメンバを識別するには、以下の Transact-SQL コマンドを実行します。
    exec sp_helprolemember 'db_ddladmin' exec sp_helprolemember 'db_owner'
    
  • CREATE DATABASE 権限を持つユーザーは、新しいデータベースを作成し、それを既存のデータベースにアタッチできます。複数データベースの組み合わせ所有権が有効な場合は、このようなユーザーは新しく作成したデータベースまたはアタッチしたデータベースから他のデータベース内のオブジェクトにアクセスできます。
マイクロソフトは、セキュリティを最大にするために、複数データベースの組み合わせ所有権を無効にすることをお勧めしますが、高レベルの権限を持つユーザーを全面的に信頼できる環境もあります。そのため、特定アプリケーションの必要条件を満たすために、特定のデータベースに対して複数データベースの組み合わせ所有権を有効にすることができます。

セットアップ中に複数データベースの組み合わせ所有権を設定する方法

Microsoft SQL Server Service Pack 3 (SP3) Setup には、複数データベースの組み合わせ所有権を許可するかどうかをシステム管理者が制御できるように、新しいダイアログ ボックスが追加されました。SQL Server 2000 SP3 のセットアップ中に [すべてのデータベースで、複数データベースの組み合わせ所有権を有効にする] を有効にすると、すべてのデータベースに対してこのオプションが有効になります。これは、SQL Server 2000 SP3 より前のデフォルトの動作です。セットアップ中にどのオプションを選択しても、Transact-SQL コマンドまたは SQL Server Enterprise Manager を使って、複数データベースの組み合わせ所有権に関するサーバーとデータベースの設定を後から変更できます。

インストール後に複数データベースの組み合わせ所有権を設定する方法

SP3のセットアップ後に複数データベースの組み合わせ所有権の設定を変更するには、sp_configure ストアド プロシージャと sp_dboption ストアド プロシージャの新しいオプションを使用します。
  • Transact-SQL コマンドを使って複数データベースの組み合わせ所有権を設定する

    • sp_configure ストアド プロシージャの新しいオプション、Cross DB Ownership Chaining を使って、SQL Server のインスタンスの複数データベースの組み合わせ所有権を設定します。このオプションを 0 に設定すると、sp_dboption ストアド プロシージャを使って、データベース レベルで複数データベースの組み合わせ所有権を制御できます。このオプションを 1 に設定すると、複数データベースの組み合わせ所有権を制限できません。これは、SQL Server 2000 SP3 よりも前の動作です。このオプションを変更する場合、RECONFIGURE オプションを使用すると、インスタンスを再起動せずに設定を反映できます。たとえば、以下のコマンドを使用して、すべてのデータベースで複数データベースの組み合わせ所有権を許可できます。
      EXEC sp_configure 'Cross DB Ownership Chaining', '1'; RECONFIGURE 
      
    • sp_dboption ストアド プロシージャの新しいオプション、db chaining を使って、データベース レベルで複数データベースの組み合わせ所有権を設定します。このオプションを false に設定すると、そのデータベースはソース データベースまたは対象データベースのいずれにおいても複数データベースの組み合わせ所有権には参加できません。このオプションを true に設定すると、そのデータベースは複数データベースの組み合わせ所有権に参加できます。デフォルトでは、このオプションは、SQL Server 2000 SP3 を適用後にすべてのデータベースに対してfalse になっています。以下のコマンドは、Northwind データベースの複数データベースの組み合わせ所有権を有効にします。
      EXEC sp_dboption 'Northwind', 'db chaining', 'true'
      

    sp_configure の Cross DB Ownership Chaining オプションが 0 に設定されている場合にのみ、sp_dboption の効果が現れます。また、複数データベースの組み合わせ所有権をデータベース レベルで有効にするためには、ソース データベースと対象データベースの両方でこのオプションを有効にする必要があります。
  • SQL Enterprise Manager を使って複数データベースの組み合わせ所有権を設定する

    • すべてのデータベースに対してこのオプションを設定するには、以下の手順を実行します。

      1. [<サーバー名>] を右クリックします。
      2. [プロパティ] をクリックします。
      3. [セキュリティ] タブをクリックします。
      4. [組み合わせ所有権] セクションの [複数データベースの組み合わせ所有権を許可] をオンにします。
      5. [OK] をクリックします。SQL Server サービスを停止して再開するかどうかを確認するダイアログ ボックスが表示されます。
      6. [OK] をクリックします。
    • データベース レベルでこのオプションを有効にするには、以下の手順を実行します。

      1. 対象の [<データベース名>] を右クリックします。
      2. [プロパティ] をクリックします。
      3. [オプション] タブをクリックします。
      4. [設定] セクションの [複数データベースの組み合わせ所有権を許可] をクリックして選択します。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 810474 (最終更新日 2003-01-14) をもとに作成したものです。
この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 810474 - 最終更新日: 2007年10月29日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Service Pack 3
キーワード:?
kbinfo kbupgrade kbsysadmin kbsqlserv2000sp3fea kbproductlink KB810474
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com