kubernetes kubelet将归档日志的权限设置为全球范围,

avwztpqn  于 3个月前  发布在  Kubernetes
关注(0)|答案(8)|浏览(45)

发生了什么?
周期性地,kubelet会将日志归档为.gz文件,但文件权限设置为全球范围的"644"

# ls -rlt /var/log/pods/*/*/*.gz

-rw-r--r--. 1 root root 1038836 Mar 29 06:18 /var/log/pods/kube-system_apiserver-demo1.test.com_712b37831be464ccc2fb1553ef89aa91/apiserver/66.log.20240327-233810.gz
-rw-r--r--. 1 root root 1175429 Mar 31 14:44 /var/log/pods/kube-system_coredns-cfngt_8a5bacf2-063b-4ffc-b86a-237b94a07246/coredns/18.log.20240329-044703.gz
-rw-r--r--. 1 root root  379963 Apr  6 23:58 /var/log/pods/kube-system_apiserver-demo1.test.com_712b37831be464ccc2fb1553ef89aa91/apiserver/69.log.20240406-085133.gz

你期望发生什么?
日志文件不应该具有全球范围的权限
我们如何尽可能精确地最小化地重现它?

  1. 安装containerd + kubernetes
  2. 观察文件夹ls -rlt /var/log/pods///*.gz
    我们需要知道其他任何信息吗?
  • 无响应*

Kubernetes版本
客户端版本:v1.29.1
Kustomize版本:v5.0.4-0.20230601165947-6ce0bf390ce3
服务器版本:v1.29.1
云提供商
操作系统版本

# On Linux:
$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.2 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.2 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.2
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"

$ uname -a
Linux gongyovm02.hpeswlab.net 5.14.0-284.11.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 12 10:45:03 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux

# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here

安装工具
容器运行时(CRI)和版本(如果适用)
containerd
相关插件(CNI,CSI,...)和版本(如果适用)

nimxete2

nimxete21#

这个问题目前正在等待分类。
如果SIG或子项目确定这是一个相关的问题,他们将通过应用triage/accepted标签并提供进一步的指导来接受它。
组织成员可以通过在评论中写入/triage accepted来添加triage/accepted标签。
有关使用PR评论与我互动的说明,请查看here。如果您对我的行为有任何问题或建议,请针对kubernetes/test-infra仓库提出一个问题。

s1ag04yj

s1ag04yj2#

raise one PR #124229 to fix this issue

kxxlusnw

kxxlusnw4#

我同意在这种情况下,更严格的安全措施更好,但我们将改变当前权限时破坏现有用户。

0tdrvxhp

0tdrvxhp5#

/remove-kind bug
/kind feature
zbdgwd5y

zbdgwd5y6#

一种选择是保留默认设置,并添加一个配置选项以允许在日志上使用不同类型的权限。

sg2wtvxw

sg2wtvxw7#

@kannon92@saschagrunert ,这是正确的。更改可能会破坏现有用户,但安全性应该比兼容性更重要。我认为644应该是一个错误。此外,几乎所有的容器运行时,如"docker","containerd"等,都将标准输出日志输出到文件中,权限为640。但是kubelet将这些日志以更宽泛的权限644归档。

添加可配置选项似乎是合理的,但另一个问题出现了,默认值是什么?如果设置为644,这意味着kubelet的默认设置是不安全的吗?

h22fl7wq

h22fl7wq8#

Kubernetes项目目前缺乏足够的贡献者来充分应对所有问题。
此机器人根据以下规则对未分类的问题进行分级处理:

  • lifecycle/stale应用后的90天内无活动,将应用lifecycle/stale
  • lifecycle/stale应用后的30天内无活动,将应用lifecycle/rotten
  • lifecycle/rotten应用后的30天内无活动,将关闭该问题

您可以:

  • 使用/remove-lifecycle stale标记此问题为新鲜
  • 使用/close关闭此问题
  • 提供帮助,使用Issue Triage

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle stale

相关问题