Alert.png The wiki is deprecated and due to be decommissioned by the end of September 2022.
The content is being migrated to other supports, new updates will be ignored and lost.
If needed you can get in touch with EGI SDIS team using operations @ egi.eu.

Difference between revisions of "Fedcloud-tf:WorkGroups:Federated AAI:per-user sub-proxy"

From EGIWiki
Jump to navigation Jump to search
Line 1: Line 1:
= The per-user sub-proxy =
= The per-user sub-proxy =


The purpose of a per-user sub-proxy (PUSP) is to allow identification of the individual users that operate using a common robot certificate, e.g. the users of a scientific gateways running from portals. This is achieved by creating from the robot certificate a proxy certificate containing user-identifying information in its additional CN field. This may be pseudo-anonymised where only the portal knows the actual mapping.
The purpose of a per-user sub-proxy (PUSP) is to allow identification of the individual users that operate using a common robot certificate.  A common example is where a web portal (e.g., a scientific gateway) somehow identifies its user and wishes to authenticate as that user when interacting with EGI resources. This is achieved by creating a proxy credential from the robot credential with the certificate containing user-identifying information in its additional CN field. The user-identifying information may be pseudo-anonymised where only the portal knows the actual mapping.


== Requirements ==
== Requirements ==
Line 19: Line 19:
</ol>
</ol>


A robot EEC that generates PUSP credentials SHOULD NOT be used for any other purpose; for example, generate non-PUSP proxy credentials or direct authenticating.
A robot EEC that generates PUSP credentials SHOULD NOT be used for any other purpose; for example, it should not be used to generate non-PUSP proxy credentials and should not be use for direct authenticating.


== Processing expectations ==
== Processing expectations ==


Software is expected to follow the following rules:
Software MUST verify conditions 1..3 above before accepting a PUSP.


If any of conditions 1--3 are not met then the software MUST NOT treat the proxy as a PUSP.  Instead the software SHOULD treat the proxy as an normal proxy issued by the EEC.
Software MUST NOT accept certificate chain as authenticating the identified user if any of the conditions 1..3 fail.


Software may assume conditions 4 and 5 are honoured without independently verifying them.
Software SHOULD treat all proxy certificates that fail any of conditions 1..3 as authenticating the end-entity (i.e., as a normal proxy).


To allow existing deployed software to operate with PSUP, software MAY treat a client authenticating with a valid PUSP credential as a client authenticating with a normal proxy credential issued by the EEC.  However, such behaviour may have accounting and security implications that should be understood.
Software SHOULD assume conditions 4 and 5 are honoured.


== Verification ==
Software MUST establish a chain-of-trust leading back to a trusted CAs.


Software SHOULD consider only the first three conditions above, i.e. ''software'' SHOULD not assume a specific form of the extra CN=... field. When matching the subject DN with entries in e.g. a grid-mapfile, the match MUST be done on the complete PUSP DN, in order to match the robot DN and the PUSP extra CN field together, where wild-cards can be used.
Software MUST use CRLs information and/or OCSP to verify that none of the certificates in the chain-of-trust have been revoked.


Example grid-mapfile entry:
Software SHOULD ensure any CRL information is not outdated.
 
Software MUST treat the user-identifying information (the final CN in the PSUP DN) as an opaque string and MUST NOT attempt to decode it.  Partial matching is considered a form of decoding.
 
To allow currently deployed software to operate with PSUP, software MAY identify a client authenticating with a valid PUSP certificate as the issuing robot.  However, such behaviour may have accounting and security implications that should be understood.
 
To match some specific identified user, the complete PUSP DN must be matched.
 
For example the following grid-mapfile matches a specific identified user as jdoe_local_user and all other users as portal_pool_users:
  "/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe" jdoe_local_user
  "/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe" jdoe_local_user
  "/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:*" .portal_pool_users
  "/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=*" .portal_pool_users


In addition, the software MUST verify the entire certificate chain in the normal way, against known and accepted CA distributions and using CRLs and/or OCSP.


== User identity and VO information ==
== User identity and VO information ==


Membership of Virtual Organisations (VO) is handled by acquiring an Attribute Certificate (AC) from a VO-membership service.&nbsp; For EGI FedCloud, this is the Perun service (IS THIS CORRECT?).&nbsp; The AC is issued for and linked to a specific robot DN.&nbsp; The AC&nbsp;is embedded within a proxy certificate to form a voms proxy certificate.
Membership of Virtual Organisations (VO) is handled by acquiring an Attribute Certificate (AC) from a VO-membership service. Membership is described in terms of one or more Fully Qualified Attribute Names (FQANs), each of which describe the user's membership of a group or some role within a group.  VOMS, Perun and UNITY are examples of software that implement this VO-membership service.   The AC is issued for and linked to a specific robot DN. The AC is embedded within the PUSP proxy certificate.
 
In the current architecture, the robot is a member of a VO. Therefore, any PUSP credential always identifies the agent as a member of that VO and can inherit any and all the roles of the robot. Therefore, the following conditions hold:
 
 
The robot MUST have knowledge of which users are members of its VO.


Currently, the robot is a member of a VO. Any per-user sub-proxy is then automatically a member of that VO and inherits all the roles of the robot. This means that the portal must have some way (outside of Perun) of discovering whether or not a user is a member of a VO and that the robot MUST ''not'' get any specific roles which are not suitable for all the users.
The robot MUST ensure that a PUSP is only issued for members of the VO.
The robot MUST request an AC with only those roles available to all its users, if any.
The robot MAY allow users to choose with FQAN is asserted first in the AC.


== User suspension and revocation ==
== User suspension and revocation ==


There are two distinct levels of suspension and revocation, first on the level of the gateway/portal or robot certificate, secondly on the level of the actual (portal) user.
There are two distinct levels of suspension and revocation, first on the level of the robot certificate, secondly on the level of the identified user.


=== Suspension and revocation of the Robot certificate ===
=== Suspension and revocation of the Robot certificate ===


In case the portal or its certificate has been compromised, the robot certificate can be put on the central suspension list and its own DN will be blocked in the normal way. Further more, its certificate should be revoked and put on the next CRL of the issuing CA. Note that only suspending all the PUSP, i.e. something like <tt>"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=*"</tt>, is not sufficient nor necessary.
'''Motivation''': stop all activity issued by the robot
 
'''Trigger''': it is believed likely that the robot private key or the software environment using the private key has become compromised.
 
'''Action''': the robot DN is placed on the central suspension list (e.g., ARGUS) and the certificate is revoked by the CA.
 
Note that, in this case, suspending individual PUSP DNs is unnecessary.


=== Suspension and revocation of the PUSP users ===
=== Suspension and revocation of the PUSP users ===


