对象的服务器端加密
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 保持封存状态,加密对象就无法读取。
删除一个 EK。这将使所有由该 EK 保护的 SSE-KMS 或 SSE-S3 加密对象永久不可读。删除 EK 和删除数据的组合可以满足有关安全删除数据的法规要求。
删除 EK 通常是不可逆的。在有意删除主密钥之前,请务必极其谨慎。
更多信息,请参阅: