{"id":908,"date":"2005-09-17T05:13:00","date_gmt":"2005-09-17T05:13:00","guid":{"rendered":"\/blogs\/bobb\/post\/Security-in-SQL-Server-2005-unsafe-assemblies-in-Sept-CTP.aspx"},"modified":"2005-09-17T05:13:00","modified_gmt":"2005-09-17T05:13:00","slug":"security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/","title":{"rendered":"Security in SQL Server 2005 &#8211; unsafe assemblies in Sept CTP"},"content":{"rendered":"<p>\nAfter writing about a lot of new security features that were added since we published our &quot;First Look at SQL Server 2005 book&quot; its nice to report on one that we had in there (at beta2), but never appeared in the product. Until now.\n<\/p>\n<p>\nIn the September CTP version on SQL Server 2005 (I think its probably the last CTP), you need special permissions to CREATE an ASSEMBLY with UNSAFE permission set. You must have either one of the following:\n<\/p>\n<p>\n1. DBO has UNSAFE ASSEMBLY permission and database has TRUSTWORTHY property on.<br \/>\nor <br \/>\n2. ASSEMBLY is signed with an asymmetric key or cert that has a LOGIN with UNSAFE ASSEMBLY permission.\n<\/p>\n<p>\nWe&#39;d written about the second choice. Here&#39;s one of the combinations that works:\n<\/p>\n<p>\n1. Create a strong named key in c:\\temp\\assm.snk<br \/>\n2. Sign the assembly unsafe1.dll with this strong named key<br \/>\n3. Make a SQL Server LOGIN for the key.<br \/>\n4. Give LOGIN the appropriate permissions<br \/>\n5. Catalog the unsafe assembly\n<\/p>\n<p>\nIn code, it looks like this:\n<\/p>\n<p>\n&#8212; master key in master database<br \/>\nUSE master<br \/>\ngo\n<\/p>\n<p>\nCREATE MASTER KEY ENCRYPTION BY PASSWORD = &#39;StrongPassword1&#39;<br \/>\ngo\n<\/p>\n<p>\n&#8212; keyfile generated by VS or .NET command line utilities<br \/>\nCREATE ASYMMETRIC KEY assm FROM FILE=&#39;c:\\temp\\assm.snk&#39;<br \/>\ngo\n<\/p>\n<p>\nCREATE LOGIN snk FROM ASYMMETRIC KEY assm<br \/>\ngo\n<\/p>\n<p>\nGRANT UNSAFE ASSEMBLY TO snk<br \/>\nGO\n<\/p>\n<p>\nUSE somedb<br \/>\nGO\n<\/p>\n<p>\nCREATE ASSEMBLY unsafeassemblyex FROM &#39;c:\\temp\\unsafe1.dll&#39;<br \/>\n&nbsp; WITH permission_set = unsafe<br \/>\nGO\n<\/p>\n<p>\nThat&#39;s only one variation of it. You can also use the key stored in the assembly (CREATE ASYMMETRIC KEY FROM EXECUTABLE FILE=&#8230;) or an assembly already cataloged inside the database (CREATE ASYMMETRIC KEY FROM ASSEMBLY&#8230;). You can do the same thing with certificates.\n<\/p>\n<p>\nSo one of the SQLCLR security features we wrote about over a year ago has come to pass.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After writing about a lot of new security features that were added since we published our &quot;First Look at SQL Server 2005 book&quot; its nice to report on one that we had in there (at beta2), but never appeared in the product. Until now. In the September CTP version on SQL Server 2005 (I think [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,28,38],"tags":[],"class_list":["post-908","post","type-post","status-publish","format-standard","hentry","category-security","category-sql-server-2005","category-sqlclr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"After writing about a lot of new security features that were added since we published our &quot;First Look at SQL Server 2005 book&quot; its nice to report on one that we had in there (at beta2), but never appeared in the product. Until now. In the September CTP version on SQL Server 2005 (I think [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2005-09-17T05:13:00+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/\",\"name\":\"Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2005-09-17T05:13:00+00:00\",\"dateModified\":\"2005-09-17T05:13:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Security\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/security\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Security in SQL Server 2005 &#8211; unsafe assemblies in Sept CTP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/","og_locale":"en_US","og_type":"article","og_title":"Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin","og_description":"After writing about a lot of new security features that were added since we published our &quot;First Look at SQL Server 2005 book&quot; its nice to report on one that we had in there (at beta2), but never appeared in the product. Until now. In the September CTP version on SQL Server 2005 (I think [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/","og_site_name":"Bob Beauchemin","article_published_time":"2005-09-17T05:13:00+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/","name":"Security in SQL Server 2005 - unsafe assemblies in Sept CTP - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2005-09-17T05:13:00+00:00","dateModified":"2005-09-17T05:13:00+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/security-in-sql-server-2005-unsafe-assemblies-in-sept-ctp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"Security","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/security\/"},{"@type":"ListItem","position":3,"name":"Security in SQL Server 2005 &#8211; unsafe assemblies in Sept CTP"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=908"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/908\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}