

# SEC08-BP04 强制实施访问控制
<a name="sec_protect_data_rest_access_control"></a>

 为有助于保护静态数据，请使用隔离和版本控制等机制来强制实施访问控制。应用最低权限和条件访问控制。防止向公众授予访问您数据的权限。

 **期望结果：**您验证只有获得授权的用户才能按照“需要知晓”的原则访问数据。您通过定期备份和版本控制来保护您的数据，以防止数据被有意或无意地修改或删除。您将关键数据与其它数据隔离，以保护其机密性和数据完整性。

**常见反模式：**
+  将具有不同敏感度要求或分类的数据存储在一起。
+  解密密钥的权限过于宽松。
+  数据分类不当。
+  不保留重要数据的详细备份。
+  提供对生产数据的持久访问。
+  未审计数据访问，也未定期检查权限。

**在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 保护静态数据对于维护数据的完整性、机密性以及符合监管要求非常重要。您可以实施多种控制措施来协助实现这一目标，包括访问控制、隔离、条件访问和版本控制。

 您可以按照最低权限原则强制实施访问控制，该原则仅向用户和服务提供执行其任务所需的权限。这包括对于加密密钥的访问权限。查看您的 [AWS Key Management Service (AWS KMS) policies](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)，来验证您授予的访问权限级别是否适当，以及相关条件是否适用。

 可以通过为每个分类级别使用不同的 AWS 账户，根据不同的分类级别分离数据，并使用 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) 管理这些账户。这种隔离有助于防止未经授权的访问，并最大限度地降低数据泄露的风险。

 定期审核在 Amazon S3 存储桶策略中授予的访问权限级别。除非绝对必要，否则请避免使用可公开读取或写入的存储桶。考虑使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 来检测可公开可用的存储桶，并使用 Amazon CloudFront 来提供 Amazon S3 中的内容。验证正确配置了应不支持公开访问的存储桶，以防止公开访问。

 对存储在 Amazon S3 中的关键数据实施版本控制和对象锁定机制。[Amazon S3 版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)保留对象的先前版本，以便在意外删除或覆盖时恢复数据。[Amazon S3 对象锁定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)为对象提供强制访问控制，从而防止对象在锁定到期之前被删除或覆盖，即使是根用户也是如此。此外，[Amazon Glacier 文件库锁定](https://docs.aws.amazon.com/amazonglacier/latest/dev/vault-lock.html)为存储在 Amazon Glacier 中的归档提供了类似的功能。

### 实施步骤
<a name="implementation-steps"></a>

1.  **采用最低权限原则，强制实施访问控制**：
   +  审核向用户和服务授予的访问权限，并验证他们是否只拥有执行其任务所需的权限。
   +  通过检查 [AWS Key Management Service (AWS KMS) policies](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 来查看对加密密钥的访问权限。

1.  **根据不同的分类级别将数据分开**：
   +  对每个数据分类级别使用不同的 AWS 账户。
   +  使用 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) 管理这些账户。

1.  **审核 Amazon S3 存储桶和对象权限**：
   +  定期审核在 Amazon S3 存储桶策略中授予的访问权限级别。
   +  除非绝对必要，否则请避免使用可公开读取或写入的存储桶。
   +  考虑使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 来检测公开可用的存储桶。
   +  使用 Amazon CloudFront 来提供 Amazon S3 中的内容。
   +  验证正确配置了应不支持公开访问的存储桶，以防止公开访问。
   +  可以对使用 IAM 身份验证的数据库和任何其它数据来源（例如 SQS 或第三方数据存储）应用相同的审核流程。

1.  **使用 AWS IAM Access Analyzer**：
   +  您可以配置 [AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 来分析 Amazon S3 存储桶，并在 S3 策略向外部实体授予访问权限时生成调查发现。

1.  **实施版本控制和对象锁定机制**：
   +  使用 [Amazon S3 版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)来保留对象的先前版本，这样可以从意外删除或覆盖中恢复。
   +  使用 [Amazon S3 对象锁定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)来为对象提供强制访问控制，从而防止对象在锁定到期之前被删除或覆盖，即使是根用户也是如此。
   +  将 [Amazon Glacier 文件库锁定](https://docs.aws.amazon.com/amazonglacier/latest/dev/vault-lock.html)用于存储在 Amazon Glacier 中的归档。

1.  **使用 Amazon S3 清单**：
   +  可以使用 [Amazon S3 清单](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)来审计和报告 S3 对象的复制和加密状态。

1.  **审核 Amazon EBS 和 AMI 共享权限**：
   +  审核 [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) 和 [AMI 共享](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html)的共享权限，来验证映像和卷是否未与工作负载外部的 AWS 账户共享。

1.  **定期审核 AWS Resource Access Manager 共享**：
   +  可以使用 [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) 来在 Amazon VPC 内共享资源，如 AWS Network Firewall 策略、Amazon Route 53 Resolver 规则和子网。
   +  定期审计共享的资源，并停止共享不再需要共享的资源。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+ [SEC03-BP01 定义访问要求](sec_permissions_define.md) 
+  [SEC03-BP02 授予最低访问权限](sec_permissions_least_privileges.md) 

 **相关文档：**
+  [AWS KMS 加密详情白皮书](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html) 
+  [管理对 Amazon S3 资源的访问权限简介](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-managing-access-s3-resources.html) 
+  [管理对 AWS KMS 资源的访问权限概览](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html) 
+  [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 
+  [Amazon S3 \+ Amazon CloudFront: A Match Made in the Cloud](https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-s3-amazon-cloudfront-a-match-made-in-the-cloud/) 
+  [使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) 
+  [使用 Amazon S3 对象锁定以锁定对象](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) 
+  [共享 Amazon EBS 快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) 
+  [共享 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html) 
+  [Hosting a single-page application on Amazon S3](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) 
+  [AWS 全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 
+  [Building a Data Perimeter on AWS](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/building-a-data-perimeter-on-aws.html) 

 **相关视频：**
+  [在 AWS 上保护您的数据块存储](https://youtu.be/Y1hE1Nkcxs8) 