CLR の厳密なセキュリティCLR strict security

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL ServerSAFEEXTERNAL ACCESSUNSAFE のアクセス許可の解釈を制御します。Controls the interpretation of the SAFE, EXTERNAL ACCESS, UNSAFE permission in SQL ServerSQL Server.

[値]Value DescriptionDescription
00 無効 - 旧バージョンとの互換性のために提供されています。Disabled - Provided for backwards compatibility. Disabled 値の使用はお勧めしません。Disabled value is not recommended.
11 有効 - データベース エンジンDatabase Engineがアセンブリの PERMISSION_SET の情報を無視し、常に UNSAFE と解釈するようになります。Enabled - Causes the データベース エンジンDatabase Engine to ignore the PERMISSION_SET information on the assemblies, and always interpret them as UNSAFE. SQL Server 2017 (14.x)SQL Server 2017 (14.x) の既定値は Enabled です。Enabled is the default value for SQL Server 2017 (14.x)SQL Server 2017 (14.x).

警告

CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。CLR uses Code Access Security (CAS) in the .NET Framework, which is no longer supported as a security boundary. PERMISSION_SET = SAFE で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。A CLR assembly created with PERMISSION_SET = SAFE may be able to access external system resources, call unmanaged code, and acquire sysadmin privileges. SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降、CLR アセンブリのセキュリティを強化するために clr strict security という sp_configure オプションが導入されました。Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x), an sp_configure option called clr strict security is introduced to enhance the security of CLR assemblies. clr strict security は既定で有効になり、SAFE および EXTERNAL_ACCESS アセンブリを UNSAFE とマークされている場合と同様に扱います。clr strict security is enabled by default, and treats SAFE and EXTERNAL_ACCESS assemblies as if they were marked UNSAFE. clr strict security オプションは、旧バージョンとの互換性のために無効にできますが、これは推奨されません。The clr strict security option can be disabled for backward compatibility, but this is not recommended. Microsoft では、master データベースで UNSAFE ASSEMBLY アクセス許可が付与されている対応するログインを含む証明書または非対称キーで、すべてのアセンブリに署名することをお勧めします。Microsoft recommends that all assemblies be signed by a certificate or asymmetric key with a corresponding login that has been granted UNSAFE ASSEMBLY permission in the master database. SQL ServerSQL Server 管理者は、データベース エンジンが信頼するアセンブリのリストにアセンブリを追加することもできます。administrators can also add assemblies to a list of assemblies, which the Database Engine should trust. 詳細については、「sys.sp_add_trusted_assembly」を参照してください。For more information, see sys.sp_add_trusted_assembly.

RemarksRemarks

有効にすると、CREATE ASSEMBLY および ALTER ASSEMBLY のステートメントの PERMISSION_SET オプションが実行時に無視されますが、PERMISSION_SET オプションはメタデータに保持されます。When enabled, the PERMISSION_SET option in the CREATE ASSEMBLY and ALTER ASSEMBLY statements is ignored at run-time, but the PERMISSION_SET options are preserved in metadata. オプションを無視すると、既存のコード ステートメントの改変が最小限に抑えられます。Ignoring the option, minimizes breaking existing code statements.

CLR strict securityadvanced option です。CLR strict security is an advanced option.

重要

厳密なセキュリティを有効にした場合、未署名のアセンブリの読み込みは失敗します。After enabling strict security, any assemblies that are not signed will fail to load. 各アセンブリを変更または削除して再作成して、サーバーでの UNSAFE ASSEMBLY アクセス許可のある対応するログインを含む証明書または非対称キーで署名されるようにする必要があります。You must either alter or drop and recreate each assembly so that it is signed with a certificate or asymmetric key that has a corresponding login with the UNSAFE ASSEMBLY permission on the server.

アクセス許可Permissions

このオプションを変更するにはTo change this option

CONTROL SERVER アクセス許可、または sysadmin 固定サーバー ロールのメンバーシップが必要です。Requires CONTROL SERVER permission, or membership in the sysadmin fixed server role.

CLR アセンブリを作成するにはTo create an CLR assembly

CLR strict security が有効になっている場合に CLR アセンブリを作成するには、次のアクセス許可が必要です。The following permissions required to create a CLR assembly when CLR strict security is enabled:

  • ユーザーには CREATE ASSEMBLY アクセス許可が必要ですThe user must have the CREATE ASSEMBLY permission
  • さらに、次の条件のいずれかを満たす必要があります。And one of the following conditions must also be true:
    • サーバーでの UNSAFE ASSEMBLY アクセス許可のある対応するログインを含む証明書または非対称キーでアセンブリが署名されている。The assembly is signed with a certificate or asymmetric key that has a corresponding login with the UNSAFE ASSEMBLY permission on the server. アセンブリへの署名は推奨されます。Signing the assembly is recommended.
    • データベースに ON に設定された TRUSTWORTHY プロパティが含まれ、そのデータベースがサーバーでの UNSAFE ASSEMBLY アクセス許可のあるログインによって所有されている。The database has the TRUSTWORTHY property set to ON, and the database is owned by a login that has the UNSAFE ASSEMBLY permission on the server. このオプションは推奨されません。This option is not recommended.

参照See Also

サーバー構成オプション (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
clr enabled サーバー構成オプションclr enabled Server Configuration Option