SQL CLR – podpisywanie kodu

7-Paź-2018

Tutorial krok po kroku, jak podpisać i zaiportować moduł CLR

W tym artykule pokażę jak od A do Z zaimplementować w .NET dwie metody służące do listowania plików i katalogów i zaimportować te funkcje do SQL 2017 z uwzględnieniem aktualnych best practice (z opcją ‚clr strict security’). Czym jest ta opcja i jakie ma działanie zobacz w https://www.mobilo24.eu/sql-clr-w-wersji-2017opcja-clr-strict-security/

Utwórz klasę w Visual Studio (uwaga – koniecznie wybierz  Class Library .NET) – inaczej nie będzie do dyspozycji wszystkich wymaganych referencji (https://stackoverflow.com/questions/48130887/visual-studio-not-recogonizing-microsoft-sqlserver-namespace):

Napisz swój kod, co może wyglądać o tak:

Otwórz właściwości projektu i podpisz go, w razie potrzeby wygeneruj „strong name key” – jest to plik pfx, który zawiera parę kluczy asymetrycznych. Hasło będzie potrzebne, jeżeli będziesz kiedyś chciał wykorzystać ten sam plik do podpisywania innego modułu. Wtedy nie trzeba będzie generować pliku na nowo, ale raczej go wskazać:

Wybierając Build >> Build zbuduj plik. Nie zapomnij, aby finalna konfiguracja była „Release”. Na tym etapie masz już plik dll:

Przejdź do SSMS. W razie potrzeby zmień ‚clr enabled’ i zweryfikuj czy ‚clr strict security’ jest ustawione na 1:

Zaimportuj klucz asymetryczny do bazy master, utwórz login połaczony z tym kluczem, nadaj temu loginowi uprawnienie „UNSAFE ASSEMBLY”:

Utwórz bazę (jeśli jej jeszcze nie masz), i zaimportuj ASSEMBLY:

Utwórz funkcje, procedury itp. odpowiadające metodom z klasy zaimplementowanej w .NET i sprawdź ich działanie:

 

Pisząc artykuł korzystałem z:

Deploying SQL CLR assembly using Asymmetric key

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-asymmetric-key-transact-sql?view=sql-server-2017

https://docs.microsoft.com/pl-pl/dotnet/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/35b8bce5-8ea9-4fd4-aa87-1764a2071e92/long-lasting-pfx-file-for-sqlclr-externalaccess-signing?forum=sqlnetfx

https://docs.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=netframework-4.7.2

https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/common-language-runtime-integration-overview?view=sql-server-2017

Komentarze:

  1. Mobilo » Blog Archive » SQL CLR – przykład funkcji, procedur, typów… napisał,

    […] SQL CLR – podpisywanie kodu […]

Dodaj komentarz:

Autor: Rafał Kraik