luktom.net
  • blog
  • kontakt
  • english





SmogBot – kilka dobrych praktyk z zakresu bezpieczeństwa bazy danych

28 mar, 2017
Chatboty, Daj się poznać 2017, SQL Server
Brak komentarzy
Odsłony : 4119

Tworząc bazę danych dla SmogBota, mimo że jest ona stosunkowo niewielka jeśli chodzi o złożoność i ilość obiektów, postanowiłem zaimplementować kilka dobrych praktyk i pokazać w jaki sposób można zwiększyć bezpieczeństwo takowej bazy, nie męcząc się zbytnio :)

Całość mechanizmu jest prosta i przejrzysta a opiera się to na schema bazodanowych.

Przykładowo, baza SmogBota ma trzy schema:

  • dbo – tutaj znajdują się tabele z danymi oraz wewnętrzne funkcje pomocnicze. W większy projektach nie używam dbo, tworzę natomiast kilka schema które grupują poszczególne obszary systemu.
  • Bot – w tym schema zawarte są wszystkie obiekty (w praktyce tylko widoki i stored procedures), do których powinien mieć dostęp bot.
  • Updater – jak wyżej, tyle że dotyczy updatera do aktualizacji danych pomiarowych.

Schema tworzymy poprzez polecenie:

CREATE SCHEMA [Bot] AUTHORIZATION [dbo];

To sprawia, że wszelkie obiekty w ramach schema Bot będą miały dostęp do obiektów w schema dbo (w dość dużym uproszczeniu).

W większych systemach lubię tworzyć takowe schema dla każdego komponentu, który ma mieć dostęp do bazy danych – to zapewnia po pierwsze przejrzystość – łatwo sprawdzić do czego ma dostęp dany komponent, a po drugie – komponent ma dostęp tylko do rzeczy zawartych w jego schema, a więc mamy pewność, że nie będzie miał wpływu na resztę bazy.

Dla każdego schema tworzę zazwyczaj osobny login, np. dla bota:

CREATE LOGIN [Bot] WITH PASSWORD = 'hasło';
GO;

Oczywiście, w miarę dostepności, polecam tworzenie loginów w oparciu o Active Directory i Managed Service Accounts, ale to temat na inny wpis.
Natępnie tworzę odpowiadającego mu użytkownika w danej bazie danych:

USE [SmogBot];
GO;

CREATE USER [Bot] FROM LOGIN [Bot] WITH DEFAULT_SCHEMA = [Bot];

A następnie przyznaję mu uprawnienia do odpowiadającego mu schema:

GRANT SELECT ON SCHEMA::Bot TO Bot;
GRANT EXECUTE ON SCHEMA::Bot TO Bot;

Efektem powyższych poleceń jest stan , który umożliwia dostęp tylko do niezbędnych dla danego loginu obiektów bazodanowych z minimum uprawnień.
Należy także zwrócić uwagę, że mechanizm ten w przyszłości nie wymaga żadnej dodatkowej opieki – wystarczy tworzyć obiekty w odpowiednim schema i poszczególne komponenty mają od razu do nich dostęp.

System powyższy można oczywiście rozbudować np. o dodatkowe role bazodanowe, ale to temat na inny wpis, do większości prostych zastosowań powyższy mechanizm sprawdzi się doskonale :)



Tagi :   dsp2017smogbotsql server

Powiązane wpisy

  • SmogBot – zapraszam do korzystania :)

  • Anatomia chatbota – część 2: podstawowe operacje

  • Anatomia chatbota – część 4: system dialogów Bot Buildera w praktyce

  • SmogBot – ostatnia prosta :)

  • Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone