Custodian-自动化管理云环境

什么是Custodian?让我们看看官方是怎么说的吧


官方文档

Cloud Custodian 是一种工具,它将大多数组织用于管理其公共云帐户的数十种工具和脚本统一到一个开源工具中。它使用无状态规则引擎进行策略定义和执行,并为云基础设施提供指标、结构化输出和详细报告。它与无服务器运行时紧密集成,以低运营开销提供实时修复/响应。

组织可以使用 Custodian 来管理其云环境,通过单一工具确保遵守安全策略、标签策略、未使用资源的垃圾收集以及成本管理。

Cloud Custodian 可以绑定到跨多个云提供商的无服务器事件流,这些事件流映射到安全、操作和治理用例。托管人遵循合规性即代码原则,因此您可以验证、试运行和审查对策略的更改。

Cloud Custodian 策略以 YAML 表示,包括以下内容:

  • 运行策略所针对的资源类型
  • 过滤器以缩小资源范围
  • 对过滤后的资源集采取的操作

也就是说我们只需要通过Custodian,通过编辑YAML文件的规则从而即可确保安全策略、标签策略、未使用资源的垃圾收集以及成本管理,具体拿一下场景进行举例


常见管理场景如何用Custodian去实现

  • 检测资源是否规范,有没达到统一标准,比如标记资源使用人,联系方式等必要标签
  • 密钥到期乱换检测
  • 安全组开放0.0.0.0/0,并开放高危端口检测
  • 防止资源浪费、比如负载均衡创建很久却没有使用检测、虚机资源使用不合理,购买大规格检测
  • 对象存储开启公有读写检测
  • 云盘创建了却一直没有挂载实列
  • ........

以下都只需要通过以下命令即可实现

代码语言:bash
复制
custodian run -s . xxx.yml

检测资源(虚机)是否打上对应标签

标签是管理资源很重要的一个途径,比如给对应资源打上对应标签,资源负责人、手机、邮箱,用途,开发or生产等等一系列常用标签,即可一眼看出资源的用途,负责人,以及当资源发生异常时快速定位到负责人。

该policy表示,虚机创建一天后,并且该虚机是开机状态,该虚机没有补齐op、op_phone、op_email、des、env等一系列标签,那么该虚机将会标记在三天后关机,并且通知管理员

代码语言:yml
复制
 policies: 
   - name: cvm-mark-tag-stop                                                                                                                
    resource: tencentcloud.cvm                                                                                                             
    filters:                                                                                                                                                                                                                                
      - type: value                                                                                                                        
        key: InstanceState                                                                                                                 
        value: RUNNING                                                                                                                     
      - type: value                                                                                                                        
        key: CreatedTime                                                                                                                   
        op: gte                                                                                                                            
        value_type: age                                                                                                                    
        value: 1                                                                                                                           
      - or:                                                                                                                                                                                                                                    
          - "tag:op": empty         # 负责人
          - "tag:op_phone": empty   # 负责人电话
          - "tag:op_email": empty   # 负责人邮箱                                                                                                          
          - "tag:des": empty        # 用途描述                                                                                                       
          - "tag:env": empty        # 开发or生产环境                                                                                           
    actions:                                                                                                                               
      - type: mark-for-op                                                                                                                  
        days: 3                                                                                                                            
        tag: tag_status_stop                                                                                                               
        op: stop
      - type: notify
        action_desc: 创建的虚机没有满足标签规范,将在三天后关机,请管理员关注

密钥Ak/SK轮换到期提醒

密钥的使用是最常见的,但我们却也需要经常去轮换密钥以保证密钥的安全性。

该policy表示,密钥创建100天后还在使用,即视为没有轮换,到期即删除该密钥(直接删除太暴力了,容易发生生产事故,这里可以把remove-keys换成邮件通知)

代码语言:yml
复制
policies:                                                                                                                                                                                                                                         
  - name: cam-aksk-update                                                                                      
    resource: tencentcloud.cam-user                                                                                                        
    filters:                                                                                                                               
      - type: credential                                                                                                                   
        key: access_keys.CreateTime                                                                                                        
        op: gt                                                                                                                             
        value_type: age                                                                                                                    
        value: 100                                                                                                                                                                                                                    
    actions:                                                                                                                               
      - type: remove-keys                                                                                                                
        matched: true