S3 作为 AWS CloudFront 源真的安全吗?可以从哪几方面着手提高数据的安全性?这就需要咱们用点子智慧~
身为伊克罗德的解决方案架构师专业团队一员,编号007,今天在这里和大家分享我的经验。通常在我初次配置CloudFront时,会需要配置以下几个步骤:
步骤一:将内容上传到 Amazon S3,然后授予对象权限,必须允许公开读取存储桶和文件,文件必须授予公共读取访问权限。
步骤二:创建 CloudFront 分配
数据安全可能面临威胁
进行到这一步,我有一个疑问,当首次将 Amazon S3 存储桶设置为 CloudFront 分配的源时,将授予每个人读取我存储桶中的文件的权限。这样,任何人都可以通过 CloudFront 或使用 Amazon S3 URL 访问文件。
尽管 CloudFront 不会公开 Amazon S3 URL,但如果应用程序从 Amazon S3 中直接提供任何文件,或有人泄露了 Amazon S3 中的特定文件的直接链接,则用户可能会拥有这些 URL,这将是一个灾难!
如何提高数据的安全性?
因此我疯狂寻找答案时,终于找到更好的方法来提高信息的安全:
1.创建一个称为源访问身份(OAI)的特殊 CloudFront 用户,并将该用户与您的分配相关联。
2.配置 S3 存储桶权限,以便 CloudFront 能够使用 OAI 访问存储桶中的文件并将这些文件提供给您的用户。确保用户无法使用 S3 存储桶的直接 URL 访问该存储桶中的文件。
以下是具体步骤:
一、创建 OAI 并将其添加到您的分配
限制存储桶访问 中选择“是”。
如果已有要使用的 OAI,请选择使用现有身份。然后在您的身份列表中选择 OAI;
如果没有OAI,选择创建新的身份。
※注:授予对存储桶的读取权限 选择“是”,CloudFront 将更新存储桶权限,以授予指定的 OAI 读取存储桶中文件的权限;
如果希望手动更新 S3 存储桶的权限,请选择 “否”。
此处我们将选择“否”,手动更新存储桶的权限。
二、授予 OAI 读取 Amazon S3 存储桶中文件的权限
要在 Amazon S3 存储桶策略中将 OAI 指定为 Principal,使用 OAI 的 Amazon 资源名称 (ARN),其中包括 OAI 的 ID。例如:
此处已替换为 OAI 的 ID。
三、向 OAI 授予权限
要向 OAI 授予对 Amazon S3 存储桶中对象的访问权限,例如,s3:GetObject 权限允许 OAI 读取存储桶中的对象。
例:允许 OAI 读取指定存储桶 (s3:GetObject) 中的对象
至此,执行完这些步骤后,用户只能通过 CloudFront 访问您的文件,而无法直接从 S3 存储桶访问您的文件。
现在中国区也支持这个功能啦,快去用起来吧!