MinIO 最佳实践 - 安全和访问控制
今天我们想介绍有关 S3 安全和访问控制的 MinIO 最佳实践。
最低权限访问
最小权限访问原则是 MinIO 部署安全的基础。您可以控制哪些应用程序访问 MinIO 上的哪些 S3 资源。因此,您应该只授予特定任务所需的权限。
对 S3 资源的访问由附加到应用程序凭据的 IAM 策略控制,特别是 S3 访问密钥。例如,当通过 Web UI 创建新的访问密钥时,您可以通过定义附加的 IAM 策略来限制访问密钥的权限:

上面显示的附加策略仅授予对my-bucket存储桶的读取访问权限。因此,使用这些访问凭据的应用程序只能读取但不能写入 MinIO - 并且只能从这个特定的存储桶中读取。
版本控制和 S3 对象锁定
S3 对象锁定使您能够使用一次写入多次读取 (WORM) 模型将对象存储在 MinIO 上。您可以为对象附加保留期或法定保留期。前者在保留期到期之前阻止任何覆盖,而后者在从对象中删除合法保留之前不允许覆盖。
根据 S3 规范,您可以在已启用版本控制的存储桶上启用对象锁定。

您可以在存储桶上设置保留配置,以控制 WORM 模型应用于新上传对象的时间长度。您当然可以始终对单个对象设置特定的保留策略或合法保留。但是,建议使用存储桶级别的默认设置,以确保存储桶内的所有对象都免受意外或恶意覆盖。

版本控制和对象锁定对于应对勒索软件攻击带来的关键业务威胁特别有用。WORM 模型可防止勒索软件删除或加密您的数据,并且是防止网络犯罪集团试图劫持您的数据的重要防线。
静态加密
在保存数据之前对其进行加密可防止对 MinIO 存储基础架构的低级别访问造成数据泄露。MinIO 支持使用外部管理密钥的S3 服务器端加密。
您可以通过我们的KES项目将领先的本地和云 KMS 提供商(如Hashicorp Vault或 AWS)连接到您的 MinIO 集群。您的加密密钥在 KMS 中保持安全,而 MinIO 可以利用 KMS 在数据持久化之前对其进行加密。
因此,您设置 KES 以连接到您选择的 KMS 提供商。然后将 MinIO 连接到 KES。例如,如您的Hashicorp Vault 指南中所示。
在您的 MinIO Web UI 中,您还可以设置存储桶级别的加密配置,这样任何新上传到存储桶的对象都会在 KMS 上使用指定的密钥进行加密。

当没有 KMS 解决方案时,MinIO 可以满足您的需求。我们支持一个简单的内置 KMS,您可以使用它在安装 KMS 的同时从一开始就启用加密。
您可以使用基本的 UNIX 命令生成您自己的随机加密密钥:
cat /dev/urandom | head -c 32 | base64
只需设置一个环境变量,就可以将 MinIO 配置为使用您的密钥加密数据。
export MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g=
一旦您的 KMS 解决方案可用,您就可以轻松地将此密钥导入 KMS。
传输加密
除了静态加密之外,您还可以在您的 MinIO 部署中启用 HTTPS,以防止潜在的攻击者窃听您的网络流量。MinIO 仅支持零配置的现代 TLS 1.2 和 1.3 密码套件。您只需提供 TLS 私钥和证书。通过访问您的 TLS 和网络安全文档了解更多信息。
身份提供者
MinIO 具有内置的身份和用户管理。然而,当为许多不同的应用程序团队管理大型存储基础设施时,像Okta或 LDAP/ Active Directory这样的集中式身份管理系统可以更好地控制所有用户和应用程序。
MinIO内置了对 LDAP 和 OpenID Connect身份提供者的支持。


配置后,MinIO 使用身份提供者提供的用户身份进行 S3 请求身份验证。虽然外部身份提供者给存储系统增加了一些复杂性,但它们提供了集中身份管理的优势,可以降低大型部署的整体复杂性,并有助于降低不停用陈旧帐户的风险。
数据复制
跨站点或跨区域数据复制对于降低操作和安全事件的风险和持续时间至关重要。MinIO 使得在跨数据中心的站点之间设置同步和异步复制变得容易。

当站点出现故障或受到攻击时,您可以通过负载均衡器规则或 DNS 配置回退到复制的站点。因此,您的存储基础架构可以在不影响客户端应用程序的情况下处理整个站点的故障。
CVE 监控
与我们公开可用的源代码一样,我们在 MinIO 透明地处理安全事件。当您运行 MinIO 部署时,您应该留意我们的安全建议。一旦带有安全修复程序的新版本可用,我们就会发布安全公告,解释影响和缓解措施。这有助于您快速识别和修补存储基础架构中的安全风险。订阅我们的SUBNET支持系统后,您会收到有关新安全修复程序的通知,并且在评估安全问题对您的部署的影响时,您将获得直接的工程支持。
结论
在这篇文章中,我们概述了 MinIO 部署的安全最佳实践。您最应该关注的两个主要主题是通过 IAM 策略进行访问控制管理以及启用静态和动态加密。此外,您应该利用S3 对象锁定和跨站点数据复制提供的数据保护功能,防止恶意或意外删除。
通过遵循这几个最佳实践,您将把您的存储基础设施和所有使用它的应用程序建立在一个稳固和安全的基础上。
立即下载 MinIO并构建您的云原生基础。加入我们的公共 Slack 频道,分享提示和技巧。