scalla authorization xrootd /cmsd andrew hanushevsky slac national accelerator laboratory cern...

17
Scalla Scalla Authorization Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08 http:// xrootd.slac.stanford.edu

Upload: gavin-price

Post on 08-Jan-2018

216 views

Category:

Documents


0 download

DESCRIPTION

10-November-083: xrootd Server Architecture Protocol Layer Filesystem Logical Layer Filesystem Physical Layer Filesystem Implementation Protocol & Thread Manager (included in distribution) clustering heart

TRANSCRIPT

Page 1: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

Scalla AuthorizationScalla Authorization

xrootd /cmsdAndrew Hanushevsky

SLAC National Accelerator Laboratory

CERN Seminar10-November-08

http://xrootd.slac.stanford.edu

Page 2: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 2: http://xrootd.slac.stanford.edu

Outline

Server Architecture Where authorization fits in

Authorization Challenges & ApproachBuilt-In Plug-In ArchitectureEntities, Objects, and Privileges Positioning certificates

Conclusion

Page 3: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 3: http://xrootd.slac.stanford.edu

xrootd Server Architecture

Protocol LayerProtocol Layer

Filesystem Logical LayerFilesystem Logical Layer

Filesystem Physical LayerFilesystem Physical Layer

Filesystem ImplementationFilesystem Implementation

Protocol & Thread ManagerProtocol & Thread Manager

(included in distribution)

clustering heart

Page 4: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 4: http://xrootd.slac.stanford.edu

char prot[8]; // Protocol usedchar *name; // Entity's namechar *host; // Entity's host namechar *vorg; // Entity's virtual organizationchar *role; // Entity's rolechar *grps; // Entity’s groupschar *endorsements; // Protocol specific endorsementschar *tident; // Trace identifier (do not modify)void *cert // Pointer to certificate void *cert // Pointer to certificate (future)(future)int clen; // Length of certificate int clen; // Length of certificate (future)(future)

Authenticated Identity

Passed to file system layer to be used for authorizationPassed to file system layer to be used for authorization

XrdSecEntity.hhXrdSecEntity.hh

Used by default authorization plug-in

Page 5: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 5: http://xrootd.slac.stanford.edu

Authorization Interfaceclass XrdAccAuthorize{ public:virtual XrdAccPrivs Access(const XrdSecEntity *Entity, const char *path, const Access_Operation oper, XrdOucEnv *Env=0) = 0;

virtual int Audit(const int accok, const XrdSecEntity *Entity, const char *path, const Access_Operation oper, XrdOucEnv *Env=0) = 0;

virtual int Test(const XrdAccPrivs priv, const Access_Operation oper) = 0;};

Page 6: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 6: http://xrootd.slac.stanford.edu

Authorization Challenge

Number of files Billions and billions of files

Access control list model unmanageable Too many files to protect

Don’t want to record allowed entities in many places

Capability model is manageable Few users relative to number of files

Entities recorded only once Each entity given access to arbitrary file space regions

Page 7: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 7: http://xrootd.slac.stanford.edu

Authorization Approach

Default authorization is built-in Basic Windows XP-like access control

Works as a plug-in ofs.authlib path [ parms ]

Over-rides built-in authorization ofs.authorize

Required to turn on authorization

Page 8: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 8: http://xrootd.slac.stanford.edu

Authorization Architecture

u abh rw /slac/files/usr/abh r /cern/files

libXrdSec.solib????.so

AuthenticationAuthorization

Page 9: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 9: http://xrootd.slac.stanford.edu

Builtin Architecture Detail

access()access() yesyes or nono

clientrequest

libXrdOfs.so

u abh rw /slac/files/usr/abh r /cern/files

lib????.soor builtin

Page 10: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 10: http://xrootd.slac.stanford.edu

Builtin Authorization ModelCapability based model Each entity has a list of capabilities A capability is a path prefix-privilege pair

Any number of such pairs may be specified More scalable when number of objects greatly exceeds number of entities

Can mimic an access control model

Entities can be:Entities can be:Host Names

NIS NetgroupsGroup NamesUser Names

u abh rw /slac/files/usr/abh r /cern/files

Page 11: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 11: http://xrootd.slac.stanford.edu

Builtin Authorization Entities

idtypeidtype id { path privs | tempid } [ • • • ] [ \ ] g - Group name

Applied when user is a member of the group h - Host name

Applied when request originates from this host Always fully qualify the host name and specify in lower case

n - NIS netgroup name Applied when the triplet (hostname, username, domainname) is a

member of the specified netgroup t - template name

Specification substituted in future authorization records for tempid u - user’s name (can be DN)

Applied for specific user, as identified by authentication protocol

Page 12: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 12: http://xrootd.slac.stanford.edu

Special Entities

u = { path privs | tempid } [ • • • ] [ \ ] User’s name replaces the first occurrence of @= in path Allows specializing privileges by user’s name without listing all users

Only one such entry may exist Example:

u = /usr/@=/files au = /usr/@=/files a User abh has all privileges for /usr/abh/files

u * { path privs | tempid } [ • • • ] [ \ ] The entry applies to all users regardless of the originating host Essentially default privileges

Only one such entry may exist Example

u * /files rwsu * /files rws

FungibleFungible

DefaultDefault

Page 13: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 13: http://xrootd.slac.stanford.edu

Builtin Authorization Privileges

idtype id { path privsprivs | tempid } [ • • • ] [ \ ] a - all privileges i - insert (create) l - lookup r - read d - delete k - lock (unused) n - rename w - write Positive and negative privileges allowed

Negative privileges always override positive privileges Examples

u aaa /foo rw User aaa has read/write privileges in /foo

u abh /foo a-n User abh has all privileges except rename in /foo

u xyz /foo –wind User xyz is denied write/insert/rename/delete privileges in /foo

Page 14: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 14: http://xrootd.slac.stanford.edu

Principal of Least PrivilegeFor the first applicable path, if any, in each of Default entry Fungible user entry Specific user entry Entry for originating host All groups in which user is a member All netgroups to which (hostname, username, domainname) applies

Logically add together positive privileges pos_privs |= new_pos_privs

Logically add together negative privileges neg_privs |= new_neg_privs

Final privileges are positive less negative privileges final_privs = pos_privs & ~neg_privs

Page 15: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 15: http://xrootd.slac.stanford.edu

Entities and Certs

Some entities equivalent User Name and DN Host

Others are not clear Group, Netgroup

Additions are needed Vorg and Role (the definition?)

Endorsement handling is totally unclearFuture ProjectFuture Project

Page 16: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 16: http://xrootd.slac.stanford.edu

Summary

xrootd security Fully configurable, extendable, even replaceable

Standards-based authentication GSI Kerberos (version 4 or 5) Host based Password

Built-in Capability-based authorization Extensive privilege support Auditing

Good model for application level security

Page 17: Scalla Authorization xrootd /cmsd Andrew Hanushevsky SLAC National Accelerator Laboratory CERN Seminar 10-November-08

10-November-08 17: http://xrootd.slac.stanford.edu

Acknowledgements

Software Contributors CERN: Derek Feichtinger, Fabrizio Furano, Andreas Peters Fermi: Tony Johnson (Java)

Root: Gerri Ganis, Bertrand Bellenot SLAC: Jacek Becla, Tofigh Azemoon, Wilko Kroeger

Operational Collaborators BNL, INFN, IN2P3

Partial Funding US Department of Energy

Contract DE-AC02-76SF00515 with Stanford University