创建 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_usersAD 安全组创建一个名为 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_administratorsAD 安全组创建一个名为 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>
