SQL Server での複数データベースにまたがるアクセスの有効化 (ADO.NET)
複数データベースの組み合わせ所有権は、あるデータベースのプロシージャが、別のデータベースのオブジェクトに依存している場合に作用します。 複数データベースの組み合わせ所有権は、単一データベースの組み合わせ所有権とほぼ同じように機能しますが、所有権の連鎖性を保つために、すべてのオブジェクトの所有者が同じログイン アカウントにマップされていることが必要です。 ソース データベース内のソース オブジェクトおよびターゲット データベース内のターゲット オブジェクトが同じログイン アカウントによって所有されている場合、ターゲット オブジェクトに対する権限は SQL Server によってチェックされません。
既定で無効の機能
SQL 2000 SP3 以降では、複数データベースにまたがる組み合わせ所有権が、既定では無効に設定されています。 次に示したように、複数データベースの組み合わせ所有権はセキュリティ上のリスクを伴うため無効にすることをお勧めします。
db_ddladmin データベース ロールまたは db_owners データベース ロールのデータベース所有者およびメンバーは、他のユーザーによって所有されたオブジェクトを作成できます。 これらのオブジェクトが、他のデータベースのオブジェクトに依存している可能性もあります。 これは、複数データベースの組み合わせ所有権を有効にした場合、すべてのデータベースのデータについて、これらのユーザーを完全に信頼する必要があることを意味します。
CREATE DATABASE 権限を持つユーザーは、新しいデータベースを作成したり、既存のデータベースをアタッチしたりできます。 複数データベースの組み合わせ所有権を有効にした場合、これらのユーザーが、新たに作成したデータベースから (または、アタッチしたデータベースから)、権限を持たない他のデータベース内のオブジェクトにアクセスできます。
複数データベースの組み合わせ所有権の有効化
高い権限が与えられたユーザーを完全に信頼できる環境であれば、複数データベースの組み合わせ所有権を有効にすることができます。 複数データベースの組み合わせ所有権は、セットアップ時にすべてのデータベースを対象に構成できるほか、Transact-SQL コマンドの sp_configure および sp_dboption を使用することで、特定のデータベースを対象に構成することもできます。
SQL Server 2000 SP3 では、セキュリティ面の強化として、複数データベースの組み合わせ所有権を構成できる Cross DB Ownership Chaining オプションが導入されました。 SQL Server 2005 以降で、複数データベースの組み合わせ所有権を個別に構成するには、まず、sp_configure を使用し、サーバーに対してこの機能を無効にします。 次に、ALTER DATABASE コマンドで SET DB_CHAINING ON を指定し、必要なデータベースに対してのみ、複数データベースの組み合わせ所有権を構成します。
動的 SQL
動的に生成された SQL ステートメントの実行では、同じユーザーが両方のデータベースに存在しない限り、複数データベースの組み合わせ所有権は機能しません。 SQL Server 2005 では、別のデータベースのデータにアクセスするストアド プロシージャを作成し、両方のデータベースに存在する証明書でそのプロシージャに署名することによって、この制限を回避できます。 これにより、ユーザーは、データベースへのアクセス許可が付与されていなくても、そのプロシージャによって使用されるデータベース リソースにアクセスできるようになります。
外部リソース
詳細については、次のリソースを参照してください。
リソース |
説明 |
---|---|
EXECUTE AS の使用によるデータベースの権限借用の拡張およびCross DB Ownership Chaining オプション (SQL Server 2008 オンライン ブック) |
Microsoft SQL Server 2008 のインスタンスに対して、複数データベースの組み合わせ所有権を構成する方法が説明されています。 |
EXECUTE AS の使用によるデータベースの権限借用の拡張およびCross DB Ownership Chaining オプション (SQL Server 2005 オンライン ブック) |
Microsoft SQL Server 2005 のインスタンスに対して、複数データベースの組み合わせ所有権を構成する方法が説明されています。 |
Cross DB Ownership Chaining (SQL Server 2000 オンライン ブック) |
SQL Server 2000 SP3 で導入されたオプションを使用して、複数データベースの組み合わせ所有権を構成する方法が説明されています。 |
参照
概念
SQL Server でのストアド プロシージャを使用した権限の管理 (ADO.NET)
SQL Server での安全な動的 SQL の作成 (ADO.NET)
SQL Server でのストアド プロシージャの署名 (ADO.NET)