Przykłady zabezpieczeń poziomu wiersza PostgreSQL

Przykłady zabezpieczeń poziomu wiersza PostgreSQL

PostgreSQL był szeroko stosowanym systemem bazy danych na całym świecie i jest wysoce zabezpieczony. PostgreSQL przyszedł z dwoma rodzajami papierów wartościowych, e.G. poziom kolumny i poziom wiersza. Naszym głównym tematem jest bezpieczeństwo na poziomie wiersza w PostgreSQL. Mówi się, że bezpieczeństwo na poziomie wiersza jest prostym i bardzo potrzebnym narzędziem w PostgreSQL Security. Został użyty do kontrolowania dostępu użytkownika do niektórych tabel i rekordów na podstawie niektórych zasad. Stosując bezpieczeństwo na poziomie wiersza, ograniczymy użytkowników do przeglądania lub manipulowania rekordami tabeli zawierającej dane dotyczące nich zamiast wprowadzania zmian w rekordach innych użytkowników.

Musisz otworzyć powłokę SQL dla PostgreSQL 13 od paska początkowego systemu Windows 10. Po otwarciu otrzymasz czarny ekran skorupy SQL. Dodaj nazwę serwera, nazwę bazy danych, numer portu, nazwę użytkownika i hasło, gdy zostaniesz zapytany. Shell SQL będzie gotowy do dalszego użycia.

Użytkownik bazy danych „Postgres”Jest już superuser Twojego systemu. Jeśli nie jesteś zalogowany z superuseru, musisz się z niego zalogować. Metodą logowania z konta Superuser jest użycie poniższej komendy w skorcie z znakiem „\ c” o nazwie bazy danych, które ma być używana, e.G. Postgres wraz z nazwą superuser, e.G. Postgres. Może wymagać hasła do konta, jeśli nie jest jeszcze zalogowane.

Utwórz tabelę:

Musisz utworzyć nową tabelę w superuser i bazie danych „Postgres”. Więc użyliśmy Utwórz tabelę zapytanie, aby utworzyć tabelę „test”Z niektórymi kolumnami, jak pokazano.

Po utworzeniu stołu „test”, Włożyliśmy w nim trzy rekordy dla 3 różnych użytkowników, e.G. AQSA, Raza i Rimsha, za pośrednictwem „WŁÓŻ W”Instrukcja w skorupce.

Tabela i jego rekordy można zobaczyć na ekranie SQL Shell za pomocą WYBIERAĆ zapytanie.

Utwórz użytkowników:

Pracowaliśmy w SQL Shell w teście tabeli z Superuser ”Postgres”, Ale musimy utworzyć innych użytkowników, jak wspomniano w tabeli, e.G. AQSA, Raza i Rimsha. Więc użyliśmy STWÓRZ UŻYTKOWNIKA polecić to podczas przypisywania hasła. Następnie przyznaliśmy WYBIERAĆ uprawnienia do wszystkich tych użytkowników po utworzeniu.

Kiedy użyliśmy nowo utworzonych użytkowników do pobierania rekordów tabeli ”test”, Wyjście pokazuje, że użytkownik może łatwo uzyskać dostęp do wszystkich wierszy z tabeli zamiast rzędu o swojej nazwie. Poniższe wyjście pokazuje wyjście do dostępu do testu tabeli z użytkownikiem „AQSA”.

Outlood do poniżej pokazuje wyjście do dostępu do testu tabeli z użytkownikiem ”Raza".

Poniższe wyjście dotyczy testu tabeli z użytkownikiem „Rimsha".

Utwórz zasady:

Celem bezpieczeństwa na poziomie wiersza jest ograniczenie użytkowników tylko w celu uzyskania rekordów posiadających informacje dotyczące siebie. Chcemy zabezpieczenia na poziomie wiersza, aby użytkownicy nie mogli pobierać rekordów innych użytkowników. Zacznijmy od zalogowania się od superuser ”Postgres”W skorupce SQL.

Po zalogowaniu wykorzystaliśmy instrukcję Utwórz pokazaną poniżej, aby utworzyć zasady o nazwie „nowy" na stole "test". Użyliśmy „WSZYSTKO„Słowo kluczowe tutaj reprezentujące wszystkie przywileje, e.G. Wstaw, aktualizuj, modyfikuj itp. Możesz to zrobić, dodając wkładkę, wybierz, aktualizuj lub dowolne słowo kluczowe. Rola publiczna wskazuje na wszystkie role. Możesz również określić tutaj użytkownika lub rolę. Używamy „ZA POMOCĄ”Wyrażenie tutaj. Porównuje to aktualnie zalogowaną nazwę użytkownika z tabelą „Test” w kolumnie „Nazwa”.

Włącz bezpieczeństwo poziomu wiersza:

