对象服务器端加密
MinIO 服务器端加密 (SSE) 在写入操作过程中保护对象,允许客户端利用服务器处理能力在存储层 (静态加密) 保护对象。SSE 还为围绕安全锁定和擦除的监管和合规性要求提供关键功能。
MinIO SSE 使用 MinIO 密钥加密服务 (KES) 和外部密钥管理服务 (KMS) 来执行大规模的安全加密操作。MinIO 还支持客户管理的密钥管理,在这种情况下,应用程序将全权负责创建和管理用于 MinIO SSE 的加密密钥。
MinIO SSE 在功能和 API 上与 AWS 服务器端加密 兼容,并支持以下加密策略
MinIO 支持使用存储在外部 KMS 上的特定外部密钥 (EK) 自动启用写入到存储桶的所有对象的 SSE-KMS 加密。客户端可以通过在写入操作中指定显式密钥来覆盖存储桶默认 EK。
对于没有自动 SSE-KMS 加密的存储桶,客户端可以在写入操作中指定 EK。
MinIO 在启用服务器端加密的过程中会加密后端数据。启用 SSE-KMS 加密后,您无法将其禁用。
与 SSE-S3 和 SSE-C 相比,SSE-KMS 提供更细粒度和可定制的加密,并且建议使用它而不是其他支持的加密方法。
有关在本地(非生产)MinIO 部署中启用 SSE-KMS 的教程,请参见 快速入门。对于生产 MinIO 部署,请使用以下指南之一
MinIO 支持使用存储在外部 KMS 上的 EK 自动启用写入到存储桶的所有对象的 SSE-S3 加密。MinIO SSE-S3 支持整个部署的 一个 EK。
对于没有启用自动 SSE-S3 加密的存储桶,客户端可以在写入操作时请求 SSE 加密。
MinIO 在启用服务器端加密的过程中会加密后端数据。启用 SSE-KMS 加密后,您无法将其禁用。
有关在本地(非生产)MinIO 部署中启用 SSE-S3 的教程,请参见 快速入门。对于生产环境中的 MinIO 部署,请使用以下指南之一
客户端在对对象的写入操作中指定一个 EK。MinIO 使用指定的 EK 执行 SSE-S3。
SSE-C 不支持存储桶默认加密设置,要求客户端执行所有密钥管理操作。
MinIO SSE 要求启用 网络加密 (TLS)。
安全擦除和锁定
MinIO 要求访问用于 SSE 操作的加密密钥 (EK) *和* 外部密钥管理系统 (KMS) 来解密对象。您可以利用此依赖关系来安全地擦除并锁定对象,方法是禁用对用于加密的 EK 或 KMS 的访问。
常见策略包括但不限于
封存 KMS,使其无法被 MinIO 服务器访问。这将锁定所有由 KMS 上存储的任何 EK 保护的 SSE-KMS 或 SSE-S3 加密对象。只要 KMS 处于封存状态,加密对象将保持不可读。
封存/卸载 EK。这将锁定所有由该 EK 保护的 SSE-KMS 或 SSE-S3 加密对象。只要 CMK(s) 处于封存状态,加密对象将保持不可读。
删除 EK。这将使所有由该 EK 保护的 SSE-KMS 或 SSE-S3 加密对象永久不可读。删除 EK 和数据相结合可能满足有关数据安全删除的监管要求。
删除 EK 通常是不可逆的。在有意删除主密钥之前,请务必格外小心。
有关更多信息,请参见