4.3. 使用 F5 和 Event-Driven Ansible 的示例
GitHub 上提供了使用 F5 和 Event-Driven Ansible 的示例代码。此代码记录了监视器在过滤器中找到匹配项的每个实例,然后将该代码中的源 IP 复制到 CSV 列表中。然后,列表作为 webhook 中的变量发送,以及执行代码的消息。
以下示意图和代码工作流示例描述了此高级别工作流:
+
工作流步骤有:
- F5 BIG-IP 将监控日志推送到 Elastic。
- Elastic 在使用带有过滤器和条件的监视器时,会获取这些数据并存储它。
- Watcher 检测到与条件匹配的事件,并将带有有效负载的 Webhook 发送到 Event-Driven Ansible。
- event-Driven Ansible 的 rulebook 触发器从在 Ansible Automation Platform 中触发作业模板,该事件发送 Elastic 提供的有效负载。
- Ansible Automation Platform 的模板执行 playbook,以使用 Event-Driven Ansible 提供的有效负载(由 Elastic 提供)来保护 F5 BIG-IP 的安全。
4.3.1. 从日志记录事件驱动响应 复制链接链接已复制到粘贴板!
Ansible 验证的内容是预先测试、验证和可信 Ansible 角色和 playbook 的集合。此内容旨在更轻松地提供安全、可靠且一致的方式来管理跨部署的基础架构。可以开箱即用地使用经过验证的内容,从而减少创建自定义 Ansible 内容所需的时间和工作。以下用例提供了一个示例,如 Event-Driven Ansible 对日志事件的响应。
4.3.2. 使用案例:AWS CloudTrail 复制链接链接已复制到粘贴板!
AWS CloudTrail 是一个记录 AWS 帐户中发出的所有 API 调用的服务,包括由其他 AWS 服务进行的 API 调用。默认情况下,CloudTrail 日志以未加密的形式存储在 S3 存储桶中。要验证 CloudTrail 日志是否安全,请使用 AWS KMS 为 CloudTrail 日志启用加密。通过创建一个 KMS 密钥启用 CloudTrail 日志加密,该密钥用于加密存储 CloudTrail 日志的 S3 存储桶。然后,将 CloudTrail 配置为使用此密钥加密日志。
启用加密后,所有 CloudTrail 日志都会在写入 S3 存储桶时自动加密。日志只能通过您指定的 KMS 密钥解密。这会建立日志安全,只能由授权的用户和服务访问。
加密 AWS CloudTrail 日志非常重要,原因如下:
- 保护敏感信息:CloudTrail 日志包含有关 AWS 帐户的大量信息,包括 API 调用、用户身份和资源信息。加密 CloudTrail 日志有助于防止此敏感信息不受未授权访问或篡改的影响。
- 合规性要求:许多合规性标准(如 HIPAA 和 PCI DSS)需要日志加密来保护敏感信息。加密 CloudTrail 日志可符合这些标准。
- 防止篡改:CloudTrail 的日志加密有助于防止日志被篡改。这有助于维护日志的完整性,以及对 AWS 帐户进行的所有 API 调用的准确记录。
- 安全数据:CloudTrail 日志加密为数据提供额外的安全层。如果您的 S3 存储桶被破坏,在没有加密密钥的情况下无法访问加密的日志。
Event-Driven Ansible 规则手册由以下组件组成,以帮助对日志文件的操作:
- Source: 定义将使用哪些事件源
- 规则 :定义将与事件源匹配的条件
- 操作 :在满足条件时触发事件
在以下示例中,规则手册使用三个规则实施规则集,如下所示:
规则 65: 启用 trail 加密
此规则在禁用 trail 加密时处理问题单。当对 trail 执行 UpdateTrail 操作时,它会触发它,UpdateTrail 请求中包含的参数与这些条件匹配:
event.CloudTrailEvent.requestParameters.kmsKeyId=="" AND event.CloudTrailEvent.requestParameters.name==vars.cloudtrail_name.
缓解此偏移的操作将运行
'playbooks/eda/aws_restore_cloudtrail_encryption.yml playbook' This playbook running the Ansible validated role cloud.aws_ops.enable_cloudtrail_encryption_with_kms,用于重新启用 trail's 加密,将系统恢复到其状态 quo。
rule#2: 重新创建 trail
此规则在删除 trail 时处理这种情况。
当满足以下条件时:
event.CloudTrailEvent.eventName=="DeleteTrail" AND event.CloudTrailEvent.requestParameters.name==vars.cloudtrail_name
该操作正在运行 playbooks/eda/aws_restore_cloudtrail.yml playbook。此 playbook 首先运行 Ansible 验证的内容 cloud.aws_ops.awsconfig_multiregion_cloudtrail 角色,这将重新创建 trail,然后 cloud.aws_ops.enable_cloudtrail_encryption_with_kms 角色在新创建的上启用加密。
rule#3: 取消删除 KMS 密钥并重新启用它
此规则响应正在删除或禁用的 KMS 密钥的情况。这会导致条件
event.CloudTrailEvent.eventName=="ScheduleKeyDeletion" OR event.CloudTrailEvent.eventName=="DisableKey"
当某人试图意外删除 KMS 密钥时,AWS CloudTrail 中会显示 ScheduleKeyDeletion 事件。KMS 密钥不会被立即删除,因为删除 KMS 密钥具有破坏性,并可能存在危险。AWS KMS 需要设置 7-30 天等待时间。这种情况是通过运行 playbook/eda/aws_restore_kms_key.yml playbook 及时处理,这将取消删除 KMS 密钥。同样,当禁用 KMS 密钥时,playbook 会重新激活它来恢复系统的原始状态。playbook 设置 KMS 密钥 ARN,并使用它来确定是否取消 KMS 密钥删除,以重新启用 KMS 密钥或两者。
Ansible 为 cloud.aws_ops 和 Event-Driven Ansible 验证的内容为自动化问题解决和观察云计算环境带来了许多机会,有助于您轻松自动化、缓解安全问题,并最大化云环境的 mastery。有关使用规则手册的更多信息,请参阅 AWS 的 Event-Driven ansible 验证的内容。