<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Documentation – Virtual Organisations</title><link>/users/aai/check-in/vos/</link><description>Recent content in Virtual Organisations on Documentation</description><generator>Hugo -- gohugo.io</generator><atom:link href="/users/aai/check-in/vos/index.xml" rel="self" type="application/rss+xml"/><item><title>Users: Authorisation using VO information</title><link>/users/aai/check-in/vos/authorisation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/aai/check-in/vos/authorisation/</guid><description>
&lt;p>&lt;strong>Authorisation&lt;/strong> is the mechanism handling permissions and access control.
While authentication deals with the identification of a user, authorisation
determines and enforces what a user can do in the system.&lt;/p>
&lt;p>This is depicted in the figure below, where a user access an application and
authenticates through Check-in. If the authentication is successful, Check-in
will share agreed user information with the application. As part of this
information are &lt;strong>the entitlements&lt;/strong> of the user, which encode the group and
role membership of the user.&lt;/p>
&lt;p>&lt;img src="checkin_flow.jpg" alt="Check-in flow">&lt;/p>
&lt;p>Services and applications typically use membership information to &lt;strong>authorise
user access&lt;/strong> to protected resources, so the entitlements play a relevant role
in the authorisation task.&lt;/p>
&lt;h2 id="entitlements">Entitlements&lt;/h2>
&lt;p>An entitlement is simply a string that encodes some user membership.
Entitlements are formated as &lt;strong>URN&lt;/strong>s, in this format:&lt;/p>
&lt;p>&lt;code>&amp;lt;NAMESPACE&amp;gt;:group:&amp;lt;VO&amp;gt;[:&amp;lt;SUBGROUP&amp;gt;*][:role=&amp;lt;ROLE&amp;gt;]#&amp;lt;GROUP-AUTHORITY&amp;gt;&lt;/code>&lt;/p>
&lt;p>This format is described in the
&lt;a href="https://aarc-community.org/guidelines/aarc-g069/">AARC-G069&lt;/a> specification:&lt;/p>
&lt;p>&lt;img src="entitlements.jpg" alt="Structure of an entitlement">&lt;/p>
&lt;p>Using this information, an application can determine that the user belongs to
the the group &amp;ldquo;cloud&amp;rdquo; of the VO &amp;ldquo;vo.example.eu&amp;rdquo; and has the &amp;ldquo;operator&amp;rdquo; role
assigned. With this, the application can make an authorisation decision whether
or not to allow the user to access some resource or perform some action.&lt;/p>
&lt;ul>
&lt;li>If a user has two roles in a group, then two different entitlements will be
released for the user. For example, a user with roles &amp;ldquo;cloud_operator&amp;rdquo; and
&amp;ldquo;data_operator&amp;rdquo; in the same group will have these entitlements:&lt;/li>
&lt;/ul>
&lt;p>&lt;code>urn:mace:egi.eu:group:project.vo.egi.eu:role=data_operator#aai.egi.eu&lt;/code>&lt;/p>
&lt;p>&lt;code>urn:mace:egi.eu:group:project.vo.egi.eu:role=cloud_operator#aai.egi.eu&lt;/code>&lt;/p>
&lt;ul>
&lt;li>When a user is not a member of a specific VO or group, or if the user&amp;rsquo;s
membership has expired, the entitlement for this VO/group will not be released
by Check-in.&lt;/li>
&lt;/ul></description></item><item><title>Users: Group Management in Keycloak</title><link>/users/aai/check-in/vos/keycloak/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/aai/check-in/vos/keycloak/</guid><description>
&lt;p>Check-in allows you to organise your community based on two concepts:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Groups&lt;/strong>, representing a collection of users.&lt;/li>
&lt;li>&lt;strong>Roles&lt;/strong>, which are &lt;strong>specific for each group&lt;/strong> and can be assigned to users
individually.&lt;/li>
&lt;/ul>
&lt;p>Your community will be represented by a main group, often known as
&lt;a href="../">&lt;strong>Virtual Organisation&lt;/strong>&lt;/a> (VO). Inside your VO, you can have subgroups,
and these can also have subgroups, creating a hierarchy.&lt;/p>
&lt;p>&lt;img src="./general_groups-01.png" alt="Groups hierarchy">&lt;/p>
&lt;p>Operationally, a VO can be considered a group as any other, with the
particularity that it has a special behaviour (VOs cannot be deleted, and
their membership must be renewed at least once every year), and that it is the
root group, the highest group in its hierarchy. The hierarchy can be expressed
as a “&lt;strong>group path&lt;/strong>”. For example, the group path of the “External” group of
the image is &lt;em>/community.eu/Testers/External&lt;/em>.&lt;/p>
&lt;p>Groups and roles allow you to manage authorisation. When a user belongs to a
group or is assigned a role, he/she receives an &lt;strong>entitlement&lt;/strong>, which is a
string describing a permission the user has. For example, an entitlement looks
like:&lt;/p>
&lt;pre>&lt;code>urn:mace:egi.eu:group:engineering.vo.egi.eu:role=member#aai.egi.eu
&lt;/code>&lt;/pre>
&lt;p>representing that the user is a “member” of the VO “engineering.vo.egi.eu”. See
&amp;ldquo;&lt;a href="../authorisation">Authorisation using VO information&lt;/a>&amp;rdquo; for more details about
entitlements.&lt;/p>
&lt;p>Using these entitlements, an application can then make authorisation decisions
based on the membership in a group. For example, to establish that only members
of the group “cloud operators” can create virtual machines and manage
infrastructure.&lt;/p>
&lt;h2 id="structure-of-a-group">Structure of a group&lt;/h2>
&lt;p>Groups have two types of users:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Group Admins&lt;/strong>, who manage all aspects of the group, as well as any
sub-groups in the hierarchy, including roles, membership, and settings. Groups
can have one or more administrators.&lt;/li>
&lt;li>&lt;strong>Group members&lt;/strong>, who are the users that belong to the group.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="./general_groups-02.png" alt="Groups structure with admins and members">&lt;/p>
&lt;p>Roles are defined per group and can be used to assign specific permissions
within the group to users. Users inside a group can have one or more roles, but
they must have &lt;strong>at least one role within the group&lt;/strong>. By default, the role
“member” exists for all groups.&lt;/p>
&lt;p>The Group Admin of the VO is sometimes called “&lt;strong>VO Manager&lt;/strong>”.&lt;/p>
&lt;p>A Group Admin is also considered to be an administrator of all subgroups of the
group (becoming an “indirect admin” for the subgroups), so these administration
permissions propagate down the group hierarchy.&lt;/p>
&lt;p>&lt;img src="./general_groups-03.png" alt="Group admin propagation">&lt;/p></description></item><item><title>Users: Perun</title><link>/users/aai/check-in/vos/perun/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/aai/check-in/vos/perun/</guid><description>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">How is this documentation organized&lt;/h4>
This documentation is specific for the EGI users and use cases. Each section
briefly describes the concepts in Perun and available options. How-To guides
for related common actions are available at the end of each section.
&lt;/div>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Perun is attribute management system, and within the EGI it provides
an alternative solution for VO management. Perun provides more advanced features
and supports complex use-cases compared to COManage and VOMS.&lt;/p>
&lt;p>You should consider using Perun for VO management if you want or require
the following features:&lt;/p>
&lt;ul>
&lt;li>Customizable registration forms, flows, and notifications for both VOs and
Groups&lt;/li>
&lt;li>Advanced group management with group hierarchies and relations&lt;/li>
&lt;li>VO/Group management roles delegation&lt;/li>
&lt;li>Membership expiration/renewals rules&lt;/li>
&lt;li>Membership sponsorships as exceptions to membership rules&lt;/li>
&lt;li>Fine-grained access management for service owners&lt;/li>
&lt;li>User/group synchronizations with external systems and services&lt;/li>
&lt;/ul>
&lt;h2 id="vo-management">VO management&lt;/h2>
&lt;p>Administrative GUI for VO managers is available at &lt;a href="https://perun.egi.eu">https://perun.egi.eu&lt;/a>&lt;/p>
&lt;p>It is assumed that VO managers and members have already registered their EGI
Check-in account (A step-by-step guide is provided in this
&lt;a href="../../signup">link&lt;/a>).&lt;/p>
&lt;h3 id="registering-your-vo">Registering your VO&lt;/h3>
&lt;p>Standard EGI procedure for registering VO takes place. See related Check-In
documentation about &lt;a href="../#registering-your-vo">Registering your VO&lt;/a>.&lt;/p>
&lt;p>Steps that are specific to Perun are:&lt;/p>
&lt;ol>
&lt;li>You will provide us with the necessary information through GGUS ticket (as
described in the procedure).&lt;/li>
&lt;li>You will register to your own VO using provided link, and we will set you as
the VO manager.&lt;/li>
&lt;li>You will register to your own VO using provided link, and we will set you as
the VO manager.&lt;/li>
&lt;/ol>
&lt;p>Any further VO management and configuration is the responsibility of VO manager.&lt;/p>
&lt;h3 id="managing-members">Managing members&lt;/h3>
&lt;p>All basic features regarding members management are available in the
administrative GUI under the &lt;em>VO manager&lt;/em> section. All features are described
in the following sections in more detail.&lt;/p>
&lt;!---
#### HOW-TO
- [Search and display VO members](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16252929/Search+and+display+VO+members)
- [Member detail (status, groups, settings,...)](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384005/Member+detail+status+groups+settings+...)
- [Add/Remove VO members](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384022/Add+Remove+VO+members)
--->
&lt;h4 id="accepting-new-members">Accepting new members&lt;/h4>
&lt;p>Users can register in your VO using the same registration link provided during
the VO registration. It has the following format:&lt;/p>
&lt;p>&lt;code>https://perun.egi.eu/egi/registrar/?vo=[voName]&lt;/code> where &lt;code>[voName]&lt;/code> is to be
replaced with your actual VO name (as displayed on VO ID card in
OperationsPortal).&lt;/p>
&lt;p>Alternatively, you can configure an invitation notification template and send
the registration link to the users directly from Perun.&lt;/p>
&lt;p>Once the user submits the registration, it is up to you to review and approve or
reject it. Perun can be configured to automatically approve valid registrations
or reject them in case of user inactivity (for example when email is not
verified by the user in timely manner).&lt;/p>
&lt;p>There is a possibility to use custom registration modules that are programmable
and can perform any specific and complex actions with the users and the VO.
Please consult Perun user support using GGUS in case you need this feature.&lt;/p>
&lt;!---
##### HOW-TO
- [Configure registration form](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384056/Configure+registration+form)
- [Configure registration notifications](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16449548/Configure+registration+notifications)
- [Approve/reject submitted registration](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384077/Approve+Reject+submitted+registrations)
- [Configure and send invitation](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384094/Configure+and+send+invitation)
--->
&lt;h4 id="membership-lifecycle-expiration-rules-and-renewal">Membership lifecycle, expiration rules and renewal&lt;/h4>
&lt;div class="alert alert-info" role="alert">
Almost identical features are available for each Group within the VO. See the
same section under the &lt;a href="#group-membership-lifecycle-expiration-rules-and-renewal">Groups management&lt;/a>
for the differences.
&lt;/div>
&lt;p>By default, Perun expects that the membership lifecycle is managed by the VO
manager directly - manually. This can be done by switching each members&amp;rsquo; status
between &lt;code>VALID&lt;/code>, &lt;code>EXPIRED&lt;/code> and &lt;code>DISABLED&lt;/code> states or by removing the member from
VO.&lt;/p>
&lt;p>Members&amp;rsquo; status affects which VO/group membership information is released to the
service, hence affecting users&amp;rsquo; ability to access the service or the state of
users&amp;rsquo; account in the service.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Member status&lt;/th>
&lt;th>Meaning&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>VALID&lt;/code>&lt;/td>
&lt;td>User is active member of VO. VO/group membership information is provisioned to services (e.g. through Check-In proxy).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>EXPIRED&lt;/code>&lt;/td>
&lt;td>User is inactive member of VO, but allowed to renew membership. VO/group membership information is not provisioned to services through Check-In proxy but can be provisioned to services directly connected to Perun.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>DISABLED&lt;/code>&lt;/td>
&lt;td>User is inactive member of VO and can’t renew membership by himself. VO/group membership information is not provisioned outside of Perun.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Switching between the states can be automated based on membership expiration
rules of VO or simply by setting membership expiration date manually to the
member.&lt;/p>
&lt;p>Notifications can be set to notify members about upcoming membership expiration.
They can then ask for membership renewal using the same registration link.
The Modified version of the form is displayed to them in such a case.&lt;/p>
&lt;p>Membership expiration rules can be set either to a fixed date within the year
(in such case member is expected to renew membership every year before that
date) or be dynamically calculated based on the date of registration. In the
second case renewal period can be shorter or longer than one year (e. g. &lt;code>+2y&lt;/code>,
&lt;code>+6m&lt;/code>, meaning 2 years or 6 months respectively). In both cases, you also need
to define the timespan, how long before the membership expiration are members
allowed to ask for the renewal (e.g. &lt;code>1m&lt;/code>, meaning one month).&lt;/p>
&lt;!---
##### HOW-TO
- [Change VO member status and expiration](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16449582/Change+VO+member+status+and+expiration)
- [Configure VO membership expiration rules](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16449599/Configure+VO+membership+expiration+rules)
-->
&lt;h3 id="managing-groups">Managing groups&lt;/h3>
&lt;p>Groups are used to further categorize VO members within the VO and to assign
them roles or access rights for the services. They can also be used to delegate
members&amp;rsquo; management to others as you can assign a group manager, which is
then responsible for that particular group and its child groups.&lt;/p>
&lt;p>All VOs have one system group named &lt;em>members&lt;/em>, which automatically holds all
VO members and can be used in groups relations.&lt;/p>
&lt;p>Groups can be organized in a &lt;em>flat&lt;/em> or &lt;em>hierarchical&lt;/em> structure, or you can
combine them as you need. Groups&amp;rsquo; names must be unique on each level of
hierarchy, and group full name consist of all groups names on the path from the
root divided by colon &lt;code>:&lt;/code>, e.g. &lt;code>projectX:students&lt;/code>.&lt;/p>
&lt;p>Top-level groups can be created only by the VO managers.&lt;/p>
&lt;h4 id="how-to">HOW-TO&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/15499401/Search+and+display+groups">Search and display groups&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384107/Create+delete+groups+and+subgroups">Create/delete groups and subgroups&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16449565/Create+remove+relations+between+the+groups">Create/remove relations between the groups&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/15597689/Rename+group">Rename group&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="group-memberships">Group memberships&lt;/h4>
&lt;p>Perun recognizes two kinds of group memberships, &lt;em>direct&lt;/em> and &lt;em>indirect&lt;/em>. If
you use only flat group structure, all users are direct members of the groups.
Once you start using hierarchical group structures or group relations, you will
also get indirect members in some groups.&lt;/p>
&lt;p>Both types of memberships are equal regarding the VO/group membership
information released for the services (e.g. Check-In proxy).&lt;/p>
&lt;p>Membership in the hierarchical group structures is inherited from the most
bottom groups to the root, and the user can be both a direct and indirect member
of the group at the same time.&lt;/p>
&lt;p>Indirect members can’t be removed from the group and are displayed in the GUI
using the italic font in the group members list. In order to remove them from
the group you have to remove them from the sourcing subgroup first or remove
relation between the groups.&lt;/p>
&lt;h5 id="how-to-1">HOW-TO&lt;/h5>
&lt;ul>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/14417974/Search+and+display+group+members">Search and display group members&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/13861398/Add+remove+group+members">Add/remove group members&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="accepting-new-group-members">Accepting new group members&lt;/h4>
&lt;p>Group members can be added to the group directly by the VO/group manager
chosen from the available VO members as described in the above How-To.&lt;/p>
&lt;p>They can also register themselves using similar link like for VO
registrations: &lt;code>https://perun.egi.eu/egi/registrar/?vo=[voName]&amp;amp;group= [groupName]&lt;/code> where &lt;code>[voName]&lt;/code> is to be replaced with your actual VO name (as
displayed on VO ID card in OperationsPortal) and &lt;code>[groupName]&lt;/code> is to be
replaced with the groups full name (including hierarchy), e.g.:
&lt;code>projectX:students&lt;/code>.&lt;/p>
&lt;p>All settings related to the group registration are basically the same as for
the VO registrations, they are just located under the &lt;em>Group manager&lt;/em>
section in the GUI.&lt;/p>
&lt;p>There is just one big difference regarding the registration workflow for the
groups. The user must become a member of VO before the group registration can be
accepted by the group manager (even automatically). The user is able to submit
VO and group registration at once using a two steps form, but VO registration
must be approved first.&lt;/p>
&lt;!---
##### HOW-TO
- [Configure registration form](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384056/Configure+registration+form)
- [Configure registration notifications](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16449548/Configure+registration+notifications)
- [Approve/reject submitted registration](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384077/Approve+Reject+submitted+registrations)
- [Configure and send invitation](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384094/Configure+and+send+invitation)
--->
&lt;h4 id="group-membership-lifecycle-expiration-rules-and-renewal">Group membership lifecycle, expiration rules and renewal&lt;/h4>
&lt;p>Members&amp;rsquo; lifecycle within the group is roughly the same as within the VO,
but there are some differences.&lt;/p>
&lt;ul>
&lt;li>Both VO and Group member status affect what vo/group membership
information is provided to the services about the user.&lt;/li>
&lt;li>Group membership statuses are only &lt;code>VALID&lt;/code> and &lt;code>EXPIRED&lt;/code>.&lt;/li>
&lt;li>In hierarchical group structures, resulting in members&amp;rsquo; status in a parent
group is dependent on his/hers status in all child groups and &lt;code>VALID&lt;/code>
status takes preference.&lt;/li>
&lt;li>Membership expiration in VO and group are independent of each other.
Member can be expired just in some groups within the VO or be expired
within the whole VO a still be valid within its groups. In such a case member
is not considered as a member of VO by the services. Once membership is
renewed, membership information is restored, including all groups.&lt;/li>
&lt;/ul>
&lt;!---
##### HOW-TO
- [Change group member status and expiration](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384130/Change+group+member+status+and+expiration)
- [Configure group membership expiration rules](https://perunaai.atlassian.net/wiki/spaces/PERUN/pages/16384155/Configure+group+membership+expiration+rules)
-->
&lt;h2 id="access-management">Access management&lt;/h2>
&lt;p>While Perun generally uses the concept of &lt;em>Resources&lt;/em> to represent the access
rights and roles (as a service provider is giving them to the VO) and &lt;em>Groups&lt;/em>
are assigned to it (by the VO managers), it is not usually used like this
within the EGI infrastructure.&lt;/p>
&lt;p>Having &lt;em>Groups&lt;/em> and &lt;em>Resources&lt;/em> separated allows you to represent your community
or organization structure without the conflict with the roles and access rights
for each service. You can then more easily use one single group and give its
members access to the various services with specific roles/settings. Any change
to the group membership can then be reflected to all associated services, which
is useful especially for the de-provisioning.&lt;/p>
&lt;h3 id="egi-check-in-proxy">EGI Check-In proxy&lt;/h3>
&lt;p>For the primary and most basic use-case, when services are behind the EGI
Check-In proxy, access rights are based solely on VO and group membership
information.&lt;/p>
&lt;p>Such information is then released by the EGI Check-In proxy as
&lt;em>eduPersonEntitlement&lt;/em> attribute conforming
&lt;a href="https://aarc-community.org/guidelines/aarc-g002/">AARC-G002&lt;/a> specification.&lt;/p>
&lt;p>Both VOs&amp;rsquo; short name and groups&amp;rsquo; full name are used to construct the entitlement
value, so using correct naming for the group is required.&lt;/p>
&lt;p>Association of specific VO/group membership value with the role or access rights
within the service are the responsibility of the service provider.&lt;/p>
&lt;h4 id="example">Example&lt;/h4>
&lt;p>Let&amp;rsquo;s assume, that the user is a member of &lt;code>myvo.egi.eu&lt;/code> VO and the top-level
group &lt;code>vm_operator&lt;/code> in it. Resulting &lt;em>eduPersonEntitlement&lt;/em> will look like
this:
&lt;code>urn:mace:egi.eu:group:myvo.egi.eu:vm_operator:role=member#aai.egi.eu&lt;/code>&lt;/p>
&lt;p>Perun doesn&amp;rsquo;t support other &lt;em>roles&lt;/em> within the groups than &lt;code>member&lt;/code>.&lt;/p>
&lt;h3 id="voms">VOMS&lt;/h3>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
Please note, that because of the nature of the VOMS, users must have
personal certificate associated with their user entry in Perun in order to
be provisioned to the VOMS at all.
&lt;/div>
&lt;p>Perun supports direct provisioning of the VOMS. In this use-case, users and VOs
are primarily managed within the Perun. The user data, including group
memberships and roles, is then provisioned to the VOMS, which is used solely as
a backend for the services requiring it.&lt;/p>
&lt;p>From the VO manager&amp;rsquo;s perspective, you are given a Resource by the service
provider (VOMS operator). It represents your association with the VOMS in Perun.
You can have multiple resources and they can represent either a different set of
VOMS roles within the same VOMS or represent different VOMS servers.&lt;/p>
&lt;p>You can assign any of your groups to it, and all users from all the assigned
groups will be provisioned to the VOMS as members of your VO.&lt;/p>
&lt;p>On the &lt;em>Service settings&lt;/em> page of the &lt;em>Resource&lt;/em> you can set &lt;em>VOMS roles&lt;/em>,
which will be given to all users associated with it through all the groups.
Similarly, you can set &lt;em>VOMS roles&lt;/em> on the Group-Resource level. Once you
assign the group to the Resource, you can check &lt;em>Group settings&lt;/em> page of the
&lt;em>Resource&lt;/em>, select the proper Group and set &lt;em>VOMS roles&lt;/em> from there. The same
group can have different roles for different VOMS servers like this. Also, you
can associate group from Perun with the group in VOMS by settings &lt;em>Voms
group name&lt;/em> on the same settings page.&lt;/p>
&lt;h2 id="faq">FAQ&lt;/h2>
&lt;h3 id="i-need-all-vo-members-to-get-vm_operator-role-in-openstack">I need all VO members to get &amp;ldquo;vm_operator&amp;rdquo; role in OpenStack&lt;/h3>
&lt;p>You must create a top-level group within the VO and name it &lt;code>vm_operator&lt;/code>.
All members of this group will get this role, and Check-In proxy will release
this information as an entitlement for the OpenStack like this:&lt;/p>
&lt;p>&lt;code>urn:mace:egi.eu:group:[VO_NAME]:vm_operator:role=member#aai.egi.eu&lt;/code>&lt;/p>
&lt;p>You can make sure all VO members are in this group by creating a relation
between this group and the system group &lt;em>members&lt;/em> (basically you include
&lt;em>members&lt;/em> as a subgroup through this relation).&lt;/p>
&lt;h3 id="access-with-personal-certificates">Access with personal certificates&lt;/h3>
&lt;p>Due to historical reasons (wide adoption of VOMS), users might have their user
entry in Perun already directly associated with their personal certificate.
For such cases, direct authentication using the certificates is still available.
Please consult Perun support through GGUS if you wish to merge your accounts
and start using EGI Check-In as identity linking needs to be done on Perun side
and not through EGI Check-In proxy.&lt;/p></description></item><item><title>Users: VOMS</title><link>/users/aai/check-in/vos/voms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/aai/check-in/vos/voms/</guid><description>
&lt;h2 id="authentication">Authentication&lt;/h2>
&lt;p>Some EGI services authentication is based on
&lt;a href="https://tools.ietf.org/html/rfc5280">X.509&lt;/a> certificates. The certificates are
issued by Certification Authorities (CAs) part of the
&lt;a href="https://www.eugridpma.org/">EUGridPMA&lt;/a> federation which is also part of
&lt;a href="https://www.igtf.net/">IGTF&lt;/a> (International Global Trust Federation).&lt;/p>
&lt;p>The role of a Certification Authority (CA) is to guarantee that users are who
they claim to be and are entitled to own their certificate. It is up to the
users to discover which CA they should contact. In general, CAs are organised
geographically and by research institutes. Each CA has its own procedure to
release certificates.&lt;/p>
&lt;p>EGI sites, endpoints and tools accept certificates part of the
&lt;a href="https://www.eugridpma.org/">EUGridPMA&lt;/a> distribution. If your community VO is
enabled on that site, your certificate will be accepted by that site since all
certificates are recognized at site level.&lt;/p>
&lt;p>Usually, a certificate can be installed by command-line tools, but they can also
be stored in the web browser to access EGI web tools and services.&lt;/p>
&lt;h3 id="get-a-certificate">Get a Certificate&lt;/h3>
&lt;p>The &lt;a href="https://www.eugridpma.org/members/worldmap/">list of EGI recognised CAs&lt;/a>
provides a clickable map to find your nearby CA. Several of these offer the
option to get an &amp;rsquo;eScience Personal&amp;rsquo; certificate online from the Terena
Certificate Service CA.
&lt;a href="https://www.terena.org/activities/tcs/participants.html">Check the countries where this is available&lt;/a>.&lt;/p>
&lt;p>If eScience Personal certificate is not available in your country, then request
a certificate from a regular &lt;a href="https://www.igtf.net/pmamap">IGTF CA&lt;/a>. The request
is normally generated using either a web-based interface or console commands.
Details of which type of request a particular CA accepts can be found on each
CA&amp;rsquo;s site.&lt;/p>
&lt;p>For a web-based certificate request, a form must usually be filled in with
information such as the name of the user, home institute, etc. After submission,
a pair of private and public keys are generated, together with a request for the
certificate containing the public key and the user data. The request is then
sent to the CA, while the private key stays in the browser, hence the same
browser must be used to retrieve the certificate once it is issued.&lt;/p>
&lt;p>Users must usually install the CA root certificate in their browser first. This
is because the CA has to sign the user certificate using its private key, and
the user&amp;rsquo;s browser must be able to validate the signature.&lt;/p>
&lt;p>For some CAs, the certificate requests are generated using a command line
interface. The details of the exact command and the requirements of each CA will
vary and can be found on the CA&amp;rsquo;s site.&lt;/p>
&lt;p>Once received the request, the CA will have to confirm your authenticity through
your certificate. This usually involves a physical meeting or a phone call with
a Registration Authority (RA). A RA is delegated by the CA to verify the
legitimacy of a request, and approve it if it is valid. The RA is usually
someone at your home institute, and will generally need some kind of ID to prove
your identity.&lt;/p>
&lt;h3 id="install-a-certificate">Install a Certificate&lt;/h3>
&lt;p>After approval, the certificate is generated and delivered to you. This can be
done via email, or by giving instructions to you to download it from a web page.&lt;/p>
&lt;h4 id="browser-installation">Browser installation&lt;/h4>
&lt;p>Install the certificate in your browser. If you don’t know how to upload your
certificate in your browser have a look at the
&lt;a href="https://ca.cern.ch/ca/Help/">examples&lt;/a>.&lt;/p>
&lt;h4 id="host-installation">Host installation&lt;/h4>
&lt;p>To use EGI services with your certificate, you must first save your certificate
to disk.&lt;/p>
&lt;p>The received certificate will usually be in one of two formats:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Privacy Enhanced Mail Security Certificate (PEM)&lt;/em> with extension &lt;code>.pem&lt;/code> or&lt;/li>
&lt;li>&lt;em>Personal Information Exchange File (PKCS12)&lt;/em> with extensions &lt;code>.p12&lt;/code> or
&lt;code>.pfx&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>The latter is the most common for certificates exported from a browser (e.g.
Internet Explorer, Mozilla and Firefox), but the &lt;code>PEM&lt;/code> format is currently
needed on EGI user interface. The certificates can be converted from one format
to the other using the &lt;code>openssl&lt;/code> command.&lt;/p>
&lt;p>If the certificate is in &lt;code>PKCS12&lt;/code> format, then it can be converted to &lt;code>PEM&lt;/code>
using &lt;code>pkcs12&lt;/code>:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>First you will need to create the private key, use &lt;code>-nocerts&lt;/code>. Open your
terminal, enter the following command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>openssl pkcs12 -nocerts -in my_cert.p12 -out userkey.pem
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>where:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Filename&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>my_cert.p12&lt;/code>&lt;/td>
&lt;td>is the input PKCS12 format file;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>userkey.pem&lt;/code>&lt;/td>
&lt;td>is the output private key file;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>usercert.pem&lt;/code>&lt;/td>
&lt;td>is the output PEM certificate file.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>When prompted to &lt;code>“Enter Import Password”&lt;/code>, simply press enter since no
password should have been given when exporting from keychain. When prompted
to &lt;code>“Enter PEM pass phrase”&lt;/code>, enter the pass phrase of your choice, e.g.
&lt;code>1234&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Now you can create the certificate, use &lt;code>-clcerts&lt;/code>, (use &lt;code>-nokeys&lt;/code> here will
not output private key), and the command is:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>openssl pkcs12 -clcerts -nokeys -in my_cert.p12 -out usercert.pem
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When prompted to &lt;code>“Enter Import Password”&lt;/code>, simply press enter since no
password should have been given when exporting from keychain.&lt;/p>
&lt;p>For further information on the options of the pkcs12 command, consult
&lt;code>man pkcs12&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>It is strongly recommended that the names of all these files are kept as shown.
Once in PEM format, the two files, &lt;code>userkey.pem&lt;/code> and &lt;code>usercert.pem&lt;/code>, should be
copied to a &lt;em>User Interface (UI)&lt;/em>. For example, the ‘standard’ location for Mac
would be &lt;code>.globus&lt;/code> directory in your &lt;code>$HOME&lt;/code>. I.e. &lt;code>$HOME/.globus/&lt;/code>&lt;/p>
&lt;h3 id="renewing-the-certificate">Renewing the Certificate&lt;/h3>
&lt;p>CAs issue certificates with a limited duration (usually one year); this implies
the need to renew them periodically. The renewal procedure usually requires that
the certificate holder sends a request for renewal signed with the old
certificate and/or that the request is confirmed by a phone call; the details
depend on the policy of the CA. The certificate usually needs to be renewed
before the old certificate expires; CAs may send an email to remind users that
renewal is necessary, but users should try to be aware of the renewal date, and
take appropriate action if they are away for extended periods of time.&lt;/p>
&lt;h3 id="taking-care-of-private-keys">Taking Care of Private Keys&lt;/h3>
&lt;p>A private key is the essence of your identity. Anyone who steals it can
impersonate the owner and if it is lost, it is no longer possible to do
anything. Certificates are issued personally to individuals, and must never be
shared with other users. To user EGI services, users must agree to an Acceptable
Use Policy, which among other things requires them to keep their private key
secure.&lt;/p>
&lt;p>On a UNIX UI, the certificate and private key are stored in two files. Typically
they are in a directory called &lt;code>$HOME/.globus&lt;/code> and are named &lt;code>usercert.pem&lt;/code> and
&lt;code>userkey.pem&lt;/code>, and it is strongly recommended that they are not changed. The
certificate is public and world-readable, but the key must only be readable by
the owner. The key should be stored on a disk local to the user&amp;rsquo;s UI rather
than, for example, an NFS-mounted disk. If a certificate has been exported from
a browser, a PKCS12-format file (&lt;code>.p12&lt;/code> or &lt;code>.pfx&lt;/code>), which contains the private
key, will have been locally stored and this file must be either encrypted,
hidden or have its access rights restricted to only the owner.&lt;/p>
&lt;p>If a private key is stored under the Andrew File System (AFS), access is
controlled by the AFS Access Control Lists (ACL) rather than the normal file
permissions, so users must ensure that the key is not in a publicly-readable
area.&lt;/p>
&lt;p>Web browsers also store private keys internally, and these also need to be
protected. The details vary depending on the browser, but password protection
should be used if available; this may not be the default (it is not with
Internet Explorer). The most secure mode is one in which every use of the
private key needs the password to be entered, but this can cause problems as
some sites ask for the certificate many times. Reaching a compromise between
security and convenience is vital here, so that neither come too short.&lt;/p>
&lt;p>It is important not to lose the private key, as this implies loss of all access
to the services, and registration will have to be started again from scratch.
Having several securely protected copies in different places is strongly
advised, so the certificate can be used from a web browser and several UI
machines.&lt;/p>
&lt;p>A private key stored on a UI must be encrypted, meaning that a passphrase must
be typed whenever it is used. A key must never be stored without a passphrase.
The passphrase should follow similar rules to any computer password. Users
should be aware of the usual risks, like people watching them type or
transmitting the passphrase over an insecure link.&lt;/p>
&lt;h2 id="authorisation">Authorisation&lt;/h2>
&lt;p>The sites authorise the access to their resources to a VO according to their own
access policies, resource location, how many resources is the VO allowed to use.
There are finer authorization policies, including groups, roles, in this way,
the users can be structured in a VO. So, it is not a 0/1 authorization policy.&lt;/p>
&lt;p>The community has full control of the access to the VO according to community
authorization policies. The VO membership, groups and roles are managed by VO
managers (Privileged VO members) independently by using the Virtual Organization
Membership Service (VOMS).&lt;/p>
&lt;h3 id="voms">VOMS&lt;/h3>
&lt;p>The Virtual Organization Membership Service (VOMS) is an attribute authority
which serves as central repository for VO user authorization information,
providing support for sorting users into group hierarchies, keeping track of
their roles and other attributes in order to issue trusted attribute
certificates and SAML assertions used in the Grid environment for authorization
purposes. VOMS is composed of two main components:&lt;/p>
&lt;ul>
&lt;li>the VOMS core service, which issues attribute certificates to authenticated
clients&lt;/li>
&lt;li>the VOMS Admin service, which is used by VO manager to administer VOs and
manage user membership details.&lt;/li>
&lt;/ul>
&lt;p>How does it work? Usually, users submit tasks/jobs to the infrastructure that
are attached with their own credential, and the credential is attached with a
proxy certificate that is a short-term credential signed with the user
certificate and is extended with the VO attributes. In general speaking, a user
credential is just an ID, and a proxy contains the VO details, so a resource
site by receiving the proxy can recognize that the user is part of such a VO
with such a role from such a group. A user can be part of multiple VO, thus can
generate multiple proxies.&lt;/p>
&lt;h3 id="register-to-a-vo">Register to a VO&lt;/h3>
&lt;p>Visit &lt;a href="https://operations-portal.egi.eu">Operation Portal&lt;/a> to search for
existing VOs&lt;/p>
&lt;!-- cSpell:word Enrollment -->
&lt;ol>
&lt;li>
&lt;p>If there are any community VOs matching your requirements (with &lt;em>Registry
System&lt;/em> is &lt;em>VOMS&lt;/em>), then click &lt;em>Action&lt;/em>-&amp;gt; &lt;em>Details&lt;/em> to look at the VO
information. In the &lt;em>VO ID Card&lt;/em> page, click the link for &lt;em>Enrollment URL&lt;/em>,
it will take you to the VO VOMS page. &lt;strong>You should have already discussed
with the EGI support team, they would help you to contact the VO managers and
get approval for your access.&lt;/strong> &lt;img src="vo_registration.png" alt="Register to a VO">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If there are no relevant VOs, you can send a request
&lt;a href="https://operations-portal.egi.eu/vo/registration">to register a new VO&lt;/a>.
(Note, for EGI services, you should request for &lt;code>VOMS configuration&lt;/code>, once VO
is configured, you will be notified about your VO VOMS link). More
information can be found at
&lt;a href="https://confluence.egi.eu/display/EGIPP/PROC14+VO+Registration">Guideline for VO registration&lt;/a>.
&lt;strong>Again, this is usually guided by the EGI support team. You should already
have a meeting with them to discuss your requirements. They will help you to
get resources from EGI providers, and sign
&lt;a href="https://confluence.egi.eu/display/EGISLM/EGI+OLA+SLA+framework">SLA&lt;/a> with
you.&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Request your VO membership at VO VOMS page. You will have to enter required
information and then wait for approval.&lt;/p>
&lt;p>&lt;img src="register_enmr_vo.png" alt="Register to enmr.eu vo">&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="creating-a-proxy">Creating a proxy&lt;/h2>
&lt;h3 id="voms-configuration">VOMS configuration&lt;/h3>
&lt;p>Every VO needs two different pieces of information:&lt;/p>
&lt;ul>
&lt;li>the &lt;code>vomses&lt;/code> configuration files, where the details of the VO are stored (e.g.
name, server, ports). These are stored by default at &lt;code>/etc/vomses&lt;/code> and are
normally named following this convention: &lt;code>&amp;lt;vo name&amp;gt;.&amp;lt;server name&amp;gt;&lt;/code> (e.g. for
fedcloud.egi.eu VO, you would have &lt;code>fedcloud.egi.eu.voms1.grid.cesnet.cz&lt;/code> and
&lt;code>fedcloud.egi.eu.voms2.grid.cesnet.cz&lt;/code>.&lt;/li>
&lt;li>the &lt;code>.lsc&lt;/code> files that describe the trust chain of the VOMS server. These are
stored at &lt;code>/etc/grid-security/vomsdir/&amp;lt;vo name&amp;gt;&lt;/code> and there should be one file
for each of the VOMS server of the VO.&lt;/li>
&lt;/ul>
&lt;p>You can check specific configuration for your VO at the
&lt;a href="https://operations-portal.egi.eu/vo/a/list">Operations portal&lt;/a>. Normally each VOMS
server has a &lt;em>Configuration Info&lt;/em> link where the exact information to include in
the &lt;code>vomses&lt;/code> and &lt;code>.lsc&lt;/code> files is shown.&lt;/p>
&lt;h3 id="proxy-creation">Proxy creation&lt;/h3>
&lt;p>Once you have the VO information configured (&lt;code>vomses&lt;/code> and &lt;code>.lsc&lt;/code>) and your
certificate available in your &lt;code>$HOME/.globus&lt;/code> directory you can create a VOMS
proxy to be used with clients with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>voms-proxy-init --voms &amp;lt;name of the vo&amp;gt; --rfc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>See for example, using &lt;code>fedcloud.egi.eu&lt;/code> VO:&lt;/p>
&lt;!-- markdownlint-disable line-length -->
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>voms-proxy-init --voms fedcloud.egi.eu --rfc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Enter GRID pass phrase:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your identity: /DC&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>org/DC&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>terena/DC&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>tcs/C&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>NL/O&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>EGI/OU&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>UCST/CN&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>Enol Fernandez
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Creating temporary proxy ......................................................... Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Contacting voms1.grid.cesnet.cz:15002 &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>/DC&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>cz/DC&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>cesnet-ca/O&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>CESNET/CN&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>voms1.grid.cesnet.cz&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;fedcloud.egi.eu&amp;#34;&lt;/span> Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Creating proxy ................................................................... Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your proxy is valid &lt;span style="color:#204a87;font-weight:bold">until&lt;/span> Mon Feb &lt;span style="color:#0000cf;font-weight:bold">4&lt;/span> 23:37:21 &lt;span style="color:#0000cf;font-weight:bold">2019&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- markdownlint-enable line-length --></description></item></channel></rss>