Re: [Freeipa-users] Limiting group/user visibility

2011-12-09 Thread Lassi Pölönen
On 2011-12-08 17:36, Rob Crittenden wrote:
> Lassi Pölönen wrote:
>> On 7.12.2011 21:28, Dmitri Pal wrote:
>>>> So I came in to conclusion I just create a role for each customer, e.g
>>>> "Customer1" and assign that role to all customer's user groups and
>>>> hosts
>>>> (too bad it isn't possible to assign a role to a hostgroup) . This
>>>> requires an aci to be created for each customer though:
>>>>

Actually it seems to be possible to assign roles to host groups as well.
Just not from Identity -> Host groups. IPA Server -> RBAC -> Roles has
the option though.



> Unless you need per-object acis you can probably simplify the filter
> to cover the entire DIT by dropping the target and using just the
> targetfilter.
>
> I'd recommend verifying that data doesn't leak via schema compat if
> you have that enabled.
>
> rob

Looks like dropping the target prevents a user from logging in, so
apparently there's some entries that need to be accessible other than
those labeled with memberOf . One additional thing came in to my
mind: user private groups probably need to be accessible as well. At
least by default there doesn't seem to be a way to assign the same role
for those as well.



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-12-07 Thread Lassi Pölönen

On 7.12.2011 21:28, Dmitri Pal wrote:

I think I found at least one solution, that probably isn't the most
elegant one. On the other hand I don't think with the current
limitations of FreeIPA it is even possible to do much better. Any
comments/suggestions are of course welcome.

My first approach was to remove the default aci:
   (targetattr != "userPassword || krbPrincipalKey || sambaLMPassword ||
sambaNTPassword || passwordHistory || krbMKey || userPKCS12")(version
3.0; acl "Enable Anonymous access"; allow (read, search, compare) userdn
= "ldap:///anyone";;)

and add needed permissions to specified user groups. But it appeared
that there are other things that rely on this aci and as a result e.g
"ipa user-find foo" stopped working as well (executed from the FreeIPA
server with admin session). I figured it might be a bit too painful to
try to find out all the needed aci rules if the default one is removed.

So I came in to conclusion I just create a role for each customer, e.g
"Customer1" and assign that role to all customer's user groups and hosts
(too bad it isn't possible to assign a role to a hostgroup) . This
requires an aci to be created for each customer though:

   aci: (target =
"ldap:///uid=*,cn=users,cn=accounts,dc=test";)(targetfilter="(!(memberOf=cn=Customer1,cn=roles,cn=accounts,dc=test))")(targetattr
= "*")(version 3.0;acl "permission:View only Customer1";deny(all)
groupdn = "ldap:///cn=Customer1,cn=roles,cn=accounts,dc=test";;)

Well, actually not just one aci, but probably one for groups and so on,
but with the same idea. The actual amount of required ACIs is still
unclear since I just started testing this out, but even though there
were 10 ACIs per customer I find it easier to manage than the amount of
FreeIPA installations it would take to run an own domain for each.

With this setup, customer's users and hosts shouldn't see data outside
of their role. 389-ds's aci macros seem to have a limitation that if
($dn) is used in targetfilter, there has to be ($dn) in target as well.
But since the user tree is flat, it doesn't seem to be possible to take
the advantage of macro ACIs even though there's a obvious pattern in the
way I'd like things to work. It is easily scripted though.

I think the elegant solution would require FreeIPA to support multiple
domains or configurable directory structure. I've seen some discussion
about the latter and I do understand why many people are not fans of it.



Seems like the right direction to me.
Would you mind creating a wiki page that would outline the solution when
it is ready.
It seems that other people would benefit from your experience.

Also it would be great to understand how we can make the process of
configuring ACIs simpler for someone.
There is definitely a room for improvement so if you can file a trac
ticket or BZ (or several) with your enhancement recommendations would be
great.


Sure thing, once I figure out all the bits and pieces. My use case 
doesn't cover e.g mounts but will try to look into all the aspects. 
Currently the possible caveats are still unknown as well.


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-12-07 Thread Lassi Pölönen
On 2011-12-01 19:01, Lassi Pölönen wrote:
> On 1.12.2011 15:12, Stephen Gallagher wrote:
>> On Thu, 2011-12-01 at 13:46 +0100, Jakub Hrozek wrote:
>>> On Wed, Nov 30, 2011 at 01:18:46PM +0200, Lassi Pölönen wrote:
>>>> Hi,
>>>>
>>>> I'm looking for implementing FreeIPA in an environment where there are
>>>> multiple customers in multiple organizations and a single organization
>>>> that manages the users, sets the access rights etc.
>>>>
>>>> We don't have a centralized system currently so I will be starting
>>>> from
>>>> the scratch in that sense. The first concern I've had so far is
>>>> that we
>>>> don't want different customers to be able to find information about
>>>> each
>>>> other. Currently in my test setup any user can find out every user
>>>> in a
>>>> group if they know the group name and all the groups for each user if
>>>> they know the username. In some cases this might reveal information
>>>> the
>>>> customer is not willing to share.
>>>>
>>>> So are there ways to limit that e.g certain hosts/hostgroups or
>>>> users/usergroups see some defined subset of the directory? Or are
>>>> there
>>>> some other suggested approaches? As the current setup relies on local
>>>> authentication, users naturally are able to find users/groups only on
>>>> servers they are able to log in and that is the level of
>>>> confidentiality
>>>> we are looking for if possible
>>>>
>>>>
>>>> -Lassi Pölönen
>>>>
>>>>
>>> If you insist on a single instance for multiple organizations, then I
>>> agree with Stephen Ingram that the correct way would be to setup ACIs.
>>>
>>> You could also abuse the ldap_user_search_filter and
>>> ldap_group_search_filter
>>> parameters to limit NSS lookups performed by SSSD. However, nothing
>>> would prevent clients from looking at the directory structure with
>>> ldapsearch or using the IPA UI.
>> Please note that the *search_filter options aren't fully functional yet.
>> We're improving them substantially for the 1.7.0 release of SSSD.
>>
>> But Jakub is right: if you manipulate the ACIs of your user entries,
>> then you can restrict which client machines can see those entries.
>
> Ok, thanks for the replies. ACIs sound like pretty much the only
> feasible solution and still less things to maintain than completely
> dedicated setups. Will look in to 389's documentation for more.
>
>

I think I found at least one solution, that probably isn't the most
elegant one. On the other hand I don't think with the current
limitations of FreeIPA it is even possible to do much better. Any
comments/suggestions are of course welcome.

My first approach was to remove the default aci:
  (targetattr != "userPassword || krbPrincipalKey || sambaLMPassword ||
sambaNTPassword || passwordHistory || krbMKey || userPKCS12")(version
3.0; acl "Enable Anonymous access"; allow (read, search, compare) userdn
= "ldap:///anyone";;)

and add needed permissions to specified user groups. But it appeared
that there are other things that rely on this aci and as a result e.g
"ipa user-find foo" stopped working as well (executed from the FreeIPA
server with admin session). I figured it might be a bit too painful to
try to find out all the needed aci rules if the default one is removed.

So I came in to conclusion I just create a role for each customer, e.g
"Customer1" and assign that role to all customer's user groups and hosts
(too bad it isn't possible to assign a role to a hostgroup) . This
requires an aci to be created for each customer though:

  aci: (target =
"ldap:///uid=*,cn=users,cn=accounts,dc=test";)(targetfilter="(!(memberOf=cn=Customer1,cn=roles,cn=accounts,dc=test))")(targetattr
= "*")(version 3.0;acl "permission:View only Customer1";deny(all)
groupdn = "ldap:///cn=Customer1,cn=roles,cn=accounts,dc=test";;)

Well, actually not just one aci, but probably one for groups and so on,
but with the same idea. The actual amount of required ACIs is still
unclear since I just started testing this out, but even though there
were 10 ACIs per customer I find it easier to manage than the amount of
FreeIPA installations it would take to run an own domain for each.

With this setup, customer's users and hosts shouldn't see data outside
of their role. 389-ds's aci macros seem to have a limitation that if
($dn) is used in targetfilter, there has to be ($dn) in target as well.
But since the user tree is flat, it doesn't seem to be possible to take
the advantage of macro ACIs even though there's a obvious pattern in the
way I'd like things to work. It is easily scripted though.

I think the elegant solution would require FreeIPA to support multiple
domains or configurable directory structure. I've seen some discussion
about the latter and I do understand why many people are not fans of it.




___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-12-03 Thread Lassi Pölönen

On 2.12.2011 17:41, Simo Sorce wrote:

On Fri, 2011-12-02 at 08:01 -0600, david t. klein wrote:

I think, rather than replicating your admin accounts, have a separate admin
realm, and then have all customer realms trust your admin realm, and use
those credentials.

In future this will be an easier way.
But right now trust relationships won't allow you to use a single admin
account to actually manage multiple freeipa realms.

Simo.


From my point of view the fact that a single instance is only able to 
run a single realm is even a bigger issue. But I think we can accomplish 
what we need with pretty simple ACIs since the need for limiting the 
visibility isn't too complex and follows the same pattern with every 
customer.


-Lassi

___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-12-01 Thread Lassi Pölönen
On 2011-12-01 19:01, Lassi Pölönen wrote:
> On 1.12.2011 15:12, Stephen Gallagher wrote:
>> On Thu, 2011-12-01 at 13:46 +0100, Jakub Hrozek wrote:
>>> On Wed, Nov 30, 2011 at 01:18:46PM +0200, Lassi Pölönen wrote:
>>>> Hi,
>>>>
>>>> I'm looking for implementing FreeIPA in an environment where there are
>>>> multiple customers in multiple organizations and a single organization
>>>> that manages the users, sets the access rights etc.
>>>>
>>>> We don't have a centralized system currently so I will be starting
>>>> from
>>>> the scratch in that sense. The first concern I've had so far is
>>>> that we
>>>> don't want different customers to be able to find information about
>>>> each
>>>> other. Currently in my test setup any user can find out every user
>>>> in a
>>>> group if they know the group name and all the groups for each user if
>>>> they know the username. In some cases this might reveal information
>>>> the
>>>> customer is not willing to share.
>>>>
>>>> So are there ways to limit that e.g certain hosts/hostgroups or
>>>> users/usergroups see some defined subset of the directory? Or are
>>>> there
>>>> some other suggested approaches? As the current setup relies on local
>>>> authentication, users naturally are able to find users/groups only on
>>>> servers they are able to log in and that is the level of
>>>> confidentiality
>>>> we are looking for if possible
>>>>
>>>>
>>>> -Lassi Pölönen
>>>>
>>>>
>>> If you insist on a single instance for multiple organizations, then I
>>> agree with Stephen Ingram that the correct way would be to setup ACIs.
>>>
>>> You could also abuse the ldap_user_search_filter and
>>> ldap_group_search_filter
>>> parameters to limit NSS lookups performed by SSSD. However, nothing
>>> would prevent clients from looking at the directory structure with
>>> ldapsearch or using the IPA UI.
>> Please note that the *search_filter options aren't fully functional yet.
>> We're improving them substantially for the 1.7.0 release of SSSD.
>>
>> But Jakub is right: if you manipulate the ACIs of your user entries,
>> then you can restrict which client machines can see those entries.
>
> Ok, thanks for the replies. ACIs sound like pretty much the only
> feasible solution and still less things to maintain than completely
> dedicated setups. Will look in to 389's documentation for more.
>

Replying to myself.. Actually I would think my goal would be pretty
typical setup for managed hosting companies like us as we are the ones
who manage all the accounts and servers for our customer organizations.
We grant customer access to servers we host and we should have our own
accounts on every server as well. Running multiple domains in this case
means we would need to replicate our admin accounts to every domain (not
sure if there's even a feasible solution to do that) and also manage
customer accounts on multiple FreeIPA installations. Running a single
domain would make it easier to provide a single account for customers
for services that are common to every customer, e.g ticketing system,
wikis and so on. It's just that they shouldn't be able to know about
each other. Anyway, looking at macro ACIs, it at least looks like it's
possible to accomplish with a few pretty simple rules.




___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-12-01 Thread Lassi Pölönen

On 1.12.2011 15:12, Stephen Gallagher wrote:

On Thu, 2011-12-01 at 13:46 +0100, Jakub Hrozek wrote:

On Wed, Nov 30, 2011 at 01:18:46PM +0200, Lassi Pölönen wrote:

Hi,

I'm looking for implementing FreeIPA in an environment where there are
multiple customers in multiple organizations and a single organization
that manages the users, sets the access rights etc.

We don't have a centralized system currently so I will be starting from
the scratch in that sense. The first concern I've had so far is that we
don't want different customers to be able to find information about each
other. Currently in my test setup any user can find out every user in a
group if they know the group name and all the groups for each user if
they know the username. In some cases this might reveal information the
customer is not willing to share.

So are there ways to limit that e.g certain hosts/hostgroups or
users/usergroups see some defined subset of the directory? Or are there
some other suggested approaches? As the current setup relies on local
authentication, users naturally are able to find users/groups only on
servers they are able to log in and that is the level of confidentiality
we are looking for if possible


-Lassi Pölönen



If you insist on a single instance for multiple organizations, then I
agree with Stephen Ingram that the correct way would be to setup ACIs.

You could also abuse the ldap_user_search_filter and ldap_group_search_filter
parameters to limit NSS lookups performed by SSSD. However, nothing
would prevent clients from looking at the directory structure with
ldapsearch or using the IPA UI.

Please note that the *search_filter options aren't fully functional yet.
We're improving them substantially for the 1.7.0 release of SSSD.

But Jakub is right: if you manipulate the ACIs of your user entries,
then you can restrict which client machines can see those entries.


Ok, thanks for the replies. ACIs sound like pretty much the only 
feasible solution and still less things to maintain than completely 
dedicated setups. Will look in to 389's documentation for more.



___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


Re: [Freeipa-users] Limiting group/user visibility

2011-11-30 Thread Lassi Pölönen

Hi,

that could be one option as well, not completely ruled out. But in some 
cases it is a bit too much overhead though. If there are multiple small 
organizations with only a handful of account and servers, setting up a 
dedicated HA instance for each one doesn't feel very cost effective as 
it would mean tens of those. Currently a single installation can't 
handle multiple realms, am I right?


-Lassi Pölönen

On 30.11.2011 21:01, Steven Jones wrote:

Hi,

I would have thought this was a case/design of separate realm's.

regards

Steven Jones

Technical Specialist - Linux RHCE

Victoria University, Wellington, NZ

0064 4 463 6272


From: freeipa-users-boun...@redhat.com [freeipa-users-boun...@redhat.com] on 
behalf of Lassi Pölönen [lassi.polo...@iki.fi]
Sent: Thursday, 1 December 2011 12:18 a.m.
To: freeipa-users@redhat.com
Subject: [Freeipa-users] Limiting group/user visibility

Hi,

I'm looking for implementing FreeIPA in an environment where there are
multiple customers in multiple organizations and a single organization
that manages the users, sets the access rights etc.

We don't have a centralized system currently so I will be starting from
the scratch in that sense. The first concern I've had so far is that we
don't want different customers to be able to find information about each
other. Currently in my test setup any user can find out every user in a
group if they know the group name and all the groups for each user if
they know the username. In some cases this might reveal information the
customer is not willing to share.

So are there ways to limit that e.g certain hosts/hostgroups or
users/usergroups see some defined subset of the directory? Or are there
some other suggested approaches? As the current setup relies on local
authentication, users naturally are able to find users/groups only on
servers they are able to log in and that is the level of confidentiality
we are looking for if possible


-Lassi Pölönen


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users


[Freeipa-users] Limiting group/user visibility

2011-11-30 Thread Lassi Pölönen
Hi,

I'm looking for implementing FreeIPA in an environment where there are
multiple customers in multiple organizations and a single organization
that manages the users, sets the access rights etc.

We don't have a centralized system currently so I will be starting from
the scratch in that sense. The first concern I've had so far is that we
don't want different customers to be able to find information about each
other. Currently in my test setup any user can find out every user in a
group if they know the group name and all the groups for each user if
they know the username. In some cases this might reveal information the
customer is not willing to share.

So are there ways to limit that e.g certain hosts/hostgroups or
users/usergroups see some defined subset of the directory? Or are there
some other suggested approaches? As the current setup relies on local
authentication, users naturally are able to find users/groups only on
servers they are able to log in and that is the level of confidentiality
we are looking for if possible


-Lassi Pölönen


___
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users