サーバー構成: clr strict security
適用対象: SQL Server
SQL Server で SAFE
、EXTERNAL_ACCESS
、UNSAFE
のアクセス許可の解釈を制御します。 アクセス許可の詳細については、「アセンブリのデザイン」をご覧ください。
Value | 説明 |
---|---|
0 |
Disabled。 これは旧バージョンとの互換性のために用意されています。 この値を 0 に設定することはお勧めしません。 |
1 |
有効にします。 データベース エンジンがアセンブリの PERMISSION_SET の情報を無視し、常に UNSAFE と解釈するようになります。 SQL Server 2017 (14.x) 以降のバージョンでは、1 が既定値です。 |
コード アクセス セキュリティはサポートされていません
CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFE
で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。 SQL Server 2017 (14.x) 以降のバージョンでは、clr strict security
は SAFE
アセンブリと EXTERNAL_ACCESS
アセンブリが UNSAFE
としてマークされているかのように扱います。
すべてのアセンブリに対して、UNSAFE ASSEMBLY
データベース内で master
権限が付与された対応するログインを持つ認定資格証または非対称キーで署名することをお勧めします。 SQL Server 管理者は、データベース エンジンが信頼するアセンブリのリストにアセンブリを追加することもできます。 詳細については、「sys.sp_add_trusted_assembly」を参照してください。
解説
有効にすると、CREATE ASSEMBLY
および ALTER ASSEMBLY
のステートメントの PERMISSION_SET
オプションが実行時に無視されますが、PERMISSION_SET
オプションはメタデータに保持されます。 このオプションを無視すると、既存のコード ステートメントの改変が最小限に抑えられます。
CLR strict security
は advanced option
です。
厳密なセキュリティを有効にした場合、未署名のアセンブリの読み込みは失敗します。 各アセンブリを変更または削除して再作成して、サーバーでの UNSAFE ASSEMBLY
アクセス許可のある対応するログインを含む証明書または非対称キーで署名されるようにする必要があります。
アクセス許可
このオプションを変更する
CONTROL SERVER
アクセス許可、または sysadmin 固定サーバー ロールのメンバーシップが必要です。
CLR アセンブリを作成する
CLR strict security
が有効になっている場合に CLR アセンブリを作成するには、次のアクセス許可が必要です。
ユーザーには
CREATE ASSEMBLY
アクセス許可が必要ですさらに、次の条件のいずれかを満たす必要があります。
サーバーでの
UNSAFE ASSEMBLY
アクセス許可のある対応するログインを含む証明書または非対称キーでアセンブリが署名されている。 アセンブリへの署名は推奨されます。データベースに
ON
に設定されたTRUSTWORTHY
プロパティが含まれ、そのデータベースがサーバーでのUNSAFE ASSEMBLY
アクセス許可のあるログインによって所有されている。 "このオプションは推奨されません"。
例
次の例では、最初に clr strict security
オプションの現在の設定を表示し、その後、オプションの値を 1
(有効) に設定します。
EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO