文档

对象服务器端加密

MinIO 服务器端加密 (SSE) 在写入操作的一部分中保护对象,允许客户端利用服务器处理能力来保护存储层中的对象(存储时加密)。SSE 还为围绕安全锁定和擦除的监管和合规性要求提供关键功能。

MinIO SSE 使用 MinIO 密钥加密服务 (KES) 和外部密钥管理服务 (KMS) 来执行大规模安全加密操作。MinIO 还支持客户端管理的密钥管理,在这种管理方式下,应用程序承担创建和管理用于 MinIO SSE 的加密密钥的全部责任。

MinIO SSE 与 AWS 服务器端加密 的功能和 API 兼容,并支持以下加密策略

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 需要访问加密密钥 (EK) 以及用作 SSE 操作一部分的外部密钥管理系统 (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 通常是不可逆的。在有意删除主密钥之前,请务必谨慎。

有关更多信息,请参阅