A set of puppet recipes will be developed to automate the deployment of an Identity management test infrastructure on EC2 and UEC. Openldap and MIT Kerberos are glued together by puppet recipes to provide user and group management.

Release Note


Identity management infrastructures can take quite some time to setup. Providing a testing platform that can be automatically set up and teared down can help in streamlining the testing of Ubuntu integration into an identity management infrastructures.

User stories

  • Jerry, an Ubuntu developer, wants to test if the update of the kerberos clients he is preparing is still functional. He logs into his EC2 account and starts several instances to create a complete Identity Management test environment.
  • Fred, a system administrator at a school, needs to deploy a central Identity Management solution for his labs. He looks at the puppet recipes for the Identity Management test environment to get started in deploying his own solution.



Automated deployment using puppet recipes

Every instance is configured via puppet recipes. Relevant packages are installed automatically with the debconf answers preseeded and the necessary package integration done. Kerberos principals are automatically created by puppet which uses an admin account.

A puppet master will be hosted on the Master Id server to bootstrap the puppet infrastructure.


The test architecture is composed by different instances running in the same security zone.

Master Id Server

Runs Openldap slapd and MIT KDC which are connected via slapi.


The DIT, schemas, overlays and modules are based on the openldap-dit project. It provides an infrastructure to cover user and group management based on openldap and MIT kerberos.


The base dn needs to follow the convention of dc=domain,dc=toplevel otherwise ldap resolution via dns srv record won't work. For EC2, the default base dn is dc=compute-1,dc=internal.

  • dc=compute-1,dc=internal
    • ou=People
    • ou=Groups
    • ou=Services
    • ou=Realms
    • ou=System Accounts
      • cn=kdc-service
      • cn=kadmin-service
    • ou=System Groups
      • cn=Directory Admins
      • cn=Account Admins
      • cn=Directory Replicators
      • cn=Directory Monitors
    • ou=Password Policies
      • cn=default


Schemas relevant to user and group management:

  • cosine
  • inetorgperson
  • mit-kerberos
  • rfc2307bis (latest draft -02)
  • ppolicy

  • ppolicy
  • refint
  • syncprov
  • unique

password policies

Password policies can be handled either by MIT kerberos or by LDAP. However the KDC is not able to leverage the LDAP model. Kerberos password policies are used by pam_krb5 while LDAP password policies are used by pam_ldap.


Slapd is configured as a provider to be used for Mirror Mode.

ACLs for slaves is controlled via SASL maps to the cn=Directory Replicators group:

access to dn.subtree="dc=example,dc=com"
        by group.exact="cn=Replicator,ou=Group,dc=soe,dc=ucsc,dc=edu" read
        by * break

limits group="cn=Replicator,ou=Group,dc=soe,dc=ucsc,dc=edu"




A puppet recipe is responsible for:

  1. installing slapd package
  2. installing openldap-test-dit package
  3. installing krb5 package
  4. configuring krb5 to use openldap as its backend
  5. create a puppet admin principal

Slave Id Server(s)

Runs both Openldap slapd and MIT KDC via slapi.

The data store is read-only and replicated from the master via the openldap replication protocol in Mirror Mode. Write requests are transparently redirected to the master by the slapo-chain overlay.

A principal is created for the slave (ldap/slave.fqdn@REALM) under ou=Services. kstart is used to refresh the ticket for the slave slapd service.

The slave uses kerberos to access the master (via SASL+GSSAPI):




A puppet recipe is responsible for:

  1. installing slapd package
  2. creating a replication ldap principal using the puppet admin principal
  3. configuring slapd to replicate from the master server and redirect write request to the master
  4. installing krb5 package
  5. configuring krb5 to use openldap as its backend

DNS server

The dns server publishes kerberos and ldap related DNS records as well as cname for hosts:

  • _kerberos TXT
  • _kerberos._udp SRV
  • _kerberos-master._udp SRV
  • _kpasswd._udp SRV
  • _ldap._tcp SRV

Example (BIND-style):

     _kerberos               TXT       "FOOBAR.COM"
     kerberos                CNAME     daisy
     kerberos-1              CNAME     use-the-force-luke
     kerberos-2              CNAME     bunny-rabbit
     _kerberos._udp          SRV       0 0 88 daisy
                             SRV       0 0 88 use-the-force-luke
                             SRV       0 0 88 bunny-rabbit
     _kerberos-master._udp   SRV       0 0 88 daisy
     _kerberos-adm._tcp      SRV       0 0 749 daisy
     _kpasswd._udp           SRV       0 0 464 daisy

The DNS server acts as a forwarder as well forwarding to the default dns server. In EC2 the default dns server does the correct resolution for AA/PTR records which are used in kerberos canonicalisation.

Every instance in the security zone uses the dns server by default.


A puppet recipe is responsible for:

  • installing bind9
  • configure bind9 zones with the relevant ip addresses for the kerberos and ldap services.

File server

Runs kerberized file services:

  • nfs
  • cifs


A puppet recipe is responsible for:

  • installing nfs-server and samba packages
  • create the host, nfs and cifs principals using the puppet admin principal


See the work items in the blueprint.

Test/Demo Plan

Unresolved issues

BoF agenda and discussion

UDS Session notes


Provide a reference identity management environment covering user and group mgmt deployable on UEC/EC2 with puppet. Instances will be setup using puppet recipes and be used for testing purposes of the login integration. The reference platform integrates openldap and MIT kerberos for authentication and login purposes.

Define the overall architecture:

  • - review the openldap-dit project - required packages (slapd, krb5) - necessary glue to be written via puppet recipes



  • - schemas - DIT - ACLs - sudo role - dns - dhcp - RFC 2307 (user and group defintion) - Samba

Package available but not uploaded at the moment. Needs testing Convert some of the to debconf questions.

Reliance on DNS? -> need to integrate a DNS server in the infrastructure.

  • publish _srv records.
  • included in the puppet recipes.

Target architecture:

  • Instances:
    1. Master slapd+KDC
    2. (2 or more) Replicated slapd+KDC (multiple instances)
    3. File server (nfs, cifs server)
    4. Dns server

Possible extension:

  • - any server that consumes idm


User and group mgmt: rfc 2307

  • latest version from howard's draft

ppolicy is not the latest one. Inter related with mit kerberos

  • should not be used in the test environement?

DHCP is out of scope (because of the cloud environment)

Client testing:

  • - AutoFS component? - NFSv4. - samba (including joining machines to domain and logging with domain user) - password expiration, password history, changing password. (need to sync multiple passwords for Samba)


IdMgmtTestEnv (last edited 2009-11-26 02:56:25 by dsl-173-206-1-210)