You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

社区版Rundeck对接AWS WAF:作业创建与身份认证咨询

解决Rundeck作业创建与AWS认证问题

一、创建带参数的Rundeck作业并调用现有Shell脚本

1. 新建作业基础配置

进入目标Rundeck项目,点击「Create Job」,填写作业名称(比如「检查WAF IP CIDR存在性」)和描述,保存基础信息。

2. 添加用户输入参数

在「Job Options」标签页添加两个参数:

  • 参数1:环境类型
    • 类型选择「Select」,名称设为env_type,标签填「外部/内部」
    • 选项值添加「外部」和「内部」,可设置默认值(比如「外部」)
  • 参数2:IP CIDR
    • 类型选择「Text」,名称设为ip_cidr,标签填「IP CIDR」
    • 可选添加验证正则:^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}$,确保输入格式合规

3. 配置工作流调用Shell脚本

切换到「Workflow」标签页,点击「Add a Step」选择「Execute Shell Script」:

  • 如果脚本已存放在Rundeck服务器上,直接调用脚本并传入参数:
    /path/to/your/check_waf_cidr.sh ${option.env_type} ${option.ip_cidr}
    
  • 如果要直接内嵌脚本,把你的Shell代码粘贴进去,注意参数引用用${option.env_type}和${option.ip_cidr}

4. 确保aws-vault在Rundeck环境可用

Rundeck默认以rundeck系统用户运行作业,需确保该用户能正常使用aws-vault:

  • 切换到rundeck用户:sudo su - rundeck
  • 测试aws-vault命令:aws-vault exec <your-aws-profile> -- aws wafv2 list-ip-sets,确认能正常返回结果
  • 确保rundeck用户的~/.aws目录配置正确(包含credentials、config文件),且aws-vault的密钥环能被该用户访问

二、用IAM角色实现Rundeck实例整体AWS认证

完全可以用IAM角色替代aws-vault,更适合服务端场景,避免存储敏感凭证,分两种场景处理:

1. Rundeck部署在AWS EC2上

  • 给EC2实例附加IAM角色,角色权限需包含WAF操作的最小权限(比如wafv2:ListIPSets、wafv2:GetIPSet等,根据脚本需求调整)
  • 移除脚本中的aws-vault调用,直接使用AWS CLI命令——EC2实例会自动通过实例元数据获取临时凭证,无需额外配置

2. Rundeck部署在非AWS环境(本地/其他云)

  • 方式一:使用IAM用户凭证(推荐最小权限)
    • 创建IAM用户,仅赋予WAF相关操作权限,生成Access Key和Secret Key
    • 在Rundeck服务器的rundeck用户目录下创建~/.aws/credentials文件,内容如下:
      [default]
      aws_access_key_id = YOUR_ACCESS_KEY
      aws_secret_access_key = YOUR_SECRET_KEY
      
    • 脚本中直接调用AWS CLI,无需aws-vault
  • 方式二:使用STS AssumeRole(更安全)
    • 创建一个拥有sts:AssumeRole权限的基础IAM用户
    • 在脚本中添加角色切换逻辑:
      ROLE_ARN="arn:aws:iam::ACCOUNT_ID:role/YOUR_WAF_ROLE"
      CREDS=$(aws sts assume-role --role-arn $ROLE_ARN --role-session-name rundeck-waf-check)
      export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.Credentials.AccessKeyId')
      export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.Credentials.SecretAccessKey')
      export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Credentials.SessionToken')
      
      # 后续执行WAF检查命令
      aws wafv2 list-ip-sets ...
      

内容的提问来源于stack exchange,提问作者skp15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:15:40