Ukrywanie danych w bazie danych

Odpowiedz Nowy wątek
Mały Orzeł
2018-09-24 08:20
Mały Orzeł
0

Czesc, zalozmy ze mam jakis program cos typu TODO list napisany w asp.net mvc wspolpracujacy z baza MSSQL. Wszyscy uzytkownicy pracuja na 1 bazie, w jaki sposob zrobic tak aby nikt nie mial dostepu do tych danych, tzn zeby nawet admin nie mogl podejrzec zaplanowanych zadan uzytkownikow?

Pozostało 580 znaków

Chory Jeleń
2018-09-24 08:27
Chory Jeleń
0

np sprawdzasz czy zadanie ktore chcesz zobaczyc jest stworzone przez Ciebie jak nie to nie pokazujesz

Pozostało 580 znaków

Mały Orzeł
2018-09-24 08:54
Mały Orzeł
0

Nie o to chodzi :)

Chce zeby admin nie mogl sobie otworzyc bazy wpisac selecta i zobaczyc wszystkich danych.

Pozostało 580 znaków

2018-09-24 08:56

Rejestracja: 11 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Redmond, WA

2

Użyj CMS do szyfrowania bajtów i zakoduj je w bazie jako np. base64 (jeśli Twoja wiadomość to tekst to użyj np. Encoding.UTF8.GetBytes żeby dostać bajty). W .NET do szyfrowania bajtów masz EnvelopedCms.