Tylko tworzenie zasad i zastosowano do ról i tabel nie wystarczy, aby uzyskać zmianę. Musisz włączyć bezpieczeństwo na poziomie wiersza w tabeli „test”, który ma ustawione zasady tuż przed. Użyliśmy więc superuser „Postgres„Aby włączyć bezpieczeństwo na poziomie wiersza na stole”test„Z Zmień tabelę polecenie pokazane na zrzuconym zrzucie ekranu.

Jak obecnie zalogowaliśmy się z superuser „Postgres", Komenda "WYBIERAĆ”Wraz ze słowem kluczowym„aktualny użytkownik”Pokazuje nazwę użytkownika w wyjściu. Po uzyskaniu dostępu do tabeli za pomocą polecenia Select podczas zalogowania się z superuseru, pokazuje wszystkie rekordy tabeli „test”. Oznacza to, że zasady i bezpieczeństwo na poziomie wiersza nie wpływa na superuser.

Teraz będziemy logować się z nowych ról stworzonych jakiś czas temu. Zalogowaliśmy się od użytkownika „AQSA”I sprawdziłem aktualnie zalogowanego użytkownika. Powraca „AQSA”Jako bieżący użytkownik. Po pobraniu stołu „test”Records według polecenia Select, zwraca rzędy należące tylko do nazwy użytkownika”AQSA„Dopasowane do kolumny„ Nazwa ”w tabeli. Wszystkie pozostałe wiersze zostały zabezpieczone i nie mogą być wyświetlane przez użytkownika ”AQSA".

Zalogujmy się od drugiego użytkownika ”Raza”Z terminalu i sprawdź bieżącego użytkownika. Wrócił „Raza”Jako bieżący użytkownik. Wyjście dla polecenia Select pokazuje tylko rekord dla użytkownika „Raza" ze stołu "test".

Bezpieczeństwo na poziomie wiersza działało tak samo na użytkowniku ”Rimsha”Zgodnie z obrazem wyjściowym poniżej.

Obejmowanie bezpieczeństwa na poziomie wiersza:

Uprawnienia do omijania mogą być wykorzystane do prześladowania bezpieczeństwa na poziomie wiersza przez niektórych superusatorów i innych uprzywilejowanych użytkowników. Użytkownik posiadający uprawnienia do obejścia bezpieczeństwa na poziomie wiersza może unieważnić bezpieczeństwo na poziomie wiersza dla dowolnej tabeli i dostępu do rekordów innych użytkowników. Tak więc najpierw zalogowaliśmy się z konta Superuser w terminalu.

Następnie zmieniliśmy prawa użytkownika „Raza”Zastosowane na nim polecenie Alter User. Przypisaliśmy użytkownikowi „Raza”, uprawnienia do ominięcia bezpieczeństwa na poziomie wiersza przez „Bypassrls”Wspomniane w zapytaniu o alter User, jak pokazano.

Zaloguj się od użytkownika „Raza”Od skorupy. Możesz zobaczyć, że użytkownik „Raza” może teraz przewyższyć zasady bezpieczeństwa na poziomie wiersza i może łatwo zobaczyć i modyfikować rekordy wszystkich innych użytkowników z tabeli ”test”Za pośrednictwem zapytania.

Zasady upadku:

Zalogujmy się ponownie od superusera, aby porzucić politykę „nowy„Został zastosowany w tabeli„ test ”.

Polecenie polityki upuszczenia zostało użyte w powłoce do porzucenia zasad nazwanych „nowy„Z tabeli„ test ”.

Po upuszczeniu zasad, zalogowaliśmy się od jednego z użytkowników, aby sprawdzić, czy nadal działa, czy nie. Odkryliśmy, że kapanie zasad nie mogło zmienić użytkownika ”AQSA”Lub inni w celu uzyskania zapisów tabeli„test". Dzieje się tak, ponieważ nie wyłączyliśmy jeszcze bezpieczeństwa na poziomie wiersza na stole.

Wyłącz bezpieczeństwo na poziomie wiersza:

Aby wyłączyć bezpieczeństwo na poziomie wiersza na stole „test”, Zaloguj się jako superuser i użyj zapytania pokazanego w SNAP poniżej.

Po zalogowaniu od drugiego użytkownika będziesz mógł łatwo przeglądać i zmodyfikować rekordy.

Wniosek:

Ten samouczek zawiera krótką demonstrację bezpieczeństwa na poziomie wiersza używanym do ograniczenia użytkowników po dostępie do danych do celów bezpieczeństwa. Bezpieczeństwo na poziomie wierszy zostało osiągnięte poprzez tworzenie użytkowników, zasady, a następnie umożliwianie bezpieczeństwa. Artykuł zawiera również wdrożenie dotyczące porzucenia zasad i wyłączenia bezpieczeństwa na poziomie wiersza. Dlatego ten artykuł jest pakietem dodatkowym dla naszych użytkowników do robienia wszystkiego, od umożliwienia wyłączenia bezpieczeństwa na poziomie wiersza w ramach jednego ujęcia.