自动化运维工具rundeck
GitHub - rundeck 是java开发的开源自动化服务,具有 Web 控制台、命令行工具和 WebAPI。它使您可以轻松地跨一组节点运行自动化任务,适合运维自动化管理、自动发布管理、运维数据分析等
- 网站:https://www.rundeck.com
- 最新文档:Rundeck | Process Automation Documentation
- 新手引导:Rundeck | tutorial
- 最佳实践:Rudeck | howto
系统环境
#环境要求:https://docs.rundeck.com/docs/administration/install/system-requirements.html测试环境:openjdk version "11.0.22"CentOS Linux release 7.4.1708 (Core) rundeck-5.2.0.20240410-1Database:mysql Server
内置的认证模块
jaas-loginmodule.conf --加载---> realm.properties
realm.properties 文件定义了用户/密码、权限以及acl策略的管理
realm.properties 文件是自动加载的不需要重启服务
配置文档: Authenticating Users
内置的role
内置的role 有:
普通用户(默认)
超级管理员role:admin
系统管理员role:ops_admin
应用管理员 role:app_admin
认证模式
sso 单点认证需要企业版本支持
这里讨论jaas模块和Preauthenticated预认证模块
jaas模块
支持ldap、PAM
realm.properties 是动态加载的;
jaas-loginmodule.conf 控制是否热加载,函数功能测试与官方文档说明有出入
realm.properties配置文件格式:
<username>: <password>[,<rolename> ...]
#// rundeck-config.properties
#安全参数
#rundeck.security.jaasRolePrefix:添加到通过JAAS 身份验证确定的每个角色的前缀字符串。默认值:无。
#rundeck.security.requiredRole: roleName。如果设置此属性,则所有用户都必须是指定角色的成员。
#rundeck.login.localLogin.enabled: false为禁止本地用户登录
添加其他用户
密码尽量避免使用明文,推荐使用bcrypt加密, 配置有见有说明可以使用哪些加密方式,
工具自带了生产密码的方法, md5类型 不是密码直接md5加密
[root@tserver121 bootstrap]# su - rundeck
-bash-4.2$ cd /var/lib/rundeck/bootstrap/
-bash-4.2$ java -jar rundeck-5.2.0-20240410.war --encryptpwd Jetty
Required values are marked with: *
Username (Optional, but necessary for Crypt encoding):
readonly <-----username
*Value To Encrypt (The text you want to encrypt):
********* <-----password==ENCRYPTED OUTPUT==
bcrypt: BCRYPT:$2a$10$ohiX0erHSnGlpJk7lTWJx.MX5BSAQNLhrgr1SDmfd5RTO3yS7MZY6
obfuscate: OBF:1ua11u2y1qhg1wgk1ltu1w9j19pz1nc81ndi19qf1w871lq41wfe1qju1u2c1u9h
md5: MD5:47d96eab402994bbdab1a691e0118501
crypt: CRYPT:re/1M9PpjIm4k配置文件中realm.properties添加
readonly: MD5:47d96eab402994bbdab1a691e0118501,user
新添加的readonly普通用户权限
LDAP
第 1 步:设置 LDAP 登录模块配置文件
创建/etc/rundeck/jaas-ldap.conf 文件
步骤2:指定登录模块
#// /etc/rundeck/profile
#添加
JAAS_LOGIN=true
LOGIN_MODULE=ldap
JAAS_CONF=/etc/rundeck/jaas-ldap.conf
第 3 步:重新启动 rundeckd 与尝试登录 Authenticating Users
Preauthenticated预认证模块
预认证的好处是,多个系统集成在一个平台之后 只要平台认证过后之后,各个系统之间就通过认证了。
类似于有一个代理 提前将你的身份进行验证,比sso简单
undeck.security.authorization.preauthenticated.enabled=true
rundeck.security.authorization.preauthenticated.attributeName=REMOTE_USER_GROUPS
rundeck.security.authorization.preauthenticated.delimiter=,
rundeck.security.authorization.preauthenticated.userNameHeader=X-Forwarded-Uuid
rundeck.security.authorization.preauthenticated.userRolesHeader=X-Forwarded-Roles#sync user info headers
rundeck.security.authorization.preauthenticated.userSyncEnabled=true
#these are the default headers for passing user details
rundeck.security.authorization.preauthenticated.userFirstNameHeader=X-Forwarded-User-FirstName
rundeck.security.authorization.preauthenticated.userLastNameHeader=X-Forwarded-User-LastName
rundeck.security.authorization.preauthenticated.userEmailHeader=X-Forwarded-User-Email
ACL-访问控制策略
ACL授予用户和用户组某些权限,以针对 项目、作业、节点、命令和 API等执行操作。用户请求的每项操作都会进行记录下来以用于报告和审计。
语法格式 ACLPOLICY
文件与热加载
配置文件生成:/etc/rundeck/*.aclpolicy
,默认有admin.aclpolicy、与 apitoken.aclpolicy
配置文件是热加载的不需要重新启动
也可以通过页面添加和编辑
客户端命令 -rd-acl
企业版本提供了很好GUI,社区版本可以使用rd-acl帮助创建、测试和验证语法。
rd-acl 使用方法: rd acl
授权规范 - 语法选项
可以参考:Access Control Policy