PostgreSQL High-Security



Ähnliche Dokumente
Aktuelle Entwicklungen

PostgreSQL in großen Installationen

Vorlesung Informationssysteme

MySQL 101 Wie man einen MySQL-Server am besten absichert

Benutzerverwaltung, Sichten und Datenintegrität

Indexing und Performance Tuning

PostgreSQL unter Debian Linux

Installationsanleitung für DoRIS unter Linux Inhaltsverzeichnis

Oracle: Abstrakte Datentypen:

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

3.17 Zugriffskontrolle

Laborübung - Task Manager (Verwalten von Prozessen) in Windows XP

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen.

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

Username and password privileges. Rechteverwaltung. Controlling User Access. Arten von Rechten Vergabe und Entzug von Rechten DBS1 2004

IV. Datenbankmanagement

Laborübung - Task-Manager (Verwalten von Prozessen) in Windows 7

Laborübung - Task Manager (Verwalten von Prozessen) in Windows Vista

Referenzielle Integrität SQL

HSR git und subversion HowTo

Views in SQL. 2 Anlegen und Verwenden von Views 2

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

How to install freesshd

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Datenmanagement in Android-Apps. 16. Mai 2013

Übungsblatt 8- Lösungsvorschlag


Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Informatik 12 Datenbanken SQL-Einführung

Oracle 10g Einführung

SQL-Injection. Seite 1 / 16

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Horstbox VoIP. Stefan Dahler. 1. HorstBox Konfiguration. 1.1 Einleitung

Beispielkonfiguration eines IPSec VPN Servers mit dem NCP Client

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

SQL. Fortgeschrittene Konzepte Auszug

PostgreSQL auf Debian System

Website freiburg-bahai.de

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

f Link Datenbank installieren und einrichten

PostgreSQL und memcached

Virtual Private Network. David Greber und Michael Wäger

desk.modul : WaWi- Export

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Arbeiten mit einem lokalen PostgreSQL-Server

DOKUMENTATION ky2help V 3.6 Servertests

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Universität Zürich Informatikdienste. SpamAssassin. Spam Assassin Go Koordinatorenmeeting 27. April

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Anbindung des eibport an das Internet

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Infinigate (Schweiz) AG. Secure Guest Access. - Handout -

BusinessMail X.400 Webinterface Gruppenadministrator V2.6

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Partitionieren über Rechnergrenzen hinweg

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL

LDAP Integration. Menüpunkt: System > Time To Do: Die Uhzeit/Zeitzone der SonicWALL mit dem AD-Server abgleichen

Installation unter LINUX mit PostgreSQL DB

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

2. Einrichtung der Verbindung zum Novell-NetStorage-Server

Beispiel 1: Filmdatenbank

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

MIN oder MAX Bildung per B*Tree Index Hint

Anleitungen zur Konfiguration verschiedener Mailclients und Informationen zu der -Infrastruktur von Hostpoint.

Interaktive Webseiten mit PHP und MySQL

OP-LOG

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

SQL (Structured Query Language) Schemata Datentypen

teamsync Kurzanleitung

MOUNT10 StoragePlatform Console

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Benachrichtigungsmöglichkeiten in SMC 2.6

LDAP-Anbindung der REDDOXX-Appliance

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

VPN IPSec Tunnel zwischen zwei DI-804HV / DI-824VUP+

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

Safexpert Oracle Datenbank Konnektor. Stand: IBF-Automatisierungs-und Sicherheitstechnik GmbH A-6682 Vils Bahnhofstraße 8

Archive / Backup System für OpenVMS

Datenbanken für Online Untersuchungen

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Was ist LDAP. Aufbau einer LDAP-Injection. Sicherheitsmaßnahmen. Agenda. LDAP-Injection. ITSB2006 WS 09/10 Netzwerkkonfiguration und Security

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

Bibliografische Informationen digitalisiert durch

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Rechnernetze. 6. Übung

Konfigurationsbeispiel ZyWALL USG

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

Einrichtung von VPN für Mac Clients bei Nortel VPN Router

Transkript:

PostgreSQL High-Security Mailserver Konferenz Berlin, 2014 Hans-Jürgen Schönig

PostgreSQL im Einsatz: - Storage Backend - Heinlein Mail Archiv - Archiveopteryx - DBMail - etc. - Authentication Backend - PAM Module - etc

PostgreSQL absichern: - PostgreSQL verfügt über mehrere Security Layer - IP ja / nein (= listen_addresses) - Host Based Authentication (= pg_hba.conf) - Berechtigungen auf Objekte (Schemata, Tabellen, Spalten, etc.) - etc. - SELinux und Verschlüsselung - PostgreSQL kann mit SELinux integriert werden - PostgreSQL ermöglicht Verschlüsselung via pgcrypto (Daten, etc.)

TCP ja / nein: - Welche Netzwerkinterfaces werden betrachtet? Database Server eth0 eth1 Client Client - IP ja / nein (= listen_addresses) - Nicht jedes Netzwerkinterface muss berücksichtigt werden. - Ideal wenn kein IP benötigt wird (nur UNIX Sockets)

