<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>服务器安全维护工作室 &#187; 利用 AWS Config 监控和响应 Amazon Simple Storage Service (S3) 允许公开读写访问权限</title>
	<atom:link href="https://www.fuwuqiok.com/tag/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fuwuqiok.com</link>
	<description></description>
	<lastBuildDate>Sun, 01 Mar 2020 07:28:40 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.26</generator>
	<item>
		<title>利用 AWS Config 监控和响应 Amazon Simple Storage Service (S3) 允许公开读写访问权限</title>
		<link>https://www.fuwuqiok.com/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/</link>
		<comments>https://www.fuwuqiok.com/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/#comments</comments>
		<pubDate>Wed, 21 Nov 2018 06:31:57 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[linux代维]]></category>
		<category><![CDATA[linux服务器代维]]></category>
		<category><![CDATA[linux服务器代维护]]></category>
		<category><![CDATA[linux服务器维护]]></category>
		<category><![CDATA[linux系统代维]]></category>
		<category><![CDATA[服务器代维]]></category>
		<category><![CDATA[服务器代维护]]></category>
		<category><![CDATA[服务器安全代维]]></category>
		<category><![CDATA[服务器维护]]></category>
		<category><![CDATA[服务器运维]]></category>
		<category><![CDATA[网站代维]]></category>
		<category><![CDATA[网站防挂马]]></category>
		<category><![CDATA[利用 AWS Config 监控和响应 Amazon Simple Storage Service (S3) 允许公开读写访问权限]]></category>

		<guid isPermaLink="false">https://www.fuwuqiok.com/?p=3845</guid>
		<description><![CDATA[<p>AWS Config 支持持续监控 AWS 资源，简化评估、审核以及记录资源配置和变化的过程。为此，AWS C [&#8230;]</p>
<p><a rel="nofollow" href="https://www.fuwuqiok.com/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/">利用 AWS Config 监控和响应 Amazon Simple Storage Service (S3) 允许公开读写访问权限</a>，首发于<a rel="nofollow" href="https://www.fuwuqiok.com">服务器安全维护工作室</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p><a title="AWS Config" href="https://amazonaws-china.com/config" target="_blank" rel="noopener noreferrer">AWS Config</a> 支持持续监控 AWS 资源，简化评估、审核以及记录资源配置和变化的过程。为此，AWS Config 使用一系列规则来定义 AWS 资源所需的配置状态。AWS Config 提供多种 <a title="AWS 托管规则" href="https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html" target="_blank" rel="noopener noreferrer">AWS 托管规则</a>来解决各种安全问题，例如，检查您是否已将 Amazon Elastic Block Store (Amazon EBS) 卷加密，是否已正确标记资源，以及是否为根账户启用了 Multi-Factor Authentication (MFA)。您还可以使用 <a title="AWS Lambda" href="https://amazonaws-china.com/lambda/" target="_blank" rel="noopener noreferrer">AWS Lambda</a> 函数创建<a title="自定义规则" href="https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html" target="_blank" rel="noopener noreferrer">自定义规则</a>，以编写整理您的合规性需求。</p>
<p>在本文中，我们将向您展示如何使用 AWS Config 监控 <a title="Amazon Simple Storage Service" href="https://amazonaws-china.com/s3/" target="_blank" rel="noopener noreferrer">Amazon Simple Storage Service</a> (S3) 存储桶 ACL 和策略，确定是否存在允许公开读写访问权限的违规行为。如果 AWS Config 发现违反策略的行为，我们会使其触发 <a title="Amazon CloudWatch Event" href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html" target="_blank" rel="noopener noreferrer">Amazon CloudWatch Event</a> 规则以触发 <a title="AWS Lambda" href="https://amazonaws-china.com/blogs/security/how-to-centralize-dns-management-in-a-multi-account-environment/" target="_blank" rel="noopener noreferrer">AWS Lambda</a> 函数，从而更正 S3 存储桶 ACL，或通过 <a title="Amazon Simple Notification Service" href="https://amazonaws-china.com/sns" target="_blank" rel="noopener noreferrer">Amazon Simple Notification Service</a> (Amazon SNS) 通知您存在违反策略且允许公开读写访问权限的行为。我们将通过五个主要步骤为您演示此过程。</p>
<ol>
<li><strong>启用 AWS Config</strong> 来监控 Amazon S3 存储桶 ACL 和策略，以发现违规行为。</li>
<li><strong>创建 IAM 角色和策略</strong>，为 Lambda 函数授予读取 S3 存储桶策略和通过 SNS 发送提醒的权限。</li>
<li><strong>创建和配置 CloudWatch Events 规则</strong>，在 AWS Config 检测到违反 S3 存储桶 ACL 或策略的行为时触发 Lambda 函数。</li>
<li><strong>创建 Lambda 函数</strong>，以使用 IAM 角色审核 S3 存储桶 ACL 和策略、更正 ACL，并通知您的团队策略违规行为。</li>
<li><strong>验证监控解决方案</strong>。</li>
</ol>
<blockquote><p><strong>注意：</strong>本文假设您的合规性策略要求您所监控的存储桶不允许公开读写访问权限。例如，如果您打算开放提供静态内容的存储桶，可以从本文着手，根据您的需要定制解决方案。</p></blockquote>
<p>在本文末尾，我们将提供一个可实施本文所述解决方案的 AWS CloudFormation 模板。您可以使用该模板在多个区域快速部署解决方案。</p>
<blockquote><p><strong>重要说明</strong>：如果使用部署的某些资源（包括使用所提供的 CloudFormation 模板部署的资源），则在使用这些资源期间会产生费用。在提供 AWS Config 规则的每个区域使用这些规则都会产生费用。</p></blockquote>
<h2>架构</h2>
<p>以下是我们将要实施的架构图：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-01-1.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-01-1.png" alt="AWS-config-01-1" width="1000" height="523" /></a></p>
<p>&nbsp;</p>
<h2>步骤 1：启用 AWS Config 和 Amazon S3 存储桶监控功能</h2>
<p>以下步骤将演示如何设置 AWS Config 来监控 Amazon S3 存储桶。</p>
<ol>
<li>登录 AWS 管理控制台，并打开<a title="未定义的" href="https://console.aws.amazon.com/config/" target="_blank" rel="noopener noreferrer">AWS Config 控制台</a>。</li>
<li>如果这是您第一次使用 AWS Config，请选择<strong>开始使用</strong>。如果您已经使用过 AWS Config，请选择<strong>设置</strong>。</li>
<li>在<strong>设置</strong>页面中的 <strong>Resource types to record</strong> (要记录的资源类型) 下，取消选中 <strong>All resources</strong> (所有资源) 复选框。在 <strong>Specific types</strong> (具体类型) 列表中，选择 <strong>S3</strong> 下的<strong>存储桶</strong>。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-02.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-02.png" alt="AWS-config-02" width="1000" height="497" /></a>
<p>&nbsp;</li>
<li>选择用于存储配置历史记录和快照的 Amazon S3 存储桶。我们会创建一个新的 Amazon S3 存储桶。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-03.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-03.png" alt="AWS-config-03" width="942" height="213" /></a>
<p>&nbsp;</p>
<ol type="a">
<li>如果您更希望使用账户中现有的 Amazon S3 存储桶，请选择 <strong>Choose a bucket from your account</strong> (从您的账户中选择存储桶) 单选按钮，然后使用下拉菜单选择现有的存储桶。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-04.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-04.png" alt="AWS-config-04" width="800" height="286" /></a>
<p>&nbsp;</li>
</ol>
</li>
<li>在 <strong>Amazon SNS topic</strong> (Amazon SNS 主题) 下，选中 <strong>Stream configuration changes and notifications to an Amazon SNS topic</strong> (将配置更改和通知流式传输至 Amazon SNS 主题) 旁边的复选框，然后选择 <strong>Create a topic</strong> (创建主题) 旁边的单选按钮。
<ol type="a">
<li>您也可以选择之前创建和订阅的主题。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-05.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-05.png" alt="AWS-config-05" width="800" height="217" /></a>
<p>&nbsp;</li>
<li>如果您创建了新的 SNS 主题，则需要订阅它才能收到通知。我们将在后面的步骤中演示此操作。</li>
</ol>
</li>
<li>除非您已经有要使用的角色，否则请在 <strong>AWS Config role</strong> (AWS Config 角色) 下选择 <strong>Create a role</strong> (创建角色)。我们使用系统自动推荐的角色名称。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-06.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-06.png" alt="AWS-config-06" width="800" height="120" /></a>
<p>&nbsp;</li>
<li>选择<strong>下一步</strong>。</li>
<li>配置 Amazon S3 存储桶监控规则：
<ol type="a">
<li>在 <strong>AWS Config rules</strong> (AWS Config 规则) 页面上搜索 <strong>S3</strong>，选择 <strong>s3-bucket-publice-read-prohibited</strong> 和 <strong>s3-bucket-public-write-prohibited</strong> 规则，然后单击<strong>下一步</strong>。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-07.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-07.png" alt="AWS-config-07" width="800" height="425" /></a>
<p>&nbsp;</li>
<li>在<strong>审核</strong>页面上，选择<strong>确认</strong>。AWS Config 此时会分析您的 Amazon S3 存储桶，捕获它们当前的配置，并根据我们选择的规则评估配置。</li>
</ol>
</li>
<li>如果您创建了新 Amazon SNS 主题，请打开 Amazon SNS 管理控制台并找到您创建的主题：<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-08.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-08.png" alt="AWS-config-08" width="800" height="135" /></a>
<p>&nbsp;</li>
<li>复制该主题的 ARN（以 arn: 开头的字符串），您需要在后面的步骤中使用它。</li>
<li>选择主题旁边的复选框，然后在<strong>操作</strong>菜单下选择<strong>订阅主题</strong>。</li>
<li>选择<strong>电子邮件</strong>作为协议，输入您的电子邮件地址，然后选择<strong>创建订阅</strong>。</li>
<li>几分钟后，您会收到一封电子邮件，要求您确认订阅与此主题有关的通知。选择对应链接以确认订阅。</li>
</ol>
<h2>步骤 2：为 Lambda 创建角色</h2>
<p>我们的 Lambda 需要相关权限，才能检查和修改 Amazon S3 存储桶 ACL 和策略，记录 CloudWatch 日志并发布到 Amazon SNS 主题。现在，我们将设置自定义 AWS Identity and Access Management (IAM) 策略和角色来支持这些操作，并将它们分配到我们将在下一节中创建的 Lambda 函数。</p>
<ol>
<li>在 AWS 管理控制台中，在<strong>服务</strong>下选择 <strong>IAM</strong> 以访问 IAM 控制台。</li>
<li>创建具有以下权限的策略，或者复制以下策略：
<div class="hide-language">
<pre class=" language-text"><code class=" language-text">
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SNSPublish",
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3GetBucketACLandPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3PutBucketACLAccess",
            "Effect": "Allow",
            "Action": "s3:PutBucketAcl",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "LambdaBasicExecutionAccess",
            "Effect"quot;: "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

</code></pre>
</div>
</li>
<li>为 Lambda 函数创建角色：
<ol type="a">
<li>从要使用该角色的服务列表中选择 <strong>Lambda</strong>。</li>
<li>选择您之前创建的策略旁边的复选框，然后选择 <strong>Next: Review</strong> (下一步：审核)</li>
<li>指定角色名称，为其输入描述，然后选择<strong>创建角色</strong>。在该示例中，我们将角色命名为 LambdaS3PolicySecuringRole。</li>
</ol>
</li>
</ol>
<h2>步骤 3：创建和配置 CloudWatch 规则</h2>
<p>在这一节中，我们将创建一个 CloudWatch 规则，以便在 AWS Config 确定您的 Amazon S3 存储桶不合规时触发 Lambda 函数。</p>
<ol>
<li>在 AWS 管理控制台中，在<strong>服务</strong>下选择 <strong>CloudWatch</strong>。</li>
<li>在左侧的<strong>事件</strong>下，选择<strong>规则</strong>。</li>
<li>单击<strong>创建规则</strong>。</li>
<li>在 <strong>Step 1: Create rule</strong> (第 1 步：创建规则) 中的<strong>事件源</strong>下，选择下拉列表并选择<strong>生成自定义事件模式</strong>。</li>
<li>复制以下模式，并将其粘贴到文本框中：
<div class="hide-language">
<pre class=" language-text"><code class=" language-text">
{
  "source": [
    "aws.config"
  ],
  "detail": {
    "requestParameters": {
      "evaluations": {
        "complianceType": [
          "NON_COMPLIANT"
        ]
      }
    },
    "additionalEventData": {
      "managedRuleIdentifier": [
        "S3_BUCKET_PUBLIC_READ_PROHIBITED",
        "S3_BUCKET_PUBLIC_WRITE_PROHIBITED"
      ]
    }
  }
}

			</code></pre>
</div>
<p>该模式会在检查 Amazon S3 存储桶的公开访问权限时匹配 AWS Config 生成的事件。</li>
<li>我们将在稍后添加 Lambda 目标。现在，选择您之前创建的 Amazon SNS 主题，然后选择<strong>配置详细信息</strong>。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-09-1.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-09-1.png" alt="AWS-config-09-1" width="1000" height="530" /></a>
<p>&nbsp;</li>
<li>输入规则的名称和描述。在该示例中，我们指定名称 AWSConfigFoundOpenBucket</li>
<li>单击<strong>创建规则</strong>。</li>
</ol>
<h2>步骤 4：创建 Lambda 函数</h2>
<p>在这一节中，我们将创建新的 Lambda 函数，用于检查 Amazon S3 存储桶的 ACL 和存储桶策略。如果发现存储桶 ACL 允许公开访问权限，该 Lambda 函数会将其覆盖，改为私密。如果找到了存储桶策略，Lambda 函数会创建 SNS 消息，将该策略添加到消息正文中，然后将其发布到我们创建的 Amazon SNS 主题。存储桶策略可能很复杂，而覆盖策略可能会导致访问权限意外丢失，因此该 Lambda 函数不会尝试对您的策略进行任何更改。</p>
<ol>
<li>获取之前创建的 Amazon SNS 主题的 ARN。</li>
<li>在 AWS 管理控制台中，在<strong>服务</strong>下选择 <strong>Lambda</strong> 进入 Lambda 控制台。</li>
<li>在控制面板中，选择<strong>创建函数</strong>。或者，如果您直接进入了<strong>函数</strong>页面，也可以选择右上角的<strong>创建函数</strong>按钮。</li>
<li>在<strong>创建函数</strong>页面上：
<ol type="a">
<li>选择<strong>从头开始创作</strong>。</li>
<li>为该函数提供一个名称。我们使用 AWSConfigOpenAccessResponder。</li>
<li>我们编写的 Lambda 函数与 Python 3.6 兼容，所以请在<strong>运行语言</strong>下拉列表中选择 <strong>Python 3.6</strong>。</li>
<li>在<strong>角色</strong>下选择<strong>选择现有角色</strong>。选择您在前一节中创建的角色，然后选择<strong>创建函数</strong>。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-09.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-09.png" alt="AWS-config-09" width="1000" height="524" /></a>
<p>&nbsp;</li>
</ol>
</li>
<li>现在，我们根据之前创建的规则添加 CloudWatch 事件。
<ol type="a">
<li>在 <strong>Add triggers</strong> (添加触发器) 部分，选择 <strong>CloudWatch Events</strong>。CloudWatch Events 框应该会显示在 Lambda 函数左侧，还会显示一条内容为 <strong>Configuration required</strong> (需要配置) 的备注。<a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-11.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-11.png" alt="AWS-config-11" width="1000" height="361" /></a>
<p>&nbsp;</li>
<li>在<strong>规则</strong>下拉框中，选择您之前创建的规则，然后选择<strong>添加</strong>。</li>
</ol>
</li>
<li>向上滚动到 <strong>Designer</strong> (设计者) 部分，然后选择您的 Lambda 函数的名称。</li>
<li>删除默认代码，然后粘贴以下代码：
<div class="hide-language">
<pre class=" language-text"><code class=" language-text">
import boto3
from botocore.exceptions import ClientError
import json
import os

ACL_RD_WARNING = "The S3 bucket ACL allows public read access."
PLCY_RD_WARNING = "The S3 bucket policy allows public read access."
ACL_WRT_WARNING = "The S3 bucket ACL allows public write access."
PLCY_WRT_WARNING = "The S3 bucket policy allows public write access."
RD_COMBO_WARNING = ACL_RD_WARNING + PLCY_RD_WARNING
WRT_COMBO_WARNING = ACL_WRT_WARNING + PLCY_WRT_WARNING

def policyNotifier(bucketName, s3client):
    try:
        bucketPolicy = s3client.get_bucket_policy(Bucket = bucketName)
        # notify that the bucket policy may need to be reviewed due to security concerns
        sns = boto3.client('sns')
        subject = "Potential compliance violation in " + bucketName + " bucket policy"
        message = "Potential bucket policy compliance violation. Please review: " + json.dumps(bucketPolicy['Policy'])
        # send SNS message with warning and bucket policy
        response = sns.publish(
            TopicArn = os.environ['TOPIC_ARN'],
            Subject = subject,
            Message = message
        )
    except ClientError as e:
        # error caught due to no bucket policy
        print("No bucket policy found; no alert sent.")

def lambda_handler(event, context):
    # instantiate Amazon S3 client
    s3 = boto3.client('s3')
    resource = list(event['detail']['requestParameters']['evaluations'])[0]
    bucketName = resource['complianceResourceId']
    complianceFailure = event['detail']['requestParameters']['evaluations'][0]['annotation']
    if(complianceFailure == ACL_RD_WARNING or complianceFailure == ACL_WRT_WARNING):
        s3.put_bucket_acl(Bucket = bucketName, ACL = 'private')
    elif(complianceFailure == PLCY_RD_WARNING or complianceFailure == PLCY_WRT_WARNING):
        policyNotifier(bucketName, s3)
    elif(complianceFailure == RD_COMBO_WARNING or complianceFailure == WRT_COMBO_WARNING):
        s3.put_bucket_acl(Bucket = bucketName, ACL = 'private')
        policyNotifier(bucketName, s3)
    return 0  # done
			</code></pre>
</div>
</li>
<li>向下滚动到<strong>环境变量</strong>部分。该代码使用一个环境变量来存储 Amazon SNS 主题的 ARN。
<ol type="a">
<li>输入 TOPIC_ARN 作为密钥。</li>
<li>输入之前创建的 Amazon SNS 主题的 ARN 作为值。</li>
</ol>
</li>
<li>在 <strong>Execution role</strong> (执行角色) 下选择<strong>选择现有角色</strong>，然后从下拉菜单中选择之前创建的角色。</li>
<li>保留其他内容不变，然后在顶部选择<strong>保存</strong>。</li>
</ol>
<h2>步骤 5：验证效果</h2>
<p>到现在为止，我们已经有了一个 Lambda 函数、一个 Amazon SNS 主题、监控 Amazon S3 存储桶的 AWS Config，以及在发现存储桶不合规时触发 Lambda 函数的 CloudWatch 规则。我们来进行测试，确保它们能够正常工作。</p>
<p>我们有在受 AWS Config 监控的区域中创建的 Amazon S3 存储桶 myconfigtestbucket，还有关联的 Lambda 函数。ACL 或策略中未设置该存储桶的公开读写访问权限，所以它是合规的。</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-12.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-12.png" alt="AWS-config-12" width="1000" height="417" /></a></p>
<p>我们来更改存储桶的 ACL，以允许公开列出对象：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-13.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-13.png" alt="AWS-config-13" width="1000" height="545" /></a></p>
<p>保存后，该存储桶便可公开访问了。几分钟后，AWS Config 控制面板会发现一项不合规的资源：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-14.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-14.png" alt="AWS-config-14" width="1000" height="405" /></a></p>
<p>在 Amazon S3 控制台中，我们可以看到：在调用由之前创建的 CloudWatch 规则触发的 Lambda 函数后，存储桶中不再公开列出对象。</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-15.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-15.png" alt="AWS-config-15" width="1000" height="619" /></a></p>
<p>请注意，AWS Config 控制面板此时显示没有不合规的资源了：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-16.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-16.png" alt="AWS-config-16" width="1000" height="420" /></a></p>
<p>现在，我们来配置允许列表访问的存储桶策略，以尝试进行 Amazon S3 存储桶策略检查：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-17.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-17.png" alt="AWS-config-17" width="1000" height="421" /></a></p>
<p>对 myconfigtestbucket 存储桶设置该存储桶策略后，AWS Config 会在几分钟后检测到该存储桶不再合规。因为这是存储桶策略而不是 ACL，所以我们将一条通知发布到我们之前创建的 SNS 主题，以通知我们可能违反策略的行为：</p>
<p><a href="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-18.png"><img class="attachment-medium" src="https://www.fuwuqiok.com/wp-content/uploads/2018/11/AWS-config-18.png" alt="AWS-config-18" width="1000" height="255" /></a></p>
<p>获知该策略允许公开列出存储桶后，我们现在可以修改或删除该策略，随后 AWS Config 会检测到资源符合策略。</p>
<h2>结论</h2>
<p>在本文中，我们演示了如何使用 AWS Config 监控 Amazon S3 存储桶是否使用公开的读写访问权限 ACL 和策略。另外，我们演示了如何使用 Amazon CloudWatch、Amazon SNS 和 Lambda 覆盖公开的存储桶 ACL，或者在存储桶使用可疑策略时提醒您。您可以使用 <a title="CloudFormation 模板" href="https://s3.amazonaws.com/awsiammedia/public/sample/AWSConfigToMonitorAndRespondToAmazonS3Buckets/config.template" target="_blank" rel="noopener noreferrer">CloudFormation 模板</a>在多个区域快速部署该解决方案。通过该方法，您将能够轻松找出并保护公开的 Amazon S3 存储桶 ACL 和策略。将该解决方案部署到多个区域后，可以使用 AWS Config 聚合器来聚合结果。阅读本文<a title="了解更多信息" href="https://amazonaws-china.com/blogs/aws/aws-config-update-aggregate-compliance-data-across-accounts-regions/" target="_blank" rel="noopener noreferrer">了解更多信息</a>。</p>
<p><a rel="nofollow" href="https://www.fuwuqiok.com/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/">利用 AWS Config 监控和响应 Amazon Simple Storage Service (S3) 允许公开读写访问权限</a>，首发于<a rel="nofollow" href="https://www.fuwuqiok.com">服务器安全维护工作室</a>。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.fuwuqiok.com/%e5%88%a9%e7%94%a8-aws-config-%e7%9b%91%e6%8e%a7%e5%92%8c%e5%93%8d%e5%ba%94-amazon-simple-storage-service-s3-%e5%85%81%e8%ae%b8%e5%85%ac%e5%bc%80%e8%af%bb%e5%86%99%e8%ae%bf%e9%97%ae%e6%9d%83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
