osg authz components

21
OSG AuthZ components Gabriele Carcassi Presented by Dane Skow

Upload: jody

Post on 07-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

OSG AuthZ components. Gabriele Carcassi Presented by Dane Skow. Status. PRIMA/GUMS included in OSG Release 0.2 as an optional function All OSG VOs recommended to enable VOMS proxy generation (not required) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OSG AuthZ components

OSG AuthZ components

Gabriele CarcassiPresented by Dane Skow

Page 2: OSG AuthZ components

Status

• PRIMA/GUMS included in OSG Release 0.2 as an optional function

• All OSG VOs recommended to enable VOMS proxy generation (not required)

• Use and interpretation of VOMS proxies not widely understood. Heavily used in places (eg. ATLAS production)

Page 3: OSG AuthZ components

Full privilege scenario

User

voms-proxy-init

gums-host

VOMS

siteGUMSServer

Gatekeeper

grid3-user…txt

PRIMA

centralized mapping account pool/ dynamic mappings (broken by accounting) role/group based mappings

Submission site

Execution site

VOs

Page 4: OSG AuthZ components

Compatibility scenario

User

grid-proxy-init

gums-host

VOMSAdmin

siteGUMSServer

gums-hostgums-host

gums-host

Gatekeeper grid-mapfile

grid3-user…txt

both maps

centralized mapping account pool dynamic mappings role/group based mappings

Submission site

Execution site

VOs

Page 5: OSG AuthZ components

“Ye olde Grid3” setup

User

grid-proxy-init

Gatekeeper grid-mapfile

edg-mkgridmap VOMSAdmin

grid3-user…txt

centralized mapping account pool dynamic mappings role/group based mappings

Submission site

Execution site

VOs

Page 6: OSG AuthZ components

PRIMA module

• It’s a C library that implement the gatekeeper callout– Gets the credentials– Validates certificate and attributes– Formats a SAML message and sends it to

GUMS using OGSA-AuthZ protocol– Parses the response– Returns the uid to the gatekeeper

• Distributed as part of VDT

Page 7: OSG AuthZ components

Details

• PRIMA currently sends only the first VOMS FQAN, not the whole list encoded in the certificate.

• GUMS makes decisions only on one FQAN.

Page 8: OSG AuthZ components

Attribute verification

• PRIMA can verify the VOMS attributes, but typically we do not do that– In OSG we lack a mechanism to easily distribute the

certificates of the VO servers– GUMS verifies the presence in the VO

• periodically downloads the full list of users from the VO server (has to do that for maps generation)

• prevents forging a fake VO• foresee to disable in case attribute verification is done at the

gatekeeper end, and no maps are needed

– Should attribute verification be delegated to the server?

Page 9: OSG AuthZ components

PRIMA Complaints

• Mainly about the log– Not clear error information (the actual GUMS

errors are not passed through the protocol)– Lacks a one liner entry with all information

when successful (there is one, but, for example, lacks the FQAN)

Page 10: OSG AuthZ components

What is GUMS?

• GUMS purpose is to manage the mapping between Grid Credentials to Site credentials– Centralized: one GUMS per site, one

configuration file for all gatekeepers/services– PDP: enforcement is done at the

gatekeeper/service (through grid-mapfiles or callouts)

– Customizable: designed to be integrated with other site systems with little effort

Page 11: OSG AuthZ components

Centralized management

• Designed by and for a site with a number of heterogeneous gatekeepers– For example, BNL GUMS has more than 10

gatekeepers (4 from STAR, 1 PHENIX, 6 ATLAS) + other ATLAS services (dCache, DIAL, …)

– Some of these are OSG, some are test machines, some needs special test maps, …

– One place of configuration allows control and consistency

• (For a small site, with one gatekeeper and 20 nodes, that is fine with a single account per VO, we currently recommend mapfiles and edg-mkgridmap.)

Page 12: OSG AuthZ components

GUMS overviewTomcat server

GUMSDB

Businesslogic

VO…

VOVOMS-Adminldap VO

WebUI

(JSP)

Cmdline

AdminWS

(Axis)

Persistence(hibernate,

ldap)

PRIMA

Webbrowser

Glite trustmanager

XML configuration

AuthZWS

WS = Web ServiceUI = User Interface

SAML + obligationsover SOAP/HTTPS

SOAP/HTTPS

HTTPS

filesystem

Page 13: OSG AuthZ components

GUMS Policy example

