2.3 Informix Security
2.3 Informix Security
2.3 Informix Security
7 Bootcamp
Informix Security
Information Management Technology Ecosystems
Database
Table
View Fragment in dbs1
LBAC
Column
Fragment in dbs2
• Routine privileges
• GRANT EXECUTE ON square ( x INT ) TO laura;
• REVOKE EXECUTE ON cancel_orders FROM dan;
• DataBlade privileges
• GRANT EXTEND TO chris;
• REVOKE EXTEND FROM chris;
Compare labels
and only allow access if they match
User
Data
Label Label
• Informix User
• Allows you to have one account for each person who performs a
role
• Can also unload to delimited file which can be loaded into table and
queried with SQL
1. R
equ
est
2. TG
Gr T
an
3. R tT
e que GT
4. G st ti
ran cke
t tic t for
ket serv
if au ice
tho
rize KDC
d to
5. Authorize with service ticket use
se rvic
e
Service
Example concsm.cfg
# csmname("client=clientlib, server=serverlib, "global_opts", "conn_opts")
GSSCSM("/work/informixdir/lib/csm/igsss11a.so", "", "c=1,i=1")
User 1
App server
Application Server User id
User 2
Problem
User 3
Often only one user id from the application server
Physical reconnects for each user would give bad
performance
Database auditing does not show which user
initiated an action
© 2010 IBM Corporation
Solution - Trusted Context
Trusted Context
User 1
User 1
User 2
Application Server User 3
User 2
User 3
Benefit:
Application server can switch the user id over one physical connection
Performance improvement
Database auditing shows the right user
© 2010 IBM Corporation
Trusted Context
• Audit records will show the switched user as the originator of the
operations
<module_type> <controlflag>
<module_path>
auth required
pam_unix.so
account required
pam_unix.so
password required
pam_unix.so
DBSERVERALIAS cheetah2pam
Database
• The user will use the priviliges of the user to which it has been
mapped (surrogate user priviliges)
• Specify UID and GID for users that do NOT exists on the
system
• The following maps user bob to the Informix internal user with
ID 101 and Group ID 10011
• sysusermap
• Maps an external user id to the local id to which it is mapped
(surrogate)
• syssurrogates
• Stores the local ids (surrogates) to which external users are
mapped
• syssurrogategroups
• Stores information about the local groups that are used
• Appendix
• Setting up SSL
• Setting up SSO
• More detailed LBAC
• Located in $INFORMIXDIR/etc
• Configure server name and aliases
• DBSERVERNAME lenexa_on
• DBSERVERALIASES menlo_on,portland_on
• Located in $INFORMIXDIR/etc
lenexa_on onsoctcp <hostname> lenexa_serv
menlo_on onsocssl <hostname> menlo_serv
portland_on drsocssl <hostname> portland_serv
• Located in /etc
lenexa_serv 1001/tcp
menlo_serv 1002/tcp
portland_serv 1003/tcp
• Located in $INFORMIXDIR/etc
• Configure fully qualified filename of client keystore
• SSL_KEYSTORE_FILE <local dir>/clikeydb.kdb
• Configure fully qualified filename of client stash file
• SSL_KEYSTORE_STH <local dir>/clikeydb.sth
• If conssl.cfg does not exist or if any of above
parameters are not configured, the client keystore
and stash file will default to:
$INFORMIXDIR/etc/client.kdb and
$INFORMIXDIR/etc/client.sth
$INFORMIXDIR/ssl/<servername>.kdb
$INFORMIXDIR/ssl/<servername>.sth
servername is value of DBSERVERNAME onconfig
parameter
• Appendix
• Setting up SSL
• Setting up SSO
• More detailed LBAC
Refer to the Informix, Version 11.50 SECURITY manual for more information
http://publib.boulder.ibm.com/infocenter/idshelp/v115/topic/com.ibm.sec.doc/SEC_wrapper.htm
• Appendix
• Setting up SSL
• Setting up SSO
• More detailed LBAC
Confidential Product
Development
Policy
Label
Policy
Label
Policy
Label
Confidential Product
Development
Policy
Label
Policy
Label
• CREATE TABLE T1
( C1 IDSSECURITYLABEL, { Always NOT NULL }
C2 INTEGER NOT NULL,
C3 CHAR(10) NOT NULL
COLUMN SECURED WITH director
) SECURITY POLICY company; Column Level Security
Security Policy for Table
ALTER TABLE T1
ADD(C1 IDSSECURITYLABEL),
MODIFY(C3 INTEGER NOT NULL
COLUMN SECURED WITH director),
ADD SECURITY POLICY company;
INSERT INTO EMP (empno, firstname, lastname) VALUES( '12345', 'John', 'Doe');
SELECT substr(seclabel_to_char('access_employee_policy',
SL),1,30), empno, firstname, lastname
FROM emp;
Policy
Label