Спасибо, что копнули немного глубже, чтобы избежать установки базы данных в TRUSTWORTHY ON
, что, к сожалению, является слишком распространенной практикой.
Те же шаги предпринимаются для подписи сборок и создания асимметричного ключа в master
из библиотеки DLL сборки, а затем создания входа на основе этого асимметричного ключа. Единственная разница заключается в том, чтобы затем предоставить этому входу на основе ключа разрешение UNSAFE ASSEMBLY
вместо разрешения EXTERNAL ACCESS ASSEMBLY
.
Вам никогда не нужны оба разрешения, поскольку разрешение UNSAFE ASSEMBLY
позволяет устанавливать для сборок значение EXTERNAL ACCESS
, хотя наличие обоих не помешает.
Для получения дополнительной информации, в целом, связанной с работой с SQLCLR, см. серию, которую я пишу на SQL Server Central (для чтения их содержания требуется бесплатная регистрация):
Путь к SQLCLR
Если вы используете Visual Studio/SSDT для развертывания/публикации проекта SQLCLR, см. «Stairway to SQLCLR уровня 7: разработка и безопасность» в этой серии Stairway, поскольку в ней показан метод автоматизации создания асимметричного ключа и входа на основе ключа, ни один из которых не может быть обработан с помощью обычных объектов SSDT. Другая, еще более простая техника будет показана в следующей (которая будет опубликована) статье.
ОБНОВЛЕНИЕ относительно SQL Server 2017
В SQL Server 2017 появилась новая функция безопасности («Строгая безопасность CLR», расширенный параметр), которая включена по умолчанию и требует, чтобы ВСЕ сборки, даже помеченные как SAFE
, были подписаны либо асимметричным ключом (т. е. строгим именем), либо сертификатом. и иметь логин (на основе того, что использовалось для подписи сборки), который имеет разрешение UNSAFE ASSEMBLY
. Подробнее о том, как это сделать, с Visual Studio/SST или без него, см. в следующих двух моих сообщениях:
Пожалуйста, избегайте новой «функции» Trusted Assemblies, так как у нее гораздо больше недостатков, чем преимуществ, не говоря уже о том, что она совершенно не нужна, учитывая, что существующая функциональность уже обрабатывала ситуацию, которую «Trusted Assemblies» должны были решить. Полную информацию об этом и демонстрацию правильного способа обработки существующих неподписанных сборок см. по адресу: SQLCLR и SQL Server 2017, часть 4: «Надежные сборки» — разочарование.
person
Solomon Rutzky
schedule
03.01.2017