您可以在配置审计(Config)中创建审计规则,对安全组规则的合规性进行审计,并将审计结果投递到日志服务SLS中。当账号下的安全组规则有不符合审计规则的变更时,您能够通过日志服务SLS收到告警通知。本文以安全组不允许全网段开启22端口和不允许入方向全通两个审计规则为例进行介绍。

效果速览

通过本文的配置,您可以对账号下已有安全组规则进行合规性审计,也能够在安全组规则发生不合规变更时,实时监控和告警。
  • 账号下对已有安全组规则的审计不合规结果,可以在配置审计的控制台查看,例如查看“安全组不允许全网段开启22端口”的审计结果如下:不合规审计
  • 账号下安全组规则的不合规变更,可以通过配置钉钉、短信、电话等不同方式进行不同等级的告警。例如“安全组不允许全网段开启22端口”审计的钉钉告警通知效果如下:告警通知

操作步骤

步骤一:开通配置审计并添加审计规则

开启配置审计和日志服务,并为安全组规则的合规性添加审计规则。

  1. 开通配置审计和日志服务。
  2. 选择配置审计的监控范围。
    1. 登录配置审计控制台
    2. 在左侧导航栏,选择设置 > 监控范围
    3. 检查确保已选资源类型中包含Ecs 安全组
      审计范围
  3. 配置安全组不允许全网段开启22端口的审计规则。
    1. 在左侧导航栏,单击规则
    2. 规则页面,单击新建规则
    3. 新建规则页面的筛选输入框中输入安全组,筛选出安全组相关的审计规则。
    4. 找到规则名称为安全组不允许对全部网段开启风险端口的托管审计规则,单击应用规则
      筛选规则
    5. 基本属性页面,设置规则名称、风险等级和备注,单击下一步
      托管规则的名称、风险等级和备注信息均为系统默认,您可以根据实际情况进行修改。安全组不允许全网段开启22端口
    6. 评估资源范围页面,已选资源类型默认为Ecs 安全组,单击下一步
      您也可以根据资源ID、资源组ID、地域和Tag等信息,对审计规则生效的资源做筛选。
    7. 参数设置页面的期望值文本框中输入22,单击下一步
      期望值22表示:如果在您的账号下某个安全组对全部网段开启22端口,会审计为不合规。输入22端口
    8. 修正设置页面,单击下一步
      对于支持修正设置的托管规则,您可以选中修正设置前面的复选框。更多信息,请参见修正设置
    9. 预览并保存页面,确认规则设置后,单击提交
    10. 单击返回规则列表,查看新建的规则。
      您可以在规则列表中查看新建的安全组不允许全网段开启22端口规则,其运行状态为应用中
  4. 配置安全组不允许入方向全通的审计规则。
    1. 规则页面,单击新建规则
    2. 新建规则页面的筛选输入框中输入安全组,筛选出安全组相关的审计规则。
    3. 找到规则名称为安全组入网设置有效的托管审计规则,单击应用规则
      筛选规则
    4. 基本属性页面,设置规则名称、风险等级和备注,单击下一步
      托管规则的名称、风险等级和备注信息均为系统默认,您可以根据实际情况进行修改。安全组不允许入方向全网通
    5. 评估资源范围页面,已选资源类型默认为Ecs 安全组,单击下一步
      您也可以根据资源ID、资源组ID、地域和Tag等信息,对审计规则生效的资源做筛选。
    6. 参数设置页面,单击下一步
    7. 修正设置页面,单击下一步
      对于支持修正设置的托管规则,您可以选中修正设置前面的复选框。更多信息,请参见修正设置
    8. 预览并保存页面,确认规则设置后,单击提交
    9. 单击返回规则列表,查看新建的规则。
      您可以在规则列表中查看新建的安全组不允许入方向全通规则,其运行状态为应用中
      经过以上步骤,您已经建立了两个关于安全组规则的配置审计规则。 您可以基于配置审计的托管规则,或者自定义审计规则来建立更多的规则。两条审计规则

步骤二:将资源不合规事件投递到日志服务

