20TD02U_ForAlle_Blooms_Side_61_Database_Sikkerhet - itnett/FTD02H-N GitHub Wiki
Sikkerhet i databaser er avgjørende for å beskytte sensitive data mot uautorisert tilgang, tap, eller korrupsjon. Vi vil dekke emnet "Sikkerhet" ved å bruke Blooms taksonomi, som vil ta deg fra grunnleggende forståelse til avansert bruk av sikkerhetsteknikker i databaser. Denne tilnærmingen inkluderer programmatiske, logiske og praktiske eksempler på hvordan sikkerhet kan implementeres og optimaliseres i et databasmiljø.
Videregående Skole Nivå
1. Kunnskap (Remembering)
Emne: Grunnleggende Konsepter for Datasikkerhet
- Logisk tilnærming: Start med å lære grunnleggende sikkerhetskonsepter som konfidensialitet, integritet og tilgjengelighet (CIA-triaden).
- Programmatisk tilnærming: Implementer enkel tilgangskontroll i en database ved hjelp av brukerkontoer og roller.
- Praktisk tilnærming: Opprett en brukerkonto i en database og gi den begrenset tilgang til å sikre dataene.
-- Opprette en bruker med begrenset tilgang i MySQL
CREATE USER 'begrenset_bruker'@'localhost' IDENTIFIED BY 'sterkt_passord';
GRANT SELECT ON skole.* TO 'begrenset_bruker'@'localhost';
2. Forståelse (Understanding)
Emne: Typer av Trusler og Beskyttelsestiltak
- Logisk tilnærming: Forstå de forskjellige typene trusler mot databaser, som SQL-injeksjon, brute-force angrep, og man-in-the-middle angrep, samt de grunnleggende metodene for å beskytte mot disse truslene.
- Programmatisk tilnærming: Implementer grunnleggende beskyttelse mot SQL-injeksjon ved å bruke forberedte spørringer i koden.
- Praktisk tilnærming: Skriv en spørring som beskytter mot SQL-injeksjon ved hjelp av parameterisert SQL.
import mysql.connector
# Koble til MySQL-databasen
conn = mysql.connector.connect(
host="localhost",
user="begrenset_bruker",
password="sterkt_passord",
database="skole"
)
cursor = conn.cursor()
# Bruk parameterisert SQL for å beskytte mot SQL-injeksjon
student_id = 1
cursor.execute("SELECT navn, fødselsdato FROM studenter WHERE id = %s", (student_id,))
resultat = cursor.fetchall()
for rad in resultat:
print(rad)
conn.close()
Høyskole Nivå
3. Anvendelse (Applying)
Emne: Implementering av Avanserte Sikkerhetstiltak
- Logisk tilnærming: Lær hvordan du implementerer avanserte sikkerhetstiltak som tofaktorautentisering (2FA), logging av sikkerhetshendelser, og kryptering av sensitive data.
- Programmatisk tilnærming: Implementer tofaktorautentisering ved å bruke et verktøy som Google Authenticator sammen med en database.
- Praktisk tilnærming: Implementer logging av alle påloggingsforsøk i databasen, og overvåk loggene for å oppdage uautorisert tilgang.
-- Aktivere logging av påloggingsforsøk i MySQL
SET GLOBAL log_warnings = 2;
SHOW VARIABLES LIKE 'log_warnings';
-- Eksempel på logging i applikasjonen
-- Python
import logging
# Sett opp logging
logging.basicConfig(filename='security.log', level=logging.INFO)
# Logge et påloggingsforsøk
def logg_inn_bruker(brukernavn, passord):
# Eksempel autentisering
if autentiser_bruker(brukernavn, passord):
logging.info(f'Påloggingsforsøk vellykket for bruker: {brukernavn}')
else:
logging.warning(f'Feilet påloggingsforsøk for bruker: {brukernavn}')
4. Analyse (Analyzing)
Emne: Sikkerhetsvurdering og Sårbarhetsanalyse
- Logisk tilnærming: Forstå hvordan du kan utføre en sikkerhetsvurdering av en database, inkludert identifisering av sårbarheter som kan utnyttes av angripere.
- Programmatisk tilnærming: Bruk verktøy som
sqlmap
for å utføre en sårbarhetsskanning på en database for å identifisere mulige SQL-injeksjonssårbarheter. - Praktisk tilnærming: Gjennomfør en manuell gjennomgang av sikkerhetsinnstillingene i en database, og vurder om den er tilstrekkelig sikret mot kjente trusler.
# Bruk sqlmap for å utføre en SQL-injeksjonstest på en applikasjon
sqlmap -u "http://localhost/sårbar_applikasjon?parameter=verdi" --dbs
Universitets Nivå
5. Syntese (Synthesizing)
Emne: Utvikling av En Fullstendig Sikkerhetsstrategi
- Logisk tilnærming: Design og implementer en fullstendig sikkerhetsstrategi som inkluderer fysisk sikkerhet, nettverkssikkerhet, databasetilgangskontroll, og databeskyttelse.
- Programmatisk tilnærming: Lag et sikkerhetssystem som automatiserer sikkerhetsprotokoller som kryptering, tilgangskontroll, og overvåking.
- Praktisk tilnærming: Implementer en helhetlig sikkerhetsløsning som beskytter en database både på server- og applikasjonsnivå.
# Eksempel på oppsett av en brannmurregel for å beskytte en databaseserver
sudo ufw allow from 192.168.1.0/24 to any port 3306 comment 'Tillat tilgang til MySQL fra lokalnettverket'
# Implementer en helhetlig løsning med kryptering, logging og tilgangskontroll
6. Evaluering (Evaluating)
Emne: Revisjon og Evaluering av Sikkerhet
- Logisk tilnærming: Lær hvordan du utfører en revisjon av sikkerhetstiltak i en database, og hvordan du evaluerer effektiviteten av implementerte sikkerhetstiltak.
- Programmatisk tilnærming: Bruk skript for å automatisere revisjon av sikkerhetsinnstillinger, som å verifisere at alle sensitive data er kryptert og at tilgangsrettigheter er korrekt konfigurert.
- Praktisk tilnærming: Utfør en revisjon av en eksisterende databasesikkerhet for å sikre at den overholder beste praksis og gjeldende forskrifter.
# Skript for å sjekke om alle sensitive data er kryptert i MySQL
mysql -u root -p -e "
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'skole' AND DATA_TYPE = 'varbinary';
"
# Verifiser at resultatet samsvarer med forventet krypteringsstrategi
7. Skapelse (Creating)
Emne: Implementering av Avansert Sikkerhetsarkitektur
- Logisk tilnærming: Design og implementer en avansert sikkerhetsarkitektur for et distribusjonssystem som inkluderer datakryptering, tilgangskontroll, sikkerhetslogging, og trusselovervåking.
- Programmatisk tilnærming: Implementer et integrert sikkerhetssystem som bruker moderne sikkerhetsverktøy og teknikker for å sikre hele infrastrukturen, inkludert databasen.
- Praktisk tilnærming: Sett opp et sikkerhetssystem som bruker en kombinasjon av TLS/SSL for kryptering av data i bevegelse, rollestyrt tilgangskontroll (RBAC), og kontinuerlig sikkerhetsovervåking.
# Oppretting av en avansert TLS/SSL-kryptering i MySQL
openssl req -newkey rsa:2048 -days 365 -nodes -keyout mysql-server.key -out mysql-server.crt -x509
# Konfigurer MySQL for å bruke SSL/TLS
[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/mysql-server.crt
ssl-key=/etc/mysql/mysql-server.key
# Bruk en moderne sikkerhetsløsning som snort for kontinuerlig trusselovervåking
sudo apt-get install snort
sudo snort -c /etc/snort/snort.conf -l /var/log/snort
Konklusjon
Denne fullstendige tilnærmingen til sikkerhet i databaser dekker alle nivåer fra videregående skole til universitetsnivå, basert på Blooms taksonomi. Ved å bruke praktiske, logiske og programmatiske eksempler, vil du utvikle en dyp forståelse av hvordan sikkerhet fungerer i databaser, hvordan du kan beskytte sensitive data, og hvordan du kan implementere og evaluere sikkerhetsprotokoller for å sikre en database mot trusler.
Denne veiledningen er designet for studenter, utviklere, og IT-fagfolk som ønsker en grundig forståelse av sikkerhet i databaser, og hvordan disse konseptene kan implementeres for å beskytte data og sikre integritet og tilgjengelighet.