MinIO 最佳实践 - 安全和访问控制

MinIO Best Practices - Security and Access Control

今天,我们想讨论一下关于 S3 安全性和访问控制的 MinIO 最佳实践。

最小权限访问

最小权限访问原则是 MinIO 部署安全的基础。您可以控制哪些应用程序可以访问 MinIO 上的哪些 S3 资源。因此,您应该只授予特定任务所需的权限。

对 S3 资源的访问由附加到应用程序凭据(特别是 S3 访问密钥)的 IAM 策略控制。例如,当通过 Web UI 创建新的访问密钥时,您可以通过定义附加的 IAM 策略来限制访问密钥的权限。

创建具有附加 IAM 策略的新访问密钥

上面显示的附加策略仅授予对 my-bucket 存储桶的读取权限。因此,使用这些访问凭据的应用程序只能读取 MinIO,而不能写入 MinIO,而且只能从这个特定的存储桶读取。

版本控制和 S3 对象锁定

S3 对象锁定 使您能够使用一次写入多次读取 (WORM) 模型在 MinIO 上存储对象。您可以将保留期或法律保留附加到对象。前者会阻止任何覆盖操作,直到保留期过期,而后者则会阻止任何覆盖操作,直到从对象中删除法律保留。

根据 S3 规范,您可以在启用了版本控制的存储桶上启用对象锁定。

对象保留和版本控制

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

存储桶保留配置

版本控制和对象锁定对于满足由 勒索软件攻击 带来的业务关键威胁特别有用。WORM 模型可以防止勒索软件删除或加密您的数据,是抵御试图劫持您的数据的网络犯罪团伙的重要防御手段。

静态加密

在保存数据之前对其进行加密可以防止对您的 MinIO 存储基础设施进行低级访问而导致的数据泄露。MinIO 支持使用外部管理密钥的 S3 服务器端加密

您可以将领先的本地和云 KMS 提供商(如 Hashicorp Vault 或 AWS)通过我们的 KES 项目连接到您的 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 身份提供商。

OpenID Connect 配置
LDAP/Active Directory 配置

配置后,MinIO 使用身份提供商提供的用户身份进行 S3 请求身份验证。虽然外部身份提供商会增加存储系统的复杂性,但它们提供了集中式身份管理的优势,可以降低大型部署的整体复杂性,并有助于降低未停用陈旧帐户的风险。

数据复制

跨站点或跨区域数据复制对于降低操作和安全事件的风险和持续时间至关重要。MinIO 使在数据中心之间设置 同步和异步复制 变得轻而易举。

跨站点复制配置

当一个站点出现故障或受到攻击时,您可以通过负载均衡器规则或 DNS 配置回退到复制的站点。因此,您的存储基础设施可以处理整个站点的故障,而不会影响客户端应用程序。

CVE 监控

与我们公开可用的源代码一样,我们 MinIO 会透明地处理安全事件。在运行 MinIO 部署时,您应该关注我们的 安全公告。一旦发布包含安全修复的新版本,我们就会发布安全公告,解释影响和缓解措施。这有助于您快速识别和修复存储基础设施中的安全风险。订阅我们的 SUBNET 支持系统后,您将收到有关新安全修复的通知,并在评估安全问题对您的部署的影响时获得直接的工程支持。

结论

在本文中,我们概述了 MinIO 部署的安全最佳实践。您应该最关注的两个主要主题是 **通过 IAM 策略管理访问控制** 以及启用静态和传输中的 **加密**。此外,您还应该利用 **S3 对象锁定** 和 **跨站点数据复制** 提供的数据保护功能,以防止恶意或意外删除。

通过遵循这几个最佳实践,您可以为您的存储基础设施以及所有使用它的应用程序建立一个坚实且安全的基础。

下载 MinIO 并立即构建您的云原生基础。加入我们的 公共 Slack 频道 以分享技巧和窍门。