PostgreSQL'de Güvenlik

Benzer belgeler
PostgreSQL İstemci Yetkilendirmesi ve Güvenliği

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

Nmap Sonuçlarının Yorumlanması

Program Kurulum. Turquaz Muhasebe. İçindekiler

FreeBSD Üzerinde PostgreSQL i 8.1 e Güncelleme

PostgreSQL'de Uygulamalı. (Streaming Replication. Standby)

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

Useroam Cloud Kurulum Rehberi

Ssl Vpn konfigurasyonunda öncelikle Sslvpn yapmasına izin vereceğimiz kullanıcıları oluşturuyoruz.

FreeBSD üzerinde PostgreSQL Temel Kurulum ve Yapılandırması

Vasco Kurulumu ve Active Directory Entegrasyonu

Cyberoam Single Sing On İle

Sophos SSL VPN Ayarları ve SSL VPN Clinet Programı Kurulumu

FortiGate & FortiAP WiFi Controller

Messenger Sunucularının Kurulum Dokümanı

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

Microsoft SQL Server 2005 Express Edition Hızlı Kurulum Dokümanı. 1. Administrator veya denki bir kullanıcı ile logon olunmalıdır.

Virtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

Layer 2 Güvenlik Yöntemleri(Bölüm1) SAFA Kısıkçılar / İTÜ BİDB 2010

Kullanıldığı Başlıca Siteler

Veri Tabanı Hafta Dersi

BLGM 354 DENEY 1 * GİRİŞ

Sun Solaris ve RBAC ( Role Based Access Control List)

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

KÜTÜPHANE YETKİLENDİRMELİ ÖNBELLEKLEME SERVİSİ

HP PROCURVE SWITCHLERDE 802.1X KİMLİK DOĞRULAMA KONFİGÜRASYONU. Levent Gönenç GÜLSOY

Yedek Almak ve Yedekten Geri Dönmek

VERİ TABANI YÖNETİM SİSTEMLERİ I

DRAYTEK VIGOR 3300V VPN Dial-in Fonksiyonu

DRAYTEK VIGOR 3300V VPN Dial-out Fonksiyonu

CHAPTER 9. DHCP Server

VERİ TABANI YÖNETİM SİSTEMLERİ-II

Oracle 12c Flex Cluster - Flex ASM

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

05 - Veritabanı Sızma Testleri

Useroam Cloud Kurulum Rehberi Sophos

VERİTABANI Veritabanı Yönetimi

Oracle da Güvenlik. Kerem ERZURUMLU A

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

Bunyamin Demir, <bunyamindemir at gmail dot com>, webguvenligi.org, 20/01/2011 ORACLE VERĠTABANI TRAFĠĞĠNĠN GÜVENLĠĞĠ

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

FortiGate (Terminal Server) Terminal Sunucu Üzerinden Gelen Kullanıcılar

INTERRA SIP SERVER KULLANIM KLAVUZU

Server Seviyesinde Güvenlik. SQL Server Kimlik Doğrulama Türleri. SQL Server Kimlik Doğrulama

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

BlackBerry Admin Service

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

FOUR FAİTH ROUTER LARDA IPSEC GÜVENLİ HABERLEŞME KILAVUZU

FortiGate Active Directory Uygulaması. v4.00-build /08

PostgreSQL Sunucu ve İstemci Komutları

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Kablosuz Ağlar İçin Misafir SSID Bağlantı Sistemi ve SMS Destekli Kullanıcı Doğrulama Modülü

Checkpoint SmartCenter da hızlı obje yaratmak

Free Cooling (Tibbo Ethernet Modüllü)

KABLOLU AĞLAR Switch tarafında 802.1x desteğini etkinleştirmek için aşağıdaki temel yapılandırma yapılır;

TCP/IP. TCP (Transmission Control Protocol) Paketlerin iletimi. IP (Internet Protocol) Paketlerin yönlendirmesi TCP / IP

Belge içeriğine ait tüm haklar yazarlara aittir. Kaynak gösterilmek suretiyle alıntı yapılabilir.

Smoothwall URL Filter Kurulumu

DBMAIL KURULUMU BELGESI (Howto Install Dbmail) Yazan: Ozgur Karatas

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Checkpoint SSL-VPN Kurulum Prosedürü. Checkpoint Endpoint VPN Client

SQL Server 2005 Kurulumu (Standart Edition)

LOGO TIGER WINGS KURULUMU VE AYARLARI

Data Programming SQL Language

Active Directory Nedir Ne Değildir?

Bacula Yedekleme Sistemi

Kampüs Ağında 5651 no lu Yasadan Kaynaklanan Gereklilikler Doğrultusunda Geliştirilen Bir IP Yönetim Stratejisi

PostgreSQL ve PL/pgSQL

Microsoft 20687A Configuring Windows 8

MIRACLE DATA WORKS KURULUM DOKÜMANI

EXCHANGE RAPORLAMA YAZILIMI ESASLARI

BEUN VPN Hizmeti. VPN Nedir?

ELEKTRONİK TİCARET in Güvenliği (e-

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Berk Demir Linux Kullanıcıları Derneği

Oracle da kullanılan veri tipleri:

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Açık Kod VPN Çözümleri: OpenVPN. Huzeyfe ÖNAL

Postgresql: Web Programcısı için Gündelik İpuçları Postgres 2014 Türkiye

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Pac Dosyası İle Proxy Kullanmak

1 STUNNEL NEDİR? 2 STUNNEL KURULUMU

LDAP VE WORDPRESS İLE

ADSL USB Router Geniş Bantlı Internet Erişimi ADSL Modem NAT Router USB Ağ Portu Hızlı Kurulum Rehberi

1 WINDOWS SERVER 2012 GENEL BAKIŞ 1 Giriş 1 Bu Kitapta 5 Çıkış Hikâyesi 6 Sürümler 7

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

İÇİNDEKİLER VII İÇİNDEKİLER

ELEKTRONİK SAĞLIK KAYITLARI GÜVENLİĞİNDE IEEE 802.1x STANDARDININ KULLANILMASI

YAYGIN OLARAK KULLANILAN ADSL MODEMLER VE ROUTER AYARLARI

PostgreSQL ve PL/pgSQL

Web Servis-Web Sitesi Bağlantısı

PocketRest Kullanımı

Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME - NT4 bağlantısına çok benzer.

PostgreSQL Veritabanı Sunucusu. Replikasyon Yazılımları: Slony-I Devrim GÜNDÜZ PostgreSQL Geliştiricisi

Web Uygulama Güvenliği Kontrol Listesi 2010

SAMBA Linux Dosya Sunucusu

Transkript:

PostgreSQL'de Güvenlik

Güvenlik! Şahap Aşcı Cooksoft sahap.asci@cooksoft.com.tr @sahapasci sahapasci 2

Veri 3

PostgreSQL Güvenlik Yaklaşımı PostgreSQL güvenlik güncellemeleri öncelikle küçük (minor) sürüm yükseltmelerinde yayınlanır. Yeni bir büyük (major) versiyon çıktığında bilinen bütün güvenlik sorunları düzeltilmiş olarak çıkar. 4

PostgreSQL Güvenlik Yaklaşımı PostgreSQL geliştirme grubu, güvenlik bilgilerinin doğruluğu, eksiksizliği ve kullanılabilirliği kullanıcılarımız için çok önemli olduğuna inanmaktadır. Güvenlik ile ilgili bir açık bulduğunuzu düşündüğünüzde; security@postgresql.org 5

PostgreSQL Güvenlik Özellikleri https://www.postgresql.org/about/featurematrix/#security 6

İçerik Ağ (Network) İşletim sistemi (host) PostgreSQL 1. İstemci Kimlik Denetimi (Client Authentication) 2. Veritabanı Rolleri (Database Roles) 3. Sütun Bazlı Yetkilendirme (Privileges) 4. Satır Bazlı Ayrıcalıklandırma (Row Security Policies) 5. pgcrypto 7

1 İstemci Kimlik Denetimi Client Authentication 8

Client Authentication Makine bazlı kimlik denetimi (Host Based Authentication) pg_hba.conf - kimlik denetimi ana dosyası Konfigurasyon parametresi: hba_file ident.conf - kullanıcı eşleştirme dosyası Konfigurasyon parametresi: ident_file 9

pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 10

pg_hba.conf TYPE DATABASE USER ADDRESS veya IP-ADDRESS + IP-MASK METHOD OPTIONS 11

pg_hba.conf - TYPE local - local unix socket istemci ve pg aynı makine - şifreleme yok host - TCP/IP socket ssl veya nossl istemci ve pg aynı veya farklı makine - ssl e istemci karar versin hostssl - TCP/IP socket ssl istemci ve pg aynı veya farklı makine - istemci ssl siz bağlanamasın hostnossl - TCP/IP socket nossl istemci ve pg aynı veya farklı makine - istemci ssl siz bağlansın 12

pg_hba.conf - DATABASE all - tüm veritabanları sameuser - kullanıcı ile aynı samerole (samegroup) replication @dosya_ismi - kullanıcının bağlı olduğu rol ile aynı - kullanmayın - replication protokolü - listeyi bu dosyadan al Virgülle ayırarak liste verebilirsiniz 13

pg_hba.conf - USER all - tüm kullanıcılar +roleismi - bu rol e bağlı tüm kullanıcılar @dosya_ismi - listeyi bu dosyadan al Virgülle ayırarak liste verebilirsiniz 14

pg_hba.conf - ADDRESS IPv4 0.0.0.0/0 - Her yerden 84.51.58.74/32 - Sadece bu IP den 10.1.2.0/24-10.1.2 ile başlayan IPv6 ::1/128 - localhost Host name localhost.cooksoft.com.tr - cooksoft hariç alt domainler * host name kullanacaksanız nscd (name service cache daemon) kullanın. 15

pg_hba.conf - IP-ADDRESS + IP-MASK 84.51.58.74/32 yerine 84.51.58.74 255.255.255.255 10.1.2.0/24 yerine 10.1.2.0 255.255.255.0 16

pg_hba.conf - METHOD trust reject scram-sha-256 md5 password ident - şifreleme - kapı dışarı - yeni geldi en güvenli - md5 veya scram-sha-256 - yalın düz şifre - işletim sistemi kullanıcısı ile eşleştir 17

ident.conf map-name system-username database-username dba sahap.asci postgres dba zekiye.aydemir postgres veya dba /^(.*)@cooksoft\.com\.tr$ postgres pg_hba.conf: host all all 192.168.10.0/24 ident map=dba 18

pg_hba.conf - METHOD peer ldap - yerel işletim sistemi kullanıcısı ile eşleştir - Ldap host db +developer 10.10.10.0/24 radius cert pam bsd ldap ldapserver="server1.net,server2.net" ldapprefix="domainname\" - Radius - SSL istemci sertifikası - PAM service - BSD Authentication service 19

scram-sha-256 Simple Authentication and Security Layer (SASL) SCRAM-SHA-256 Password_encryption (enum) md5 scram-sha-256 20

SSL Centos; postgresql.conf ssl=on openssl req -new -text -out cert.req Debian; postgresql.conf ssl=on openssl rsa -in privkey.pem -out cert.pem openssl req -x509 -in cert.req -text \ -key cert.pem -out cert.cert cp cert.pem $PGDATA/server.key cp cert.cert $PGDATA/server.crt chmod 600 $PGDATA/server.key chmod 600 $PGDATA/server.crt 21

2 Veritabanı Rolleri Database Roles 22

Veritabanı Rolleri CREATE ROLE SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION *BYPASSRLS NOBYPASSRLS CONNECTION LIMIT connlimit [ ENCRYPTED ] PASSWORD 'password' VALID UNTIL 'timestamp' IN ROLE role_name [,...] IN GROUP role_name [,...] ROLE role_name [,...] ADMIN role_name [,...] USER role_name [,...] SYSID uid * row level security 23

3 Sütun Bazlı Yetkilendirme Privileges 24

GRANT / REVOKE DATABASE CREATE, CONNECT, TEMPORARY, TEMP SCHEMA CREATE, USAGE TABLE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER 25

GRANT / REVOKE SEQUENCE USAGE (currval, nextval), SELECT, UPDATE FUNCTION EXECUTE GRANT role_name.. TO role_name WITH ADMIN OPTION 26

GRANT / REVOKE GRANT. ALL TABLES IN SCHEMA TO.. GRANT ALL SEQUENCES IN SCHEMA...TO.. PUBLIC CURRENT_USER SESSION_USER 27

GRANT / REVOKE Örnekler; GRANT SELECT ON mytable TO PUBLIC; GRANT SELECT, UPDATE, INSERT ON mytable TO admin; GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw; GRANT INSERT ON films TO PUBLIC; GRANT ALL PRIVILEGES ON kinds TO manuel; GRANT admins TO joe; GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_role; 28

public schema cooksoftdb=# \dn+ List of schemas Name Owner Access privileges Description --------+----------+----------------------+------------------------ public postgres postgres=uc/postgres+ standard public schema =UC/postgres (1 row) REVOKE CREATE ON SCHEMA public FROM PUBLIC; 29

4 Satır Bazlı Ayrıcalıklandırma Row Security Policies 30

Satır Bazlı Ayrıcalıklandırma postgresql.conf; row_security = on (istemci varsayılanı) on : kurallara (policy) uymayan kayıtları göstermez. off : kurallara uymayıp gösterilmeyen bir kayıt olursa hata fırlatır. 31

Satır Bazlı Ayrıcalıklandırma ALTER TABLE t1 ENABLE ROW LEVEL SECURITY; CREATE POLICY p1 ON t1 FOR SELECT USING (expression); CREATE POLICY p2 ON t1 FOR UPDATE USING (expression); current_user 32

Satır Bazlı Ayrıcalıklandırma TRUNCATE kapsam dışı 33

5 pgcrypto pgcrypto 34

pgcrypto Pgcrypto ne işe yarar? Kriptografik fonksiyonlar bu bileşen içerisinde toplanmıştır. Sağladığı fonksiyonlarda algoritma seçenekleri de verir. 35

pgcrypto CREATE EXTENSION pgcrypto; digest(data text, type text) returns bytea type: md5, sha1, sha224, sha256, sha384 ve sha512 gen_salt(type text [, iter_count integer ]) returns text Type: bf(72), md5(unlimited), xdes(8), des(8) crypt(password text, salt text) returns text UPDATE... SET pswhash = crypt('new password', gen_salt('md5')); 36

pgcrypto Örnek; UPDATE... SET sifre = crypt('şifre', gen_salt('md5')); SELECT (sifre = crypt('girilen şifre', sifre)) AS onaylandi FROM... ; 37

pgcrypto gen_random_uuid() returns uuid v4 UUID döner. uuid-ossp bileşenindeki uuid_generate_v4() fonksiyonundan daha hızlıdır. 38

Teşekkürler! Varsa soruları alalım? İletişim @sahapasci sahap.asci@cooksoft.com.tr 39

Referanslar PostgreSQL Dokümantasyonu; Security Information Client Authentication Database Roles Privileges Row Security Policies Pgcrypto 40