In case an individual user must (temporarily) be denied access, first access to the portal must be blocked for this user. Due to the nature of proxy certificates, it is not possible or necessary to revoke any certificates. However, the PUSP DN can be blocked via suspension software that has support for PUSP. For example, the [https://wiki.nikhef.nl/grid/Lcmaps-plugins-robot lcmaps-plugins-robot] package includes a <tt>lcmaps_robot_ban_dn</tt> plugin. The DN to ban MUST be the complete PUSP DN such as <pre>"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe"</pre>
'''Motivation''': want to stop all activity of a single identified user.
 
'''Trigger''': it is believed likely that...
<ul>
<li>the mechanism with which the identified user authenticates has become compromised (e.g., password was guessed),
<li>the user's environment has become compromised (e.g., trojan software),
<li>the user is acting outside VO's acceptable use policy,
<li>the user is introducing too great a load and attempts to contact them have failed.
</ul>
 
'''Action''': the robot blocks access for this user.  Central suspension lists (e.g., ARGUS) are updated to include the identified user's PUSP DN.  Individual services MAY block the PUSP DN.
 
For example, the [https://wiki.nikhef.nl/grid/Lcmaps-plugins-robot lcmaps-plugins-robot] package includes a <tt>lcmaps_robot_ban_dn</tt> plugin. The DN to ban MUST be the complete PUSP DN such as:
 
<pre>"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe"</pre>

Revision as of 13:35, 13 February 2015

The per-user sub-proxy

The purpose of a per-user sub-proxy (PUSP) is to allow identification of the individual users that operate using a common robot certificate. A common example is where a web portal (e.g., a scientific gateway) somehow identifies its user and wishes to authenticate as that user when interacting with EGI resources. This is achieved by creating a proxy credential from the robot credential with the certificate containing user-identifying information in its additional CN field. The user-identifying information may be pseudo-anonymised where only the portal knows the actual mapping.

Requirements

The Per-User Sub-Proxy (PUSP) and End-Entity Certificate (EEC) must satisfy the following requirements:

  1. The EEC is a valid robot certificate:
  2. The PUSP is RFC 3820 compliant, i.e. no legacy GT2 or GT3 proxies
  3. The PUSP is the first proxy delegation
  4. The same identified user will always have the same PUSP DN
  5. No two distinct identified users will have the same PUSP DN.

A robot EEC that generates PUSP credentials SHOULD NOT be used for any other purpose; for example, it should not be used to generate non-PUSP proxy credentials and should not be use for direct authenticating.

Processing expectations

Software MUST verify conditions 1..3 above before accepting a PUSP.

Software MUST NOT accept certificate chain as authenticating the identified user if any of the conditions 1..3 fail.

Software SHOULD treat all proxy certificates that fail any of conditions 1..3 as authenticating the end-entity (i.e., as a normal proxy).

Software SHOULD assume conditions 4 and 5 are honoured.

Software MUST establish a chain-of-trust leading back to a trusted CAs.

Software MUST use CRLs information and/or OCSP to verify that none of the certificates in the chain-of-trust have been revoked.

Software SHOULD ensure any CRL information is not outdated.

Software MUST treat the user-identifying information (the final CN in the PSUP DN) as an opaque string and MUST NOT attempt to decode it. Partial matching is considered a form of decoding.

To allow currently deployed software to operate with PSUP, software MAY identify a client authenticating with a valid PUSP certificate as the issuing robot. However, such behaviour may have accounting and security implications that should be understood.

To match some specific identified user, the complete PUSP DN must be matched.

For example the following grid-mapfile matches a specific identified user as jdoe_local_user and all other users as portal_pool_users:

"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe" jdoe_local_user
"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=*" .portal_pool_users


User identity and VO information

Membership of Virtual Organisations (VO) is handled by acquiring an Attribute Certificate (AC) from a VO-membership service. Membership is described in terms of one or more Fully Qualified Attribute Names (FQANs), each of which describe the user's membership of a group or some role within a group. VOMS, Perun and UNITY are examples of software that implement this VO-membership service. The AC is issued for and linked to a specific robot DN. The AC is embedded within the PUSP proxy certificate.

In the current architecture, the robot is a member of a VO. Therefore, any PUSP credential always identifies the agent as a member of that VO and can inherit any and all the roles of the robot. Therefore, the following conditions hold:


The robot MUST have knowledge of which users are members of its VO.

The robot MUST ensure that a PUSP is only issued for members of the VO. The robot MUST request an AC with only those roles available to all its users, if any. The robot MAY allow users to choose with FQAN is asserted first in the AC.

User suspension and revocation

There are two distinct levels of suspension and revocation, first on the level of the robot certificate, secondly on the level of the identified user.

Suspension and revocation of the Robot certificate

Motivation: stop all activity issued by the robot

Trigger: it is believed likely that the robot private key or the software environment using the private key has become compromised.

Action: the robot DN is placed on the central suspension list (e.g., ARGUS) and the certificate is revoked by the CA.

Note that, in this case, suspending individual PUSP DNs is unnecessary.

Suspension and revocation of the PUSP users

Motivation: want to stop all activity of a single identified user.

Trigger: it is believed likely that...

  • the mechanism with which the identified user authenticates has become compromised (e.g., password was guessed),
  • the user's environment has become compromised (e.g., trojan software),
  • the user is acting outside VO's acceptable use policy,
  • the user is introducing too great a load and attempts to contact them have failed.

Action: the robot blocks access for this user. Central suspension lists (e.g., ARGUS) are updated to include the identified user's PUSP DN. Individual services MAY block the PUSP DN.

For example, the lcmaps-plugins-robot package includes a lcmaps_robot_ban_dn plugin. The DN to ban MUST be the complete PUSP DN such as:

"/DC=org/DC=terena/DC=tcs/O=Nikhef/OU=Robot/CN=Robot - Marvin/CN=user:jdoe"