问题标签 [kubernetes-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 在 kubernetes 中打开 chown 或 dac_override 功能时是否存在任何安全问题
作为 Kubernetes 集群管理员,我被要求在 SHARED Kubernetes 集群中为一些特殊的Pod 启用chown、dac_override和fowner Linux 功能。
但是我发现在 Container 中打开这些功能很可怕: https ://www.redhat.com/en/blog/secure-your-containers-one-weird-trick
我想知道 Pod 是否只能在 Pod 中的文件/文件夹上使用这些功能?或者他们也可以在主机文件/文件夹上使用它们来破解一些东西?
我还打开了 RunAsRoot 权限,但禁用了 Privileged 权限。
所以我想知道在 Kube 集群中启用这些功能是否存在任何安全问题?
或者有什么方法可以让一些特殊的 Pod 拥有这些功能?
非常感谢!
kubernetes - 如何在 Pod 中添加证书?
如何将另一个根证书添加到这个/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
签署了 kubernetes 根证书的文件(在 pod fs 中)?
也就是说,挂载 Pod 时应该始终有两个证书。
谢谢你。
kubernetes - 如果我可以解码 Kubernetes 机密,那么它们的意义何在?
我可以轻松获取存储在Kubernetes
.
从我要解码的输出中选择秘密值。
例子ZXhwb3NlZC1wYXNzd29yZAo=
我不确定我是否了解Kubernetes
生态系统中秘密资源的有效性,因为它很容易获得。
gradle - Gradle 作为非 root
您能否让我知道如何使用插件运行gradle
图像(从docker
存储库中提取)并以非用户身份运行?jib
root
Kubernetes pod
我已经gradle
使用Gradle 4.6
.
我在我的Kubernetes pod
.
当我以 user - 身份运行图像时root
,gradle
构建成功。
当我以非root
用户身份运行映像时(由于pod RBAC
启用),构建失败,因为gradle
无法创建/.gradle
目录并且没有足够的权限并出现以下错误。
无法为 Linux amd64 加载本机库“libnative-platform.so”。
有没有办法让root
通过的非用户securityContext
使用图像成功执行构建gradle
?
有没有更好的方法来解决问题而无需将目录权限更改为777
.
提前致谢!!
kubernetes - Kubernetes 中 etcd 的单独 CA?
我正在学习谷歌云(GKE)中的控制平面安全课程,并在下面的链接中提到“证书颁发机构和集群信任”,并有这些问题。有人可以澄清这些吗?
https://cloud.google.com/kubernetes-engine/docs/concepts/control-plane-security
- 了解到每个集群都有其可以颁发证书的 CA,这部分很好.. 还提到etcd 有单独的 CA ...这是否意味着一个集群有两个 CA,一个用于其余组件,一个用于etcd 或者它只是整个控制平面的一个 CA?
- 它还说,每个集群都有自己的“根”CA..我知道 CA 是什么,根证书颁发机构是什么意思?
提前致谢...
kubernetes - Kubernetes 服务帐号默认权限
我正在试验服务帐户。我相信以下应该会产生访问错误(但不会):
我看到的是成功的服务列表,但我预计会出现权限错误,因为我从未RoleBinding
为ClusterRoleBinding
.test-sa
我正在努力寻找列出特定 SA 可用权限的方法,但根据Kubernetes check serviceaccount permissions,应该可以:
虽然我怀疑该命令是否真的有效,因为我可以test-sa
用任何乱码替换它仍然说“是”。
根据文档,默认情况下服务帐户具有“授予所有经过身份验证的用户的发现权限”。它没有说明这实际上意味着什么,但从更多阅读中我发现这个资源可能就是它所指的:
这意味着所有服务帐户都具有get
对所有 API 端点的权限,尽管“nonResourceURLs”位意味着这不适用于服务等资源的 API,即使这些 API 位于该路径下……(???)
如果我完全删除Authorization
标题,我会看到预期的访问错误。但我不明白为什么它能够使用这个空的服务帐户获取数据。我有什么误解,如何正确限制权限?
kubernetes - 如果我更新一个秘密,它是否会自动更新到它被卷安装的所有资源?
我有一个秘密,我将它作为一个卷安装在部署中。
如果我稍后更新秘密值,新的更新值是否会自动反映在我卷安装秘密的部署 pod 中?
笔记:
我正在按照这里的答案更新秘密
从文件生成秘密时,如何在 Kubernetes 上更新秘密?
提前致谢。
encryption - 如何加密 Kubernetes 环境中容器使用的实际存储/卷?
对于云托管的 kubernetes,无论是 AWS EKS、Azure AKS 还是 Google GKE,使用客户托管密钥的选项总是以将客户主密钥存储在云提供商自己的 vault/KMS(例如 aws kms 或 azure vault )。在这种情况下,云提供商仍然可以访问客户加密密钥(或者至少它位于云环境中)。
什么是在 k8s 环境中部署应用程序并使用客户提供的密钥加密存储的理想实现,但密钥的知识应该只在客户端,即由于隐私问题而不能存储在云提供商内部的任何地方?
encryption - 如何使用客户端管理的密钥加密 Kubernetes pod 使用的实际存储/卷(提供者端对密钥的最少/零知识)?
我想在我的 kubernetes 环境中拥有每个客户端的命名空间和存储,其中每个客户端运行一个专用的应用程序实例,并且只有客户端应该能够加密/解密该特定客户端的应用程序正在使用的存储。我已经看到了数百个关于 Kubernetes 环境中秘密加密的示例,但很难实现由客户端控制的实际存储加密。是否可以在只有客户端知道加密密钥(而不是 k8s 管理员)的 K8s 环境中进行存储加密?
kubernetes - 通过 Kubernetes Ingress 访问 Spring Security
我在我的后端启用了 tls。所以每一次流量都需要经过“https://.....”。我可以在本地访问它,也可以使用 Kubernetes 中的端口转发。但我无法通过 DNS 访问它(例如https://hostname.net/backend/....)。
我得到答案:
我读到证书可能是错误的,但是通过端口转发一切正常,所以我认为这不是问题。证书是自签名的。我只有我的服务器证书。
在我添加 tls 之前,everythinkg 工作正常。
这是我的服务和入口: