Deploying PostgreSQL in a Windows Enterprise

36
1 Deploying PostgreSQL in a Windows Enterprise Magnus Hagander [email protected] PGCon 2008 Ottawa, Canada May 2008

Transcript of Deploying PostgreSQL in a Windows Enterprise

Page 1: Deploying PostgreSQL in a Windows Enterprise

1

Deploying PostgreSQL in a Windows Enterprise

Magnus [email protected]

PGCon 2008

Ottawa, CanadaMay 2008

Page 2: Deploying PostgreSQL in a Windows Enterprise

2

Agenda

DefinitionInstallationActive Directory

Authentication - integratedAuthentication - LDAPData access

Monitoring

Page 3: Deploying PostgreSQL in a Windows Enterprise

3

What is a Windows Enterprise?

Servers Clients

Page 4: Deploying PostgreSQL in a Windows Enterprise

4

What is a Windows Enterprise?

Servers Clients

WE

B

Page 5: Deploying PostgreSQL in a Windows Enterprise

5

What is a Windows Enterprise?

Servers Clients

Active

Dire

ctory

Page 6: Deploying PostgreSQL in a Windows Enterprise

6

What is a Windows Enterprise?

Servers Clients

Active

Dire

ctory

Page 7: Deploying PostgreSQL in a Windows Enterprise

7

Agenda

DefinitionInstallationActive Directory

Authentication - integratedAuthentication - LDAPData access

Monitoring

Page 8: Deploying PostgreSQL in a Windows Enterprise

8

MSI installerIntegrates with existing productsInstalls all dependenciesCreate account, sets permissionsSupports silent installServer only, Server+client, Client only

Installation

Page 9: Deploying PostgreSQL in a Windows Enterprise

9

”xcopy deployment”No registry entries required!

Well, there's ODBC...

binaries-no-installer.zipDependencies, account, permissionsCustom build

Installation

Page 10: Deploying PostgreSQL in a Windows Enterprise

10

Agenda

DefinitionInstallationActive Directory

Authentication - integratedAuthentication - LDAPData access

Monitoring

Page 11: Deploying PostgreSQL in a Windows Enterprise

11

Active Directory authentication

”Integrated authentication”Already logged in, why do it again?

Fat clientsWeb apps usually uses password to db

Very common for SQL Server/AccessStill need to create db user!

Page 12: Deploying PostgreSQL in a Windows Enterprise

12

Active Directory authentication

Client interface dependentlibpq or ”built on libpq”ODBCJDBCnpgsql

Page 13: Deploying PostgreSQL in a Windows Enterprise

13

Active Directory authentication

Windows-to-windows trivial

host all all 0.0.0.0/0 sspi

Set your AD policies!Always included

Page 14: Deploying PostgreSQL in a Windows Enterprise

14

Active Directory authentication

Windows-to-unix a bit more workKerberos only

Page 15: Deploying PostgreSQL in a Windows Enterprise

15

Kerberos 101

Cross platform, standards-based, secure, distributed authentication

Shared secrets between hostsMaintained and controlled by KDCTrusted ticketsSingle sign-on

Page 16: Deploying PostgreSQL in a Windows Enterprise

16

Kerberos 101

2. Ticket-granting-ticket (TGT)

1. Login request

KDC

Server

Client

Page 17: Deploying PostgreSQL in a Windows Enterprise

17

Kerberos 101

6. Ticket POSTGRES@FOO

5. Ticket request POSTGRES@FOO

7. Access request w ticket3. Access request

4. Requires Kerberos ticket

KDC

Server

Client

Page 18: Deploying PostgreSQL in a Windows Enterprise

18

Kerberos 101

6. Ticket POSTGRES@FOO

5. Ticket request POSTGRES@FOO

7. Access request w ticket3. Access request

4. Requires Kerberos ticket

KDC

Server

Client

Page 19: Deploying PostgreSQL in a Windows Enterprise

19

Active Directory authentication

Windows-to-unix a bit more workKerberos only, requires service principals

AD enforces non-standard name

Basic Kerberos first! /etc/krb5.conf

[libdefaults] default_realm = DOMAIN.COM [domain_realm] domain.com = DOMAIN.COM .domain.com = DOMAIN.COM

Page 20: Deploying PostgreSQL in a Windows Enterprise

20

Active Directory authentication

Verify with kinit/klistkinit [email protected]

Page 21: Deploying PostgreSQL in a Windows Enterprise

21

Active Directory authentication

Install required build packages./configure --with-gssapiBuild + install as usualInitdb as usual

Page 22: Deploying PostgreSQL in a Windows Enterprise

22

Active Directory authentication

Create service principal (ordinary user)

Page 23: Deploying PostgreSQL in a Windows Enterprise

23

Active Directory authentication

Create Kerberos principal mappnig ktpass

-princ POSTGRES/[email protected] -crypto DES-CBC-MD5 -mapuser lab83 -pass FooBar991 -out postgres.keytab

Page 24: Deploying PostgreSQL in a Windows Enterprise

24

Active Directory authentication

Verify account is mapped

Page 25: Deploying PostgreSQL in a Windows Enterprise

25

Active Directory authentication

postgresql.conf

listen_addresses = '*'krb_server_keyfile = '/var/pgsql/data/postgres.keytab'krb_srvname = 'POSTGRES'

pg_hba.conf

host all all 0.0.0.0/0 gss

Page 26: Deploying PostgreSQL in a Windows Enterprise

26

Active Directory authentication

Client side principal nameEnvironment: PGKRBSRVNAMEConnection string: krbsrvname

Needed on both Windows and Unix

Page 27: Deploying PostgreSQL in a Windows Enterprise

27

Active Directory authentication

Client side principal nameEnvironment: PGKRBSRVNAMEConnection string: krbsrvname

Needed on both Windows and Unix

Page 28: Deploying PostgreSQL in a Windows Enterprise

28

LDAP Authentication

For clients that don't support GSS/SSPIIf you actually want passwordsLooks like password prompt to clientpg_hba.conf

host all all 0.0.0.0/0 ldap ”ldap://dc.domain.com/dc=domain,dc=com;DOMAIN\”

Page 29: Deploying PostgreSQL in a Windows Enterprise

29

Agenda

DefinitionInstallationActive Directory

Authentication - integratedAuthentication - LDAPData access

Monitoring

Page 30: Deploying PostgreSQL in a Windows Enterprise

30

Access AD data

dblink-ldap (pgfoundry)Build from source onlyCreate VIEWs of LDAP dataRead-only

Page 31: Deploying PostgreSQL in a Windows Enterprise

31

Access AD data

CREATE VIEW users AS

SELECT * FROM dblink_ldap( 'dc.domain.com', 'CN=Users, DC=domain, DC=com', E'DOMAIN\\User', 'password', '(objectClass=user)', 'distinguishedName,cn,displayName')

t(dn, cn, displayName)

Page 32: Deploying PostgreSQL in a Windows Enterprise

32

Access AD data

postgres=# SELECT * FROM users;

dn | cn | displayname

-----------------------------------------------------------------------------

CN=mha,CN=Users,DC=domain,DC=com | mha | Magnus Hagander

CN=Administrator,CN=Users,DC=domain,DC=com | Administrator | Admin

(2 rows)

Page 33: Deploying PostgreSQL in a Windows Enterprise

33

Agenda

DefinitionInstallationActive Directory

Authentication - integratedAuthentication - LDAPData access

Monitoring

Page 34: Deploying PostgreSQL in a Windows Enterprise

34

Monitoring

Performance Monitor for system parameters

pgsnmpd (unix only)pg_stat_xyz views

Page 35: Deploying PostgreSQL in a Windows Enterprise

35

Future directions

schannel encryptionschannel certificate authenticationBetter monitoring support

pgsnmpd on windows ornative performance monitor plugin

Page 36: Deploying PostgreSQL in a Windows Enterprise

36

Thank you!

Questions?