次の方法で共有


CLR Integration Security のリンク

このセクションでは、ユーザー コードの一部が、Transact-SQL またはマネージド言語のいずれかで、SQL Server で相互に呼び出す方法について説明します。 これらのオブジェクト間のリレーションシップはリンクと呼ばれます。

呼び出しリンクは、オブジェクトを呼び出すユーザー (ストアド プロシージャを呼び出す Transact-SQL バッチなど) または共通言語ランタイム (CLR) ストアド プロシージャまたは関数からのコード呼び出しに対応します。 呼び出しリンクにより、呼び出し先に対する EXECUTE 権限がチェックされます。

テーブル アクセス リンクは、テーブル、ビュー、またはテーブル値関数の値の取得または変更に対応します。 これらは呼び出しリンクに似ていますが、SELECT、INSERT、UPDATE、DELETE の各アクセス許可に関して、より細かいアクセス制御が行われる点が異なります。

ゲート リンクは、実行時に、オブジェクトリレーションシップが確立されると、オブジェクトリレーションシップ全体でアクセス許可がチェックされないことを意味します。 2 つのオブジェクト (オブジェクト x 、オブジェクト y など) の間にゲート リンクがある場合、オブジェクト y とオブジェクト y からアクセスする他のオブジェクトに対する 権限は、 オブジェクト x の作成時にのみチェックされます。 オブジェクト x の作成時に、 REFERENCE アクセス許可が yx の所有者に対してチェックされます。 実行時 (たとえば、誰かがオブジェクト x を呼び出した場合)、静的に参照する y またはその他のオブジェクトに対してチェックされる権限はありません。 実行時に、オブジェクト x 自体に対して適切なアクセス許可がチェックされます。

ゲート リンクは、常に 2 つのオブジェクト間のメタデータ依存関係と組み合わせて使用されます。 このメタデータ依存関係は、SQL Server カタログで確立されたリレーションシップであり、別のオブジェクトが依存している限り、オブジェクトが削除されないようにします。

ゲート リンクは、多くの依存オブジェクトに権限を与えるのが適切または管理できない場合に便利です。 ゲート リンクは、CLR アセンブリ Transact-SQL エントリ ポイントを定義するオブジェクト (CLR プロシージャ、トリガー、関数、型、集計など) と、それらが定義されているアセンブリの間で導入されます。 これらのオブジェクトに対するゲート セキュリティは、CLR アセンブリで定義されている Transact-SQL エントリ ポイントを呼び出すには、呼び出し元がその Transact-SQL エントリ ポイントに対する適切なアクセス許可のみを必要とすることを意味します。 呼び出し元は、そのアセンブリまたは静的に参照する他のアセンブリに対するアクセス許可を持っている必要はありません。 アセンブリに対する権限は、Transact-SQL エントリ ポイントの作成時にチェックされます。

SQL Server Authorization-Based セキュリティ

CLR ベースのデータベース オブジェクトの呼び出しと呼び出し間の SQL Server セキュリティ チェックの背後にある基本的な規則を次に示します。最初の 3 つの規則では、どのアクセス許可をチェックするか、どのオブジェクトに対してチェックするかを定義します。4 番目の規則では、アクセス許可がチェックされる実行コンテキストを定義します。

  1. 呼び出しが同じオブジェクト内で行われる場合を除き、すべての呼び出しには EXECUTE 権限が必要です。つまり、同じアセンブリ内の呼び出しには権限チェックは必要ありません。 アクセス許可は実行時にチェックされます。

  2. ゲート リンクには、呼び出し元オブジェクトの作成時に、呼び出し先に対する REFERENCE アクセス許可が必要です。 オブジェクトの作成時に、呼び出し元オブジェクトの所有者に対して権限がチェックされます。

  3. テーブル アクセス リンクには、アクセスするテーブルまたはビューに対する対応する SELECTINSERTUPDATE、または DELETE アクセス許可が必要です。

  4. アクセス許可は、現在の実行コンテキストに対してチェックされます。 プロシージャと関数は、呼び出し元とは異なる実行コンテキストで作成できます。 アセンブリは常に、それに対して定義されているプロシージャ、関数、またはトリガーの実行コンテキストを使用して作成されます。

こちらもご覧ください

CLR 統合のセキュリティ