Czy istnieje sposób, aby w jakiś sposób podpisać cyfrowo bieżący stan rekordu bazy danych lub określonego pola z certyfikatem konkretnego użytkownika lub poświadczeniem AD itp.? Muszę zaimplementować pewnego rodzaju zatwierdzenie na poziomie rekordu, w którym poprawność i ważność konkretnego pola lub pól lub wiersza jest podpisana kombinacją nazwy użytkownika/hasła lub z pewnym certyfikatem. Dane powinny być zawsze widoczne w rejestrze, wszystko, czego potrzebuję, to móc powiedzieć: kto i kiedy zatwierdził dane. Nie muszę zapobiegać zmianie stanu (blokowanie), tylko w celu sprawdzenia, czy bieżący stan został podpisany.Cyfrowe podpisywanie rekordu bazy danych SQL Server lub operacji wstawiania/aktualizacji
Odpowiedz
Można użyć SIGNBYASYMKEY-function aby utworzyć podpis przy użyciu klucza asymetrycznego:
DECLARE @id = 2; -- The primary key of the row we need to sign
DECLARE @keyid = AsymKey_Id('KeyID_for_the_User');
DECLARE @keypw = N'pGFD4bb925DGvbd2439587y';
-- Password the user entered to sign the values
DECLARE @clear_text_data nvarchar(max);
set @clear_text_data = function_that_returns_a_concatenation_of_the_columns(@id)
UPDATE table
SET signature = SignByAsymKey(@keyid, @clear_text_data, @keypw)
WHERE id = @id;
[Ujawnienie: Pracuję dla CoSign]
Jak standardowy podpis cyfrowy chcesz? Czy chcesz X.509 signature, "prawdziwą rzecz?"
Jeśli tak:
- serialize (spłaszczenie) pola danych w określonym, udokumentowane i powtarzalny sposób w buforze.
- użyć biblioteki podpisywania do podpisania bufora.
- Wynikowy podpis cyfrowy powinien być "odłączonym podpisem cyfrowym". Zalecanym standardem dla odłączonych podpisów jest .p7b file type - struktura cyfrowej podpisu PKCS # 7 bez danych.
- Przechowuj odłączony podpis cyfrowy jako dodatkowe pole w rekordzie DBMS.
Potrzebny będzie również zapewnienie Weryfikacja podpis obsługę, aby zapewnić osobie (lub urządzenia), że dane nie został zmieniony, ponieważ został podpisany i że tożsamość osoby podpisującej jest zaufany:
- Korzystając z tego samego algorytmu co powyżej, przekształcić dane do bufora
- Zadzwoń do metody weryfikacji biblioteki podpisu.
Jeśli chcesz poprawić możliwości audytu systemu, należy włączyć szeregowanie danych i podpis zewnętrzny do pobrania. Umożliwi to sprawdzenie kontroli: użycie oprogramowania stron trzecich w celu powielenia działania oprogramowania do weryfikacji.
Najlepiej byłoby, gdyby zserializowana wersja danych była łatwa do sprawdzenia, czy pasuje do danych tekstowych. Na przykład serializacji do formatu json, csv lub xml utf-8 zamiast formatu binarnego. Każdy pakiet bitów może być podpisany, ale zwykły format tekstu będzie dużo łatwiej poddać kontroli.
Jeśli chcesz także biblioteka podpisanie obsłużyć wszystkich kwestii bezpieczeństwa prawidłowo ochrony kluczy prywatnych podpisującego, sprawdź CoSign SAPI APIs.
Pamiętaj, że przechowywanie kluczy prywatnych sygnatariuszy w pliku w systemie plików oznacza, że ogólny Aplikacja to , a nie, dostarczając dowód podpisu. Jedynym sposobem na przedstawienie prawdziwego dowodu podpisu jest użycie bezpiecznego urządzenia do tworzenia podpisu (SSCD). Łatwym sposobem jest użycie numeru CoSign Central signing appliance lub podobnego.Główną alternatywą są karty inteligentne, które mogą być trudne do wdrożenia w środowisku klient/serwer/przeglądarka internetowa.
- 1. Role bazy danych SQL Server
- 2. Jak zmienić właściciela bazy danych SQL Server?
- 3. Kodowanie kolorami Bazy danych SQL Server 2008
- 4. Zmiana sortowania SQL Server 2012 bazy danych
- 5. Jak wybrać sortowanie bazy danych SQL Server
- 6. Wybierz rozmiar bazy danych SQL Server
- 7. Fill DataTable z bazy danych SQL Server
- 8. Najlepszy sposób na synchronizację zdalnej bazy danych SQL Server z lokalną bazą danych SQL Server Compact?
- 9. Pobierz plik .sql z bazy danych SQL Server 2012
- 10. Kreator publikacji bazy danych SQL z SQL Server 2008
- 11. Jak dodać obiekty bazy danych SQL Server do TFS?
- 12. Niepowodzenie kompilacji projektu bazy danych programu SQL Server 2013 SQL Server
- 13. Zarządzanie podzestawem bazy danych w SQL Server 2008 Projekt DB
- 14. Upuść bazę danych SQL Server
- 15. Zmiana nazwy bazy danych SQL
- 16. Visual Studio "Projekt serwera SQL Server 2008 a projekt bazy danych Sql Server 2008"?
- 17. Migracja bazy danych SQLite do Microsoft SQL Server
- 18. Problem z wielkością bazy danych SQL Server CE
- 19. Usuwanie (wtórnego) pliku pomocniczego bazy danych SQL Server
- 20. Jak przekazać zmienną daty zerowej do bazy danych SQL Server
- 21. Napisz duże pandy DataFrames do bazy danych SQL Server
- 22. Tworzenie pliku bazy danych programu SQL Server CE programowo
- 23. Zapytanie Różne bazy danych - Ta sama tabela SQL Server 2012
- 24. Jak korzystać z projektu bazy danych SQL Server
- 25. Jak mogę słuchać do bazy danych SQL Server zmienia
- 26. Jak ustawić domyślny schemat bazy danych w SQL Server 2005?
- 27. Podłączanie do lokalnej bazy danych SQL Server za pomocą C#
- 28. Uzyskaj listę kolumn obliczeniowych w tabeli bazy danych (SQL Server)
- 29. Plan konserwacji dla bazy danych SQL Server SessionState (ASPState) ASP.Net
- 30. Blokowanie bazy danych SQL Server za pomocą PHP
Dziękuję za drobiazgową odpowiedź, a także za cenne tło. Niestety w tym przypadku nie wolno mi używać żadnych aktywów stron trzecich, więc jestem zobowiązany zaakceptować odpowiedź @ Twinkles z powodu podejścia opartego wyłącznie na SQL Server. Ale i tak dzięki. –