简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何为设置标准配置模板,并对云资源实施实时合规监管,对不合规的配置自动回滚、报警的全部方案。本方案架构图如下:

方案所需基础知识

什么是亚马逊云科技 Config?

亚马逊云科技 Config 是一项用于管理和审计 AWS 资源配置的服务。它可以连续监控、评估和记录 AWS 资源的配置变更,并对这些配置是否符合预定义的合规性规则进行自动审查。Config 提供了全面的资源历史记录和合规性报告,帮助用户了解资源的配置状态、跟踪配置变更,并确保资源配置始终符合内部政策或外部法规要求。

为什么要用亚马逊云科技 Config 对云资源实施合规监管?

持续监控和自动合规检查

Config 实时监控云资源的配置变更,自动检查是否符合预定义的合规性规则。一旦检测到不符合的配置,可以立即通知管理员并触发自动修复流程,确保资源始终符合合规要求。

简化合规审计

Config 提供详细的资源配置历史记录和变更日志,帮助企业轻松生成合规性报告,简化合规审计的过程。这些报告可以证明资源配置始终符合行业法规和公司内部的安全政策。

快速问题诊断和修复

当资源配置发生变更时,Config 可以帮助用户快速识别不合规的配置,并提供修复建议或自动执行修复措施,减少潜在的安全风险和操作中断。

增强安全性

通过对云资源配置的持续监控和合规性检查,Config 有助于防止错误配置导致的安全漏洞。它确保资源配置遵循最佳实践和安全标准,从而提高整体云环境的安全性。

本方案包括的内容

1. 为S3秘钥加密配置安全合规监管规则

2. 为标记的云资源配置安全合规监管规则

项目搭建具体步骤 

1. 首先我们进入亚马逊云科技控制台,打开Config服务

2. 点击”Get Started“开始创建规则,选择”Specific Resource Type“对特定资源类型实施监管。并选择监管资源为EC2服务器,选择continous进行持续监管。

3. 同时添加S3为监管资源,同样为实时监管。再添加”Create AWS Config service-linked role“,用于Config访问这些云资源的权限。

4. 选择配置一个S3桶,用来保存Config服务审计日志。点击Next进入下一步

5. 选择预设安全监管模板”s3-default-encryption-kms“,用于检查S3存储桶是否被KMS秘钥加密。最后点击Confirm创建。

6. 返回规则列表查看我们刚刚创建的规则,点击进入。

7.我们可以看到规则显示有3个资源不合规,刚创建的S3规则也是Noncompliant不合规的状态。我们点击刚刚创建的S3规则。

8. 在资源列表里即可查看所有3个不合规的资源,是3个S3存储桶。

9. 我们再搜索S3进入S3服务主页,可以看到这三个不合规的S3存储桶。点击存储桶config-bucket-xxxx

10. 进入到Property属性页面,查看加密配置,发现Bucket Key显示的状态是Disabled,说明该存储桶未被加密,我们点击Edit。

 11. 我们为该存储桶配置KMS秘钥加密,我们选择AWS管理的KMS秘钥”SSE-KMS“,选择从AWS KMS服务中添加秘钥(Choose from your AWS KMS keys),并添加秘钥”aws/s3“,点击SAVE保存配置。

12. 我们再回到Config服务,我们可以看到我们刚刚修改的S3存储桶已经进入合规状态。我们重复操作,为其他两个S3桶同样添加KMS秘钥加密后,该规则和全部的云资源resource都会进入Compliant合规状态。

如何用代码的方式创建Config规则,对S3桶实施监管。

下面是使用 Python 和 Boto3 SDK 编写的代码,用于在 AWS Config 中创建一个规则,监控所有 S3 存储桶是否启用了加密:

import boto3

def create_s3_encryption_config_rule():
    client = boto3.client('config')

    rule_name = 's3-bucket-server-side-encryption-enabled'

    # AWS提供的预定义规则,S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED 检查S3是否启用了加密
    response = client.put_config_rule(
        ConfigRule={
            'ConfigRuleName': rule_name,
            'Description': 'Check whether S3 buckets have server-side encryption enabled.',
            'Scope': {
                'ComplianceResourceTypes': [
                    'AWS::S3::Bucket',
                ]
            },
            'Source': {
                'Owner': 'AWS',
                'SourceIdentifier': 'S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED'
            },
            'InputParameters': '{}',  # No additional parameters required for this rule
            'MaximumExecutionFrequency': 'TwentyFour_Hours',  # Runs once every 24 hours
            'ConfigRuleState': 'ACTIVE'
        }
    )

    print(f"Created Config rule: {response['ConfigRule']['ConfigRuleArn']}")

if __name__ == "__main__":
    create_s3_encryption_config_rule()

代码说明:

  1. boto3.client('config'): 初始化 AWS Config 客户端。
  2. put_config_rule: 使用此方法在 AWS Config 中创建或更新配置规则。
  3. rule_name: 规则的名称为 s3-bucket-server-side-encryption-enabled
  4. Source: 此配置规则使用 AWS 提供的预定义规则 S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED 来检查 S3 存储桶是否启用了服务器端加密。
  5. Scope: 该规则适用于所有 S3 存储桶 (AWS::S3::Bucket)。
  6. MaximumExecutionFrequency: 设置规则的执行频率为每 24 小时运行一次。
  7. ConfigRuleState: 设置规则的状态为 ACTIVE

以上就是在亚马逊云科技上利用Config服务对云资源实施安全监管的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