Search code examples
authenticationrundeck

*.aclpolicy file not works - Auth using Active Directory


Summarizing my environment:

  • Running Rundeck (3.3.11) at Kuberenetes Cluster
  • Dedicated Database MariaDB connected via JDBC Connector.
  • Configured Active Directory via JAAS using the variables RUNDECK_JAAS_LDAP_ * and auth working, I can logon using my AD user.
  • Configured ACL Policy template using K8s Secret like in this Zoo sample:
         volumeMounts:
            - name: aclpolicy
              mountPath: /home/rundeck/etc/rundeck-adm.aclpolicy
              subPath: rundeck-adm.aclpolicy
      volumes:
        - name: aclpolicy
          secret:
            secretName: rundeck-adm-policy
            items:
            - key: rundeck-admin-role.yaml
              path: rundeck-adm.aclpolicy

Variables exported to Rundeck Pod:

RUNDECK_JAAS_MODULES_0=JettyCombinedLdapLoginModule
RUNDECK_JAAS_LDAP_USERBASEDN=OU=Users,OU=MYBRAND,DC=corp,DC=MYDOMAIN
RUNDECK_JAAS_LDAP_ROLEBASEDN=OU=RundeckRoles,OU=Users,OU=MYBRAND,DC=corp,DC=MYDOMAIN
RUNDECK_JAAS_LDAP_FLAG=sufficient
RUNDECK_JAAS_LDAP_BINDDN=myrundeckuser@mybrand.mydomain
RUNDECK_JAAS_LDAP_BINDPASSWORD=foo

In my MS Active Directory the structure is:

-mybrand.mydomain
 - MYBRAND
   - Users
     - RundeckRoles
       - rundeck-adm (group with my user associated)

After I login returns this screen: enter image description here

EDIT1: My rundeck-admin-role.yaml:

description: Admin project level access control. Applies to resources within a specific project.
context:
  project: '.*' # all projects
for:
  resource:
    - equals:
        kind: job
      allow: [create] # allow create jobs
    - equals:
        kind: node
      allow: [read,create,update,refresh] # allow refresh node sources
    - equals:
        kind: event
      allow: [read,create] # allow read/create events
  adhoc:
    - allow: [read,run,runAs,kill,killAs] # allow running/killing adhoc jobs
  job:
    - allow: [create,read,update,delete,run,runAs,kill,killAs] # allow create/read/write/delete/run/kill of all jobs
  node:
    - allow: [read,run] # allow read/run for nodes
by:
  group: rundeck-adm

---

description: Admin Application level access control, applies to creating/deleting projects, admin of user profiles, viewing projects and reading system information.
context:
  application: 'rundeck'
for:
  resource:
    - equals:
        kind: project
      allow: [create] # allow create of projects
    - equals:
        kind: system
      allow: [read,enable_executions,disable_executions,admin] # allow read of system info, enable/disable all executions
    - equals:
        kind: system_acl
      allow: [read,create,update,delete,admin] # allow modifying system ACL files
    - equals:
        kind: user
      allow: [admin] # allow modify user profiles
  project:
    - match:
        name: '.*'
      allow: [read,import,export,configure,delete,admin] # allow full access of all projects or use 'admin'
  project_acl:
    - match:
        name: '.*'
      allow: [read,create,update,delete,admin] # allow modifying project-specific ACL files
  storage:
    - allow: [read,create,update,delete] # allow access for /ssh-key/* storage content

by:
  group: rundeck-adm

Someone can help me to find my mistake?


Solution

  • Guys I found the trouble!

    It was missing to add some variables RUNDECK_JAAS_LDAP_ROLEMEMBERATTRIBUTE and RUNDECK_JAAS_LDAP_ROLEOBJECTCLASS, by default if you don't declare that, Rundeck assume another values. After I apply this vars and re-deploy my Rundeck Pod back works my access using my AD Account.

    To help the community I'm making available the list of vars that I used in my deployment:

    "JVM_MAX_RAM_PERCENTAGE"
    "RUNDECK_DATABASE_URL"
    "RUNDECK_DATABASE_DRIVER"
    "RUNDECK_DATABASE_USERNAME"
    "RUNDECK_DATABASE_PASSWORD"
    "RUNDECK_LOGGING_AUDIT_ENABLED"
    "RUNDECK_JAAS_MODULES_0"
    "RUNDECK_JAAS_LDAP_FLAG"
    "RUNDECK_JAAS_LDAP_PROVIDERURL"
    "RUNDECK_JAAS_LDAP_BINDDN"
    "RUNDECK_JAAS_LDAP_BINDPASSWORD"
    "RUNDECK_JAAS_LDAP_USERBASEDN"
    "RUNDECK_JAAS_LDAP_ROLEBASEDN"
    "RUNDECK_GRAILS_URL"
    "RUNDECK_SERVER_FORWARDED"
    "RUNDECK_JAAS_LDAP_USERRDNATTRIBUTE"
    "RUNDECK_JAAS_LDAP_USERIDATTRIBUTE"
    "RUNDECK_JAAS_LDAP_ROLEMEMBERATTRIBUTE"
    

    The JAAS plugin that I use was: JettyCombinedLdapLoginModule