<gums> <persistanceFactories> <persistenceFactory name='mysql' className='gov.bnl.gums.hibernate.HIbernatePersistanceFactory' /> </persistanceFactories> <groupMappings> <groupMapping name='usatlasPool'> <userGroup className='gov.bnl.gums.LDAPGroup' server='grid-vo.nikhef.nl' query='ou=usatlas,o=atlas,dc=eu-datagrid,dc=org‘ persistanceFactory='mysql' name='usatlas' /> <compositeAccountMapping> <accountMapping className='gov.bnl.gums.ManualAccountMapper' persistanceFactory='mysql' name='bnlMapping' /> <accountMapping className='gov.bnl.gums.AccountPoolMapper' persistanceFactory='mysql' name='bnlPool' /> <accountMapping className='gov.bnl.gums.GroupAccountMapper' groupName='usatlas1' /> </compositeAccountMapping> </groupMapping> <groupMapping name='star'> <userGroup className='gov.bnl.gums.VOMSGroup' url='https://vo.racf.bnl.gov:8443/edg-voms-admin/star/services/VOMSAdmin‘ persistanceFactory='mysql' name='star' sslCertfile='/etc/grid-security/hostcert.pem' sslKey='/etc/grid-security/hostkey.pem'/> <compositeAccountMapping> <accountMapping className='gov.bnl.gums.ManualAccountMapper' persistanceFactory='mysql' name='bnlMapping' /> <accountMapping className='gov.bnl.gums.NISAccountMapper' jndiNisUrl='nis://nis2.somewhere.com/rhic.bnl.gov' /> </compositeAccountMapping> </groupMapping> … </groupMappings> <hostGroups> <hostGroup className="gov.bnl.gums.CertificateHostGroup" cn='star*.somewhere.gov' groups='star' /> <hostGroup className="gov.bnl.gums.CertificateHostGroup" cn='gums.somewhere.gov' groups='star,phenix,usatlasPool' /> … </hostGroups></gums>

Page 14: OSG AuthZ components

GUMS Authorization

• GUMS admin can perform any operation through web service and web ui door

• Host can only perform read operations (map generation and mapping requests) for itself

• Configuration can be changed through filesystem only (automatically reloaded when changed)

Page 15: OSG AuthZ components

GUMS performance

• BNL production server gives ~30 req/sec… – Not that good– Is not the bottleneck right now, as the production

gatekeeper can only give ~5 req/sec

• Performance test show that– Overall delay (client-server-client) is ~220ms– The GUMS logic is responsible for up to 20ms– The rest is plain AXIS SOAP + SSL– It’s not glite trustmanager’s fault either…

Page 16: OSG AuthZ components

GUMS performance

• JClarens group confirmed this while comparing SOAP with XML-RPC– XML-RPC without SSL: 373 req/sec – with SSL: 274– SOAP without SSL: 218 req/sec – with SSL: 23– 10 times slower!

• Is it SOAP? Is it Axis implementation?• At least, GUMS can run on a cluster

– All state resides in the database, transactions are used, no session transfer needed, no cluster cache needed

– Almost all… the configuration file is on filesystem, an needs to be updated on all machines (at the same time)

Page 17: OSG AuthZ components

GUMS Complaints

• The configuration file is difficult– It usually takes people a few tries– We should simplify it– We should probably have ways to “share”

parts of it (contact a location to get standard OSG groups definitions?)

Page 18: OSG AuthZ components

Storage AuthZ (not in prod)

siteGUMSServer

Gatekeeper

GRAMgridFTP

PRIMA

Execution site

SRM/dCache

gPLAZMAStorage

AuthorizationService

Adds AuthZ params that are dCache specific. XACML policy.

SAML + obligationsover SOAP/HTTPS

Page 19: OSG AuthZ components

Storage AuthZ

• gPlazma is dCache authorization infrastructure, which can be set to contact the Storage Authorization Service– Distributed as part of dCache, Beta quality

• The Storage AuthZ Service speaks the same SAML GUMS does, and is configured with a XACML policy– Contact GUMS to retrieve the mapping– Adds other AuthZ parameters (i.e. gid, user home

path, …)– Prototype level

Page 20: OSG AuthZ components

Other issues: maps

• GUMS is able to generate grid-mapfiles and also an inverse accounting map used by OSG accounting– Want to move away from them: creating a map

means exploring all the policy, which breaks dynamic account mapping (i.e. for a pool, we have to assign accounts to everybody)

• Assumption: we believe that static inverse maps (uid-> DN) are not desirable– For example, in accounting what you really need is a

history of what uid was assigned to what DN. That changes with time. It’s better handled by realtime log.

Page 21: OSG AuthZ components

Conclusions

• GUMS and PRIMA are deployed in production on a number of OSG sites

• Privilege project depends on the following formats:– VOMS Proxy format (PRIMA)– AuthZ request: SAML + obligations (everything)

• Just beginning requirements Activity on Policy, Publication and Trust (Stu Fuess, chair)