配置审计规则配置后,您可以在配置审计控制台随时查看每条审计规则的检查结果。如果您需要及时收到安全组规则配置不符合审计规则的告警信息,可以基于日志服务SLS来实现。

  1. 将资源不合规事件投递到日志服务。
    1. 登录配置审计控制台
    2. 在左侧导航栏,选择投递服务 > 投递到日志服务SLS
    3. 投递到日志服务SLS页面,打开设置日志服务SLS开关。
    4. 设置资源投递数据的相关参数,单击确定
      • 选择接收内容:选中资源不合规事件复选框。当资源的审计结果不合规时,配置审计向日志服务SLS投递资源不合规事件。
      • 选择本账号中新建日志项目
      • 日志项目地域:选择日志项目所在地域。
      • 日志项目名称:输入日志服务SLS中日志项目的名称,例如config-alarm2
      • 日志库名称:输入日志服务SLS中日志库的名称,例如config-alarm2
      更多信息,请参见设置投递数据到日志服务SLS投递到日志服务
      如下图所示,您可以单击日志库名称config-alarm2,进入日志服务控制台。单击日志库
  2. 配置日志服务日志库的索引。
    1. 登录日志服务控制台
    2. 找到新建的日志项目config-alarm2,单击其日志库config-alarm2
    3. 进入索引配置页面,单击开启索引
    4. 单击自动生成索引
      如果提示“当前暂无数据,请确保有数据后再进行操作!”,请先创建安全组并添加不符合审计规则的安全组规则。具体操作,请参见创建安全组修改安全组规则

      修改不符合审计规则的安全组规则,例如配置安全组规则为允许全网段开启22端口或者允许入方向全通,以此来触发一条SLS日志投递。修改安全组规则后,等待约3分钟时间,系统会触发已配置的审计规则,并将不合规事件投递到日志服务中。

    5. 再次单击自动生成索引,日志服务会自动检测日志格式,并生成索引。
    6. 依次单击追加确定,保存索引配置。
      追加索引
      等待约1分钟,日志服务的索引生效。
      说明 因为索引配置仅对新产生的日志生效,您可以再次修改安全组规则,来触发一个不合规事件,从而在日志服务中查看日志投递。
    7. 单击查询/分析,从config-alarm2日志库中,可以搜索到一条不合规事件的日志。
      不合规日志

步骤三:配置告警

在日志服务SLS中配置告警,定期检查查询或分析结果,当检查结果满足预设条件时发送告警通知,实现实时的服务状态监控。

  1. 登录日志服务控制台
  2. 找到新建的日志项目config-alarm2,单击其日志库config-alarm2
  3. 在搜索框中输入如下筛选条件,单击查询/分析
    * and eventName: NonCompliant and evaluationResultIdentifier.evaluationResultQualifier.resourceType: SecurityGroup |
    SELECT
    DATE_FORMAT(MAX("evaluationResultIdentifier.evaluationResultQualifier.captureTime")/1000, '%Y-%m-%d %H:%i:%s') captureTime,
    "evaluationResultIdentifier.evaluationResultQualifier.regionId" regionId,
    "evaluationResultIdentifier.evaluationResultQualifier.resourceId" securityGroupId,
    "evaluationResultIdentifier.evaluationResultQualifier.resourceName" securityGroupName,
    "evaluationResultIdentifier.evaluationResultQualifier.configRuleName" configRuleName,
    riskLevel riskLevel
    GROUP BY regionId, securityGroupId, securityGroupName, configRuleName, riskLevel
    您能看到如下所示的筛选结果。筛选结果
  4. 在页面右上角,选择另存为告警 > 旧版告警,为查询结果设置告警。
  5. 配置告警监控规则。
    • 触发条件设置为securityGroupId!='null'
    • 通知策略选择钉钉 (WebHook),并单击添加
    • 其他参数根据实际情况配置。
    更多信息,请参见设置告警告警监控规则
  6. 配置钉钉通知方式,单击确定
    更多信息,请参见通知方式配置钉钉通知方式

(可选)步骤四:升级告警并优化内容模板

新版本告警相对于旧版告警,在升级原有功能的基础上扩展了告警监控、告警管理、通知(行动)管理的能力。将日志服务告警从旧版升级为新版,可以支持更加丰富的告警配置功能。更多信息,请参见旧版与新版区别

  1. 登录日志服务控制台
  2. 找到新建的日志项目config-alarm2,单击其日志库config-alarm2
  3. 在左侧导航栏中,单击告警
  4. 规则/事务页签中,找到目标监控规则,在操作列中单击升级
    如果您是首次使用新版告警,请根据页面提示配置存储中心,然后单击确认
  5. 配置内容模板。
    1. 规则/事务页签,找到目标监控规则,在操作列中单击编辑
    2. 告警规则对话框,单击行动策略后的查看
      查看行动策略
    3. 编辑行动策略对话框,单击内容模板后的查看,找到对应的内容模板。
      内容模板
    4. 编辑内容模板对话框,修改以下内容,并单击确认保存内容模板。
      • 将内容模板的标题修改为[告警] 安全组规则审计预警
      • 将发送内容修改为以下格式,提升告警通知的可读性。
        - **告警名称**: {{ alert.alert_name }}
        - **告警严重度**: {{ alert.severity | format_severity }}
        {% for result in alert.results[0].raw_results %}
        - **安全组Id**: {{ result['securityGroupId'] }}
         >- **规则名称**: {{ result['configRuleName'] }}
         >- **触发时间**: {{ result['captureTime'] }}
         >- **严重程度**: {{ result['riskLevel'] }}
         >- **地域**: {{ result['regionId'] }}
         >- **安全组名称**: {{ result['securityGroupName'] }}
        {% endfor %}
      修改内容模板

步骤五:完成配置与告警测试

  • 您可以在账号下创建一个安全组,并设置不符合审计规则的安全组规则,对告警的可用性进行测试。
  • 完成以上配置后,在安全组规则不符合审计规则时,您就可以收到钉钉机器人的告警通知,如下图所示。从而提升您对于安全组规则变更的感知能力,提升您云上资产的安全性。告警通知