Security Kubernetes EncryptionConfiguration中的“identity”提供程序提供什么样的安全性?

Security Kubernetes EncryptionConfiguration中的“identity”提供程序提供什么样的安全性?,security,encryption,kubernetes,storage,etcd,Security,Encryption,Kubernetes,Storage,Etcd,参考: 根据文件 资源按原样写入而不加密。当设置为第一个提供程序时,资源将在写入新值时解密 当设置为第一个提供程序时,资源将在写入新值时解密。听起来很混乱。如果资源按原样写入etcd而没有加密,为什么解密为写入的新值意味着什么 然后呢 默认情况下,身份提供程序用于保护etcd中的机密,etcd不提供加密 如果未进行加密,identity提供商提供什么样的安全性?如果进行加密,它是什么样的加密?如etcd中所述 etcd是否加密存储在磁盘驱动器上的数据 否。etcd不加密存储在磁盘驱动器上的密钥/

参考:

根据文件

资源按原样写入而不加密。当设置为第一个提供程序时,资源将在写入新值时解密

当设置为第一个提供程序时,资源将在写入新值时解密。
听起来很混乱。如果资源按原样写入etcd而没有加密,为什么
解密为写入的新值
意味着什么

然后呢

默认情况下,身份提供程序用于保护etcd中的机密,etcd不提供加密


如果未进行加密,
identity
提供商提供什么样的安全性?如果进行加密,它是什么样的加密?

etcd
中所述

etcd是否加密存储在磁盘驱动器上的数据

否。etcd不加密存储在磁盘驱动器上的密钥/值数据。如果用户需要加密存储在etcd上的数据,有一些选项:

  • 让客户端应用程序加密和解密数据
  • 使用底层存储系统的一项功能加密存储的数据,如dm crypt
问题第一部分: 默认情况下,
身份提供程序
用于保护etcd中的机密,etcd不提供加密。 这意味着默认情况下,k8s api在
etcd
中存储机密时使用
身份提供程序
,并且不提供任何加密。

仅与一个提供程序一起使用:
identity
与根本不使用
EncryptionConfiguration
的结果相同(假设您以前没有任何加密的机密)。 所有机密数据将以明文形式存储在
etcd

例如:

    providers:
    - identity: {}
问题的第二部分: 资源按原样写入而不加密。 问题的第一部分对此进行了描述和解释

当设置为第一个提供程序时,资源将在写入新值时解密

看看这个例子:

    providers:
    - aescbc:
        keys:
        - name: key1
          secret: <BASE 64 ENCODED SECRET>
    - identity: {}
  • 在这种情况下,您将在
    etcd
    中混合使用加密和未加密的数据
  • 从该配置开始,所有新的
    机密将以纯文本形式保存
  • 对于前缀为k8s:enc:aescbc:v1:key1的etcd中的所有现有机密,提供程序:aescbc配置将用于解密存储在etcd中的现有机密
当设置为第一个提供程序时,资源将在写入新值时解密

为了从加密数据和未加密数据的混合切换到只有“未加密”数据的情况,您应该对所有机密执行读/写操作:

$kubectl获取机密--所有名称空间-o json | kubectl替换-f-

如果它不提供加密,但文档似乎在谈论解密以及它如何保护,为什么会出现呢

如果您同时拥有加密和未加密的数据,则必须将提供者类型设置为
identity
或者,如果您想解密由其他提供商加密的所有现有
机密
(存储在etcd中)

以下命令读取所有机密,然后更新它们以应用服务器端加密。有关更多详细信息,请参阅

$kubectl获取机密--所有名称空间-o json | kubectl替换-f-

根据您的
加密配置
,所有
机密
都将保存为未加密-如果第一个提供程序是:
标识
,或者如果第一个提供程序是不同类型,则将其加密

此外


EncryptionConfig
作为默认设置被禁用。要使用它,您必须在
kube apiserver
配置中添加
--encryption provider config
Identity
没有加密任何数据,因为它有3个
N/A

要澄清,您是在问
Identity EncryptionConfiguration
如何工作,或者它与其他提供商有什么不同?我想我想问的是,
Identity
提供商到底有什么帮助,如果它不提供加密,但文档似乎在谈论
解密
,以及它如何
保护etcd中的机密,那么它为什么会存在呢。这是一种什么样的保护,解密如何适应?
    providers:
    - identity: {}
    - aescbc:
        keys:
        - name: key1
          secret: <BASE 64 ENCODED SECRET>