Files
freeipa/ipalib/plugins/rolegroup.py
T
Rob Crittenden bd619adb5c Use a new mechanism for delegating certificate issuance.
Using the client IP address was a rather poor mechanism for controlling
who could request certificates for whom. Instead the client machine will
bind using the host service principal and request the certificate.

In order to do this:
* the service will need to exist
* the machine needs to be in the certadmin rolegroup
* the host needs to be in the managedBy attribute of the service

It might look something like:

admin

ipa host-add client.example.com --password=secret123
ipa service-add HTTP/client.example.com
ipa service-add-host --hosts=client.example.com HTTP/client.example.com
ipa rolegroup-add-member --hosts=client.example.com certadmin

client

ipa-client-install
ipa-join -w secret123
kinit -kt /etc/krb5.keytab host/client.example.com
ipa -d cert-request file://web.csr --principal=HTTP/client.example.com
2009-11-03 09:04:05 -07:00

123 lines
2.7 KiB
Python

# Authors:
# Rob Crittenden <rcritten@redhat.com>
# Pavel Zuna <pzuna@redhat.com>
#
# Copyright (C) 2009 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; version 2 only
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
Rolegroups
"""
from ipalib import api
from ipalib import Str
from ipalib.plugins.baseldap import *
class rolegroup(LDAPObject):
"""
Rolegroup object.
"""
container_dn = api.env.container_rolegroup
object_name = 'rolegroup'
object_name_plural = 'rolegroups'
object_class = ['ipaobject', 'groupofnames', 'nestedgroup']
default_attributes = ['cn', 'description', 'member', 'memberof']
uuid_attribute = 'ipauniqueid'
attribute_names = {
'cn': 'name',
'member user': 'member users',
'member group': 'member groups',
'member host': 'member hosts',
'member hostgroup': 'member hostgroups',
'memberof taskgroup': 'member of taskgroup',
}
attribute_members = {
'member': ['user', 'group', 'host', 'hostgroup'],
'memberof': ['taskgroup'],
}
takes_params = (
Str('cn',
cli_name='name',
doc='group name',
primary_key=True,
normalizer=lambda value: value.lower(),
),
Str('description',
cli_name='desc',
doc='A description of this group',
),
)
api.register(rolegroup)
class rolegroup_add(LDAPCreate):
"""
Create new rolegroup.
"""
api.register(rolegroup_add)
class rolegroup_del(LDAPDelete):
"""
Delete rolegroup.
"""
api.register(rolegroup_del)
class rolegroup_mod(LDAPUpdate):
"""
Edit rolegroup.
"""
api.register(rolegroup_mod)
class rolegroup_find(LDAPSearch):
"""
Search for rolegroups.
"""
api.register(rolegroup_find)
class rolegroup_show(LDAPRetrieve):
"""
Display rolegroup.
"""
api.register(rolegroup_show)
class rolegroup_add_member(LDAPAddMember):
"""
Add member to rolegroup.
"""
api.register(rolegroup_add_member)
class rolegroup_remove_member(LDAPRemoveMember):
"""
Remove member from rolegroup.
"""
api.register(rolegroup_remove_member)