转载

AWS Config Rules ¬–云资源动态合规检查

AWS云具有的灵活性,动态性特点赋予了开发人员和管理人员在按需推出,配置,使用和终止处理,存储,组网和其他资源方面极大的灵活性。在任何一个快节奏的灵敏环境中,在向市场推出新产品,赢得竞争优势的比赛中,安全原则和策略可能被忽视。

想象一下,你有能力验证既存的和新推出的AWS资源符合你组织的安全原则和最优实践,但却没有产生新的官僚机构或是花费你的时间手动检查云资源。

去年我宣布你可以使用AWS Config追踪AWS资源配置。在那篇帖子中,我向你展示了AWS Config是如何捕获你的AWS资源状态以及它们之间关系的。我也讨论了Config的审计特性,包括能够选择一项资源,然后在时间轴中查看配置变化的时间轴。

新的AWS Config Rules

你可以使用AWS以及合作伙伴的既存规则,你也可以定义你自己的自定义规则。规则可指向特定的资源(以id进行区分),特定种类的资源,或者以一种特殊方式标记的资源。在这些资源被创建或修改时,规则被运行,规则也可以周期性地(按小时,按天等等)被评估。

规则可以寻找任何想要的或不想要的条件。例如,你可以:

  • 确保特定VPC中投放的EC2实例被正确地标记。
  • 确保每一个实例关联至少一个安全组。
  • 检查并确保端口22在任何生产安全组中都是不开放的。

每一个自定义规则仅仅是一个AWS Lambda函数。当函数被调用,对一项资源进行评估时,它被提供资源的Configuration Item(配置项目)。函数可以检查该项目,也可以按需要(通常根据通过IAM角色赋予的权限)调用其他AWS API函数。Lambda判断(合规或不合规)后,调用PutEvaluations函数记录判断结果和返回结果。

所有这些规则调用(你可以把它们看做合规检查)的结果以每项资源为基础进行记录和追踪,然后在AWS Management Console(AWS管理控制台)对你开放。你也可以以一种面向报表的形式或者通过Config API访问这些结果。

让我们快速浏览一下AWS Config Rules,但是在我们朝着更广泛的可用性前进的路上,我和你分享的这些东西的一些会毫无疑问地改变。像往常一样,我们期待你的反馈,并将用你的反馈来确定我们的路线图,优先安排路线图中的一些项目。

使用一条既存的规则

让我们以使用Config包括的一条规则开始。我打开Config Console,点击Add Rule:

AWS Config Rules ¬–云资源动态合规检查

我浏览所有的规则,决定从instances-in-vpc开始。这条规则验证一个EC2实例属于一个VPC,包含用来验证该实例属于一个特定的VPC的选项。我点击该规则,并按需要对其进行自定义:

AWS Config Rules ¬–云资源动态合规检查

参数Trigger type指示Config在资源被更改时或周期性地运行该规则。参数Scope of changes指示Config哪些资源才是相关的。范围可以通过资源种类(带有一个可选择的标识符),标记名称,或标记名称和值的组合来指定。如果我正在检查EC2实例,我可以触发下列任何一个:

  • 所有的EC2实例。
  • 特定的EC2实例,通过一个资源标识符识别。
  • 被密钥“Department”标记的所有资源。
  • 被密钥“Stage”和值 “Prod”标记的所有资源。

Rule parameters区域的参数使我能够将额外的密钥/值对传递到Lambda函数。参数名称和它们的含义是特定于函数的。在这种情况下,为vpcid参数赋一个值会告诉该函数去验证该EC2实例正在特定的VPC内运行。

点击Save后,该规则生效。当我返回到Rules页面时,我可以看到我的AWS配置现在是不合规的:

AWS Config Rules ¬–云资源动态合规检查

我可以检查问题实例的Config时间轴来调查该问题:

AWS Config Rules ¬–云资源动态合规检查

结果证明是该实例已经闲了一会儿了(事实是我忘记它了)。这个示例完美展示了新的Config Rules是多么的有用!

我也可以使用Config Console来查看特定种类的所有实例的合规状态:

AWS Config Rules ¬–云资源动态合规检查

创建新规则

我可以使用Lambda支持的任何一种语言创建新规则。该规则接收Configuration Item和我上面提到的规则参数,可以实施需要的任何逻辑。

让我们看一下示例规则中的几条片段。该规则适用于EC2实例,所以它检查是否它在每一个实例上被调用 :

function evaluateCompliance(configurationItem, ruleParameters) {  if (configurationItem.resourceType !== 'AWS::EC2::Instance') {   return 'NOT_APPLICABLE';  } else {   var securityGroups = configurationItem.configuration.securityGroups;   var expectedSecurityGroupId = ruleParameters.securityGroupId;   if (hasExpectedSecurityGroup(expectedSecurityGroupId, securityGroups)) {    return 'COMPLIANT';   } else {    return 'NON_COMPLIANT';   }  } } 

如果该规则在一个EC2实例上被调用,它检查是否预期的安全组列表中的任何一个安全组附属于该实例:

function hasExpectedSecurityGroup(expectedSecurityGroupId, securityGroups) {  for (var i = 0; i < securityGroups.length; i++) {   var securityGroup = securityGroups[i];   if (securityGroup.groupId === expectedSecurityGroupId) {    return true;   }  }  return false; } 

最后,该规则调用Config API的putEvaluations函数存储合规检查结果:

config.putEvaluations(putEvaluationsRequest, function (err, data) {     if (err) {         context.fail(err);     } else {         context.succeed(data);     } });

该规则可以记录被检查的项目或任何相关项目的结果。比如说,你正在检查以确保一个Elastic Load Balancer(ELB,弹性负载均衡器)仅附属于一个特定种类的EC2实例。你可以选择去报告ELB或者实例的合规情况(或不合规情况),取决于哪项最适合你的组织或合规模型。你可以对Config支持的任何资源类型进行该项操作。

下面展示了我如何创建一条引用了我的Lambda函数的规则:

AWS Config Rules ¬–云资源动态合规检查

即将面世

AWS Config Rules现在正以试用的形式推出,你现在就可以注册了。敬请期待更多信息!

原文链接: https://aws.amazon.com/cn/blogs/aws/aws-config-rules-dynamic-compliance-checking-for-cloud-resources/

活动推荐:10月23 亚马逊AWS云计算研讨会之云中的安全部署与开发运维

11月13 创建你的第一个虚拟私有云(VPC)

( 翻译/吕冬梅  责编/王鑫贺 )

AWS Config Rules ¬–云资源动态合规检查 订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!

AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台 ,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。

正文到此结束
Loading...