创建 jaas-activedirectory.conf 文件
创建一个 jaas-activedirectory.conf
文件,如下所示:
# vi /etc/rundeck/jaas-activedirectory.conf activedirectory { com.dtolabs.rundeck.jetty.jaas.JettyCachingLdapLoginModule required debug="true" contextFactory="com.sun.jndi.ldap.LdapCtxFactory" providerUrl="ldap://IP_DOMAIN_CONTROLER:389" bindDn="CN=YOUR_BIND_USER,OU=Rundeck,OU=Application,DC=onitroad,DC=LOCAL" bindPassword="XXXXXXXXXXXXXXX" authenticationMethod="simple" forceBindingLogin="true" userBaseDn="DC=onitroad,DC=LOCAL" userRdnAttribute="sAMAccountName" userIdAttribute="sAMAccountName" userPasswordAttribute="unicodePwd" userObjectClass="user" roleBaseDn="OU=Rundeck,OU=Application,DC=onitroad,DC=LOCAL" roleNameAttribute="cn" roleMemberAttribute="member" roleObjectClass="group" cacheDurationMillis="300000" reportStatistics="true"; };
providerUrl
:域控制器的 IP 地址或者 FQDNbindDn
:LDAP 绑定用户专有名称bindPassword
: LDAP 绑定用户的密码userBaseDn
:用作查找用户的搜索库的专有名称。
roleBaseDn
:rundeck 安全组所在的 OU。
最后,更改文件的所有权并设置正确的权限:
# chown rundeck:rundeck /etc/rundeck/jaas-activedirectory.conf # chmod 640 /etc/rundeck/jaas-activedirectory.conf
编辑 /etc/rundeck/profile
我们需要将路径添加到 jaas-activedirectory.conf
文件并将 Dloginmodule.name
值设置为 activedirectory
。
修改/etc/rundeck/profile
如下:
# vi /etc/rundeck/profile ############## Before ##################### RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \ -Dloginmodule.name=$LOGIN_MODULE \ ############# After ####################### RDECK_JVM="-Djava.security.auth.login.config=/etc/rundeck/jaas-activedirectory.conf \ -Dloginmodule.name=activedirectory \
创建 /etc/rundeck/rundeck_users.aclpolicy 文件
我们需要为 rundeck_users
AD 安全组创建一个名为 rundeck_users.aclpolicy
的 ACL 策略文件,该文件将在 Rundeck 中只读访问
# vi /etc/rundeck/rundeck_users.aclpolicy description: Standard Users project level access control. context: project: '.*' # all projects for: resource: - equals: kind: job allow: [read] # allow read jobs - equals: kind: node allow: [read] # allow refresh node sources - equals: kind: event allow: [read] # allow read/read events adhoc: - allow: [read] # allow read adhoc jobs job: - allow: [read] # allow read of all jobs node: - allow: [read] # allow read for nodes by: group: rundeck_users -- description: A context: application: 'rundeck' for: resource: - equals: kind: project allow: [read] # allow read of projects - equals: kind: system allow: [read] # allow read executions - equals: kind: system_acl allow: [read] # allow reading system ACL files project: - match: name: '.*' allow: [read] # allow read access of all projects or use 'admin' project_acl: - match: name: '.*' allow: [read] # allow reading project-specific ACL files storage: - allow: [read] # allow read access for /ssh-key/* storage content by: group: rundeck_users
更改所有权并设置“rundeck_users.aclpolicy”的正确权限如下:
chown rundeck:rundeck /etc/rundeck/rundeck_users.aclpolicy chmod 640 /etc/rundeck/rundeck_users.aclpolicy
什么是Rundeck?
Rundeck 是一个开源软件作业调度程序和运行手册自动化系统,用于跨开发和生产环境自动化日常流程。
它结合了任务调度、多节点命令执行、工作流编排并记录发生的一切。
默认情况下,Rundeck 带有默认的本地用户帐户。
Rundeck 支持 LDAP、Active Directory、PAM 和 Pre-Auth 方法。
在本教程中,我们将展示如何配置基于 LDAP/AD 的身份验证。
本教程假设我们已经安装了 Rundeck,如果我们还没有安装,我们可以查看本教程:如何在 CentOS 7/RHEL 7 上安装和配置 Rundeck
在 Active Directory 中创建绑定用户和安全组
在将 Rundeck 与 Active Directory 集成之前,我们需要创建一个绑定用户和两个名为 rundeck_administrators
和 rundeck_users
的安全组。
最后,在继续之前将适当的用户添加到这些组中。
重启 Rundeck
最后重启 Rundeck 守护进程:
# systemctl restart rundeckd
创建 /etc/rundeck/rundeck_administrators.aclpolicy 文件
让我们为 rundeck_administrators
AD 安全组创建一个名为 rundeck_administrators.aclpolicy
的 ACL 策略文件,该文件将在 Rundeck 中具有管理员访问权限
# vi /etc/rundeck/rundeck_administrators.aclpolicy description: Administrators, all access. 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,toggle_schedule] # allow create/read/write/delete/run/kill of all jobs node: - allow: [read,run] # allow read/run for nodes by: group: rundeck_administrators -- description: Administrators, all access. 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_administrators
更改所有权并设置“rundeck_administrators.aclpolicy”的正确权限如下:
chown rundeck:rundeck /etc/rundeck/rundeck_administrators.aclpolicy chmod 640 /etc/rundeck/rundeck_administrators.aclpolicy
编辑 /var/lib/rundeck/exp/webapp/WEB-INF/web.xml 文件
通过编辑文件/var/lib/rundeck/exp/webapp/WEB-INF/web.xml
来创建新角色
# vi /var/lib/rundeck/exp/webapp/WEB-INF/web.xml <security-role> <role-name>rundeck_administrators</role-name> </security-role> <security-role> <role-name>rundeck_users</role-name> </security-role>