pg_hba.conf: Netzwerksicherheit - Herkunftsorientierte Authentifizierung - je nach Herkunft einer Anfrage unterschiedliche Authentifizierungsmethode. - Mögliche Authentifizierungsmethoden - trust, reject, md5, password, gss, sspi, krb5, ident, peer, pam, ldap, radius, cert - mittels PAM sind auch andere Methoden möglich

Benutzer, Rollen, Gruppen... - User = Gruppe = Rolle - früher hatte PostgreSQL traditionell ein User -> Gruppe -> Welt Modell - mittlerweile basiert das System aus in sich verschachtelten Rollen - wesentlich flexiblere Struktur

Gedanken zum Thema User... - Annahme: Tätigkeit ist stabiler als Personal - Trennung zwischen echten Usern und Rechtelieferanten. - Rechte an abstrakte Rollen zuzuweisen ist langfristig einfacher und leichter zu administrieren. - Personen zu tauschen wird einfacher.

Rollen / User anlegen: test=# \h CREATE ROLE Command: CREATE ROLE Description: define a new database role Syntax: CREATE ROLE name [ [ WITH ] option [... ] ] where option can be: SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE CREATEUSER NOCREATEUSER INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION CONNECTION LIMIT connlimit [ ENCRYPTED UNENCRYPTED ] PASSWORD 'password' VALID UNTIL 'timestamp' IN ROLE role_name [,...] IN GROUP role_name [,...] ROLE role_name [,...] ADMIN role_name [,...] USER role_name [,...] SYSID uid

Rechte auf Databaseebene: - Jede Database kann getrennt gesichert werden: GRANT { { CREATE CONNECT TEMPORARY TEMP } [,...] ALL [ PRIVILEGES ] } ON DATABASE database_name [,...] TO { [ GROUP ] role_name PUBLIC } [,...] [ WITH GRANT OPTION ]

Rechte auf Schemaebene: - Schemata sind ein Namespace innerhalb einer Database: GRANT { { CREATE USAGE } [,...] ALL [ PRIVILEGES ] } ON SCHEMA schema_name [,...] TO { [ GROUP ] role_name PUBLIC } [,...] [ WITH GRANT OPTION ]

Rechte auf Tabellenebene: - Absicherung von Tabellen: GRANT { { SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER } [,...] ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [,...] ALL TABLES IN SCHEMA schema_name [,...] } TO { [ GROUP ] role_name PUBLIC } [,...] [ WITH GRANT OPTION ]

Rechte auf Spaltenebene: - Absicherung von einzelnen Spalten: GRANT { { SELECT INSERT UPDATE REFERENCES } ( column_name [,...] ) [,...] ALL [ PRIVILEGES ] ( column_name [,...] ) } ON [ TABLE ] table_name [,...] TO { [ GROUP ] role_name PUBLIC } [,...] [ WITH GRANT OPTION ]

Verschlüsselung: - PostgreSQL hat eine Extension namens pgcrypto - Alle relevanten Verschlüsselungsverfahren werden unterstützt: => SHA, md5, DES, Blowfish - Verschlüsselung kritischer Infos

SELinux Integration (1): - PostgreSQL kann mit SELinux integriert werden. - PostgreSQL unterstützt ein entsprechendes Kommando: SECURITY LABEL - Integration mit SELinux ermöglicht ein wesentlich höheres Level an Security

SELinux Integration (2): test=# \h SECURITY LABEL Command: SECURITY LABEL Description: define or change a security label applied to an object Syntax: SECURITY LABEL [ FOR provider ] ON { TABLE object_name COLUMN table_name.column_name AGGREGATE agg_name (agg_type [,...] ) DATABASE object_name DOMAIN object_name EVENT TRIGGER object_name FOREIGN TABLE object_name FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [,...] ] ) LARGE OBJECT large_object_oid MATERIALIZED VIEW object_name [ PROCEDURAL ] LANGUAGE object_name ROLE object_name SCHEMA object_name SEQUENCE object_name TABLESPACE object_name TYPE object_name VIEW object_name } IS 'label'

SELinux Integration (3): - Ein Beispiel: SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';

Security barriers (1): - Der Optimizer legt die Reihenfolge von Filtern fest - Das macht aus Performance Gründen sehr viel Sinn - Das kann zu einem Security Problem führen.

Security barriers (2): Aufgabe: CREATE TABLE t_test (id int4); INSERT INTO t_test SELECT * FROM generate_series(1, 20); CREATE VIEW v AS SELECT * FROM t_test WHERE id % 2 = 0 AND fast_func(id) = 0; Query: SELECT * FROM v WHERE slow_func(id) = 0; => Slow function is executed first

Security barriers (3): - Das Problem: - Ein User darf nur eine View aber nicht die darunter liegenden Daten sehen (Security Konzept) - Wenn diese Stored Procedures Debug Messages ausgeben, sieht die slow_func Daten, die sie nicht sehen soll. => Der User kommt illegal an Daten

Security barriers (4): - Die Lösung: CREATE VIEW v WITH (security_barrier) AS SELECT * FROM t_test WHERE id % 2 = 0 AND fast_func(id) = 0; - Der Optimizer darf die Reihenfolge nicht mehr blind vertauschen, um zu optimieren.

Any questions? Hans Jürgen Schönig hs@cybertec.at