CLR の厳密なセキュリティ
適用対象:SQL Server
SQL Server で SAFE
、EXTERNAL ACCESS
、UNSAFE
のアクセス許可の解釈を制御します。
値 | 説明 |
---|---|
0 | 無効 - 旧バージョンとの互換性のために提供されています。 Disabled 値の使用はお勧めしません。 |
1 | 有効 - データベース エンジンがアセンブリの PERMISSION_SET の情報を無視し、常に UNSAFE と解釈するようになります。 SQL Server 2017 (14.x) 以降では、Enabled が既定値です。 |
警告
CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFE
で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。 SQL Server 2017 (14.x) 以降、CLR アセンブリのセキュリティを強化するために clr strict security
という sp_configure
オプションが導入されました。 clr strict security
は既定で有効になり、SAFE
および EXTERNAL_ACCESS
アセンブリを UNSAFE
とマークされている場合と同様に扱います。 clr strict security
オプションは、旧バージョンとの互換性のために無効にできますが、これは推奨されません。 Microsoft では、master データベースで UNSAFE ASSEMBLY
アクセス許可が付与されている対応するログインを含む証明書または非対称キーで、すべてのアセンブリに署名することをお勧めします。 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
アクセス許可のあるログインによって所有されている。 このオプションは推奨されません。
- サーバーでの
参照
サーバー構成オプション (SQL Server)
sp_configure (Transact-SQL)
clr enabled サーバー構成オプション
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示