Generalnie działa to tak (na pierwszą część poszukaj gotowca - jeśli nie ma to poszukaj testów do tej klasy na githubie (np.: https://github.com/dotnet/cor[...]elopedCms/GeneralTests.cs#L21)):

  • generujesz certyfikat (klucz publiczny np. RSA albo ECDH - są podzielone opinie które jest lepsze) i klucz prywatny
  • w CMS podajesz certyfikat jako odbiorce i co ma zaszyfrować
  • CMS generuje Ci byte[] które sam wie jak odczytać - wewnętrznie działa to tak, że CMS generuje losowe bajty jako klucz AES (lub inny wybrany algorytm) który służy do zaszyfrowania dokumentu. te losowe bajty zaszyfrowane są za pomocą klucza publicznego z certyfikatu. Żeby odczytać ten klucz potrzebujesz klucza prywatnego (nawet osoba która szyfrowała nie jest w stanie odczytać). Dodatkowo CMS koduje te bajty w postacie zgodnej ze specyfikacją tak, że jest w stanie je później jednoznacznie odczytać
  • byte[] zapisujesz albo bezpośrednio w bazie jeśli Ci baza na to pozwala albo jako text w postaci base64: https://docs.microsoft.com/en[...]tring?view=netframework-4.7.2

░█░█░█░█░█░█░█░█░█░█░█░
edytowany 5x, ostatnio: krwq, 2018-09-24 09:06

Pozostało 580 znaków

2018-09-24 09:25
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 5 godzin temu

Lokalizacja: Poznań

0

@krwq: A jak ma się to szyfrowanie do prac na bazie, tworzenia indeksów, wyszukiwania itp? Czy z takiej bazy korzysta się analogicznie do "zwykłego" SQL, po prostu dajesz zapytanie SELECT FROM i całe odszyfrowywanie dzieje się w tle, całkiem przezroczyście? I czy (jeśli tak, to jaki) ma to wpływ na wydajność całego SQL'a (przy mniejszym obciążeniu pewnie niezauważalne, ale czy nie spowalnia to działania w przypadku większego ruchu)?


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say
@Panczo: może Ty coś wiesz w temacie mojego pytania? - cerrato 2018-09-24 10:43
Popatrz na drugi link w poście niżej, tam masz przykład jak używać, co do indeksowania: https://blogs.msdn.microsoft.[...]3/12/indexing-encrypted-data/ - Panczo 2018-09-24 10:49

Pozostało 580 znaków

2018-09-24 10:40

Rejestracja: 17 lat temu

Ostatnio: 9 minut temu

1

MSSQL ma wbudowane mechanizmy do szyfrowania:
https://docs.microsoft.com/en[...]cryption?view=sql-server-2017

Przykład:

https://www.mssqltips.com/sql[...]example-using-symmetric-keys/

Problem polega na tym, że można nie nadawać uprawnień dla sysadminow, ale sysadmini mogą je sobie nadać sami, nie wiem czy pisząc admin masz na myśli admina Twojej aplikacji, czy admina w rozumieniu silnika SQL...

Pozostało 580 znaków

Mały Orzeł
2018-09-25 08:33
Mały Orzeł
0

Problem polega na tym, że można nie nadawać uprawnień dla sysadminow, ale sysadmini mogą je sobie nadać sami, nie wiem czy pisząc admin masz na myśli admina Twojej aplikacji, czy admina w rozumieniu silnika SQL...

Chcę, żeby nikt nie miał dostępu do tych danych. Żeby to były prywatne notatki jakichś osób i żaden admin systemu, programista itp nie mógł się do nich dostać. Podejrzewam, że jednak nie da się tak zrobić.

Pozostało 580 znaków

2018-09-25 08:46

Rejestracja: 17 lat temu

Ostatnio: 9 minut temu

1

No to nie możesz używać do tego bazy tylko szyfrować po stronie clienta jego kluczem, a w bazie trzymać tylko zaszyfrowane dane

Ale wtedy właściwie te dane stają się prawie że blobem - znika możliwość przeszukiwania. indeksowania itp... - cerrato 2018-09-25 09:51
Ja bym się raczej martwił, że ktoś nie ufa swojemu sysadminowi… - Panczo 2018-09-25 09:55

Pozostało 580 znaków

2018-09-25 10:23
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 5 godzin temu

Lokalizacja: Poznań

0

@Panczo: To chyba nawet nie jest kwestia zaufania. Zauważ, że w dużych firmach często masz hierarchie, do pewnych danych mają dostęp jedynie określone osoby. I nie chodzi mi tylko o IT, ale np. kwestia płatności. Często jest tak, że jedna księgowa/osoba odpowiedzialna za płatności wystawia polecenia przelewu, ale inna je akceptuje. W ten sposób ograniczasz ryzyko, że ktoś przeleje wszystko na swoje konto, a potem ucieknie. Tak samo tutaj - jeśli jest jakiś admin, który ma dostęp do wszystkiego, to może zrobić wiele złego. Może skopiować wszystkie dane, może je skasować itp. A ponadto - jeśli ktoś się włamie na jego konto/dojdzie do kompa, to też może narobić zamieszania.

Moim zdaniem takie ograniczanie uprawnień nie jest przejawem paranoi czy braku zaufania, ale raczej rozsądnym podejściem do kwestii bezpieczeństwa systemów.


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say

Pozostało 580 znaków

2018-09-25 11:46

Rejestracja: 12 lat temu

Ostatnio: 1 minuta temu

3

Bez przesady. Jeśli ktoś ma zarządzać danymi, to znaczy, że firma ma (musi) mieć do niego zaufanie. To tak jakbyś szefowi firmy nie pozwalał wchodzić do magazynu, żeby nie widział ile towaru jest na stanie...
Argument z włamaniem do kompa również nie jest trafiony. Prędzej się włamie na konto właściciela notatki niż na konto sysadmina.

Tylko właściciel notatki ma wgląd do swoich notatek, a admin do wszystkich. Poza tym - jak pisałem - stosuje się różne poziomy zabezpieczeń. Admin może zarządzać bazą, ale nie musi mieć wglądu w jej treść. Ma statystyki, ustawienia pamięci itp,. ale nie musi go interesować co jest konkretnie zapisane w tej bazie. - cerrato 2018-09-25 13:04
@cerrato: To nie jest dobre podejście do bezpieczeństwa danych, jak pisałem wcześniej sysadmina nie interesują dane w bazach, jeżeli tak jest to trzeba go zmienić. W końcu mając dostęp do infrastruktury dobierze się do danych, to jest ślepa uliczka. - Panczo 2018-09-25 13:28

Pozostało 580 znaków

Mały Orzeł
2018-09-25 13:28
Mały Orzeł
0

Mi glownie chodzi o taka sytuacje, ze np jestem uzytkownikiem jakiegos portalu, na ktorym moge sobie zapisywac swoje prywatne notatki i nie chce zeby ktokolwiek poza mna je czytal. Nie chce zeby jakis admin ogladal moje notaki bo np mam tam zapisane hasla itp.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0