Kanji
・云架构工程师 / 自由职业 ・1993年出生 ・爱媛县出身 / 现居东京都涩谷区 ・5年 AWS 实战经验 个人资料详情
目录
Amazon S3(简单存储服务)是一种 可扩展且高度耐用的对象存储服务 。 它使存储、检索和管理数据变得容易,并用于备份、归档和数据湖等多种用途。
<块引用> Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供业界领先的可扩展性、数据可用性、安全性和性能。 各种规模和行业的客户都可以使用 Amazon S3 来存储和保护各种用例的任意数量的数据,例如数据湖、网站、移动应用程序、备份和恢复、存档、企业应用程序、物联网设备和大数据分析。 Amazon S3 提供管理功能,以便您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。
什么是 Amazon S3 - AWS 文档
在 AWS 上构建环境时,请考虑将生成什么类型的数据以及如何存储这些数据。例如,可能涉及以下类型的数据:
如果您仅使用 EC2 构建系统,您可能首先考虑将数据存储在 EBS 卷上。 但是,对于长期数据存储或高可用性,将数据存储在 S3 中可以提高成本效率和容错能力。 请注意,与存储在操作系统内的数据相比,访问速度较慢,因此经常访问的数据应存储在EBS上,而需要长期存储的数据(例如存档或备份)应存储在S3上。
对于“日志数据”,以下 AWS 服务可以使用 S3 存储桶作为输出目标。建议将CloudTrail日志存储在S3存储桶中以便长期保留,方便后期审计和分析。
根据数据的重要性和机密性对数据进行分类。 例如,可以考虑以下分类。根据此处分类的数据类型,考虑适当的访问控制和加密。
如有必要,进一步细分数据分类。 例如,一般数据中包含的日志可以进一步分类为“审计日志”、“业务日志”和“系统日志”。“公共数据”还可以根据发布范围进行分类,例如“内部使用”、“合作伙伴使用”和“公开”。
根据数据分类设置适当的访问控制。S3存储桶的访问控制可以通过以下方式实现:
针对每种控制方法考虑以下策略:
使用 IAM 策略控制对 S3 存储桶的访问权限。IAM 策略向用户或角色授予 S3 存储桶的访问权限。
随着桶数量的增加,IAM策略中通过桶名称控制访问会变得复杂,因此需要结合KMS加密进行控制。 下面是对“1.数据分类”中分类的数据进行加密的示例:
通过加密,即使您授予只读策略(例如 AWS 托管的“ReadOnlyAccess”),无法访问 KMS 密钥的用户也无法查看数据内容。 此外,通过使用 IAM 策略控制对 KMS 密钥的访问,您可以仅允许特定用户或角色解密数据。
使用 VPC 终端节点策略来限制对特定 S3 存储桶的访问。与 IAM 策略一样,通过存储桶名称进行控制可能会变得复杂,因此请考虑使用 VPC 终端节点策略限制特定 AWS 账户或组织对 S3 存储桶的访问。 这有助于防止未经授权的数据传输并提高安全性。
例如,通过设置如下所示的 VPC 终端节点策略,您可以仅允许特定组织访问 S3 存储桶。 另外,还允许 SSM Agent 或 AWS Systems Manager Patch Manager 访问 AWS 托管的 S3 存储桶。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyOrgAccess", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": [ "o-xxxxxxx", ], "aws:ResourceOrgID": [ "o-xxxxxxx" ] } } }, { "Sid": "AllowAWSManagedBuckets", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::al2023-repos-ap-northeast-1-de612dc2/*", "arn:aws:s3:::aws-windows-downloads-ap-northeast-1/*", "arn:aws:s3:::amazon-ssm-ap-northeast-1/*", "arn:aws:s3:::aws-ssm-ap-northeast-1/*", "arn:aws:s3:::patch-baseline-snapshot-ap-northeast-1/*", "arn:aws:s3:::aws-patch-manager-ap-northeast-1-552881074/*", "arn:aws:s3:::aws-patchmanager-macos-ap-northeast-1-552881074/*" ] } ] }
使用存储桶策略来控制对 S3 存储桶的访问。默认情况下,除非您定义允许规则,否则只有创建存储桶的 AWS 账户具有访问权限。 通过定义允许规则,您可以向创建存储桶的账户外部的用户、角色或 AWS 服务授予访问权限。 仅授予最低限度的必要权限以降低安全风险。
Security Hub 定义了存储桶策略的控制,建议遵循以下规则:
[S3.5] S3 通用存储桶应要求请求使用 SSL。 [S3.6] S3 通用存储桶策略应限制对其他 AWS 账户的访问。
第一条规则建议设置存储桶策略以拒绝访问 S3 存储桶时不使用 SSL 的请求。 您可以设置如下存储桶策略来拒绝不使用 SSL 的请求:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireSSL", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::example-bucket/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
您可以使用存储桶 ACL(访问控制列表)来控制对 S3 存储桶的访问。但如下所述,不建议使用桶ACL,最好使用IAM策略或桶策略进行访问控制。
<反引号> Amazon S3 的大多数现代用例不再需要使用 ACL。 因此,除非您遇到需要控制对单个对象的访问的异常情况,否则建议禁用 ACL。 禁用 ACL 可以更轻松地使用策略控制对存储桶中所有对象的访问,无论对象是谁上传的。
控制对象所有权并禁用存储桶 ACL - Amazon Simple Storage Service
由于使用的机会很少,因此省略了有关存储桶 ACL 的说明。
使用KMS(密钥管理服务)对S3存储桶中的数据进行加密。使用KMS密钥加密的数据受KMS密钥策略控制。 如“1. IAM 策略”中所述,您可以通过 IAM 策略控制对 KMS 密钥的访问,从而限制对存储桶中数据的访问。 以下是根据数据分类设置 KMS 密钥的概述:
SSE-S3(S3标准加密)是S3提供的服务器端加密,可自动加密数据。 它可以免费使用,但您无法使用 IAM 策略或 KMS 密钥策略控制访问。 如果不需要访问控制,您可以使用SSE-S3轻松加密数据。