Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE]无免密sudo权限账号安装agent #1675

Open
neko12583 opened this issue Jul 17, 2023 · 3 comments
Open

[FEATURE]无免密sudo权限账号安装agent #1675

neko12583 opened this issue Jul 17, 2023 · 3 comments
Assignees
Labels
backlog 需求初始状态,等待产品进行评估 todo 进入开发排期的状态,纳入了最近的迭代

Comments

@neko12583
Copy link
Collaborator

你想要什么功能
目前节点管理非 root/Administrator 账号安装 agent 需要免密 sudo 权限
想要功能:无免密 sudo 权限的账号也能安装 agent

为什么需要
在一些企业中,并不想放开权限给到安装 agent 的账户,目前对于企业这方面的需求,一般是先临时开通权限,然后安装 agent,安装完后,再把权限取消

但一方面需要提单走流程,申请开通所有需要安装 agent 的机器的权限,填写相关信息,如果是分批的形式对机器进行纳管,操作比较繁琐
另一方面,后面如果有重装 agent 的需求时,又得重新走一遍申请流程

建议如何实现
普通用户,没有免密 sudo 权限,可以考虑新建接入点,把 agent 安装目录转为 /home/{user_name}/gse 下
账号对该路径下的目录具有权限,那么只需要考虑一些命令的权限以及 rc.local 这些特殊文件的处理
还有需要评估这个安装会不会造成 agent 的功能是否受限制或者监控和日志的功能是否受限制

@neko12583 neko12583 added the backlog 需求初始状态,等待产品进行评估 label Jul 17, 2023
@chalice-1831
Copy link
Collaborator

chalice-1831 commented May 27, 2024

非Root账户且无免密sudo权限账号安装agent修改适配方案

修改逻辑

  1. 接入点新增项 is_use_sudo, 默认为True
  2. 在全局配置中添加新接入点,修改agent相关工作路径,以解决用户在相关目录的权限问题
  3. 通过agent所使用的接入点的is_use_sudo项来判断是否在cmd前增加sudo的指令
  4. 传递安装脚本的参数中增加GSE_AGENT_RUN_DIR、GSE_AGENT_DATA_DIR、GSE_AGENT_LOG_DIR参数,通过-v传递
  5. setup_agent脚本中增加执行账户是否拥有非root免密的权限判断,针对crontab及chattr等依赖sudo权限的动作进行判断是否执行,放开原安装agent脚本中对 /home 目录的限制
  6. 通过host的identity对应记录的username获取安装执行所用的账号,使用该账号而非固定的root账号执行安装动作

所需修改文件

apps/backend/agent/solution_maker.py
apps/backend/components/collections/job.py
apps/backend/components/collections/plugin.py
apps/node_man/models.py
script_tools/setup_agent.sh
script_tools/setup_proxy.sh
script_tools/setup_agent.zsh
script_tools/setup_agent.ksh
script_tools/agent_tools/agent2/setup_proxy.sh
script_tools/agent_tools/agent2/setup_agent.sh
script_tools/agent_tools/agent2/setup_agent.zsh

@chalice-1831
Copy link
Collaborator

功能自测

容器化部署

image

二进制部署

image

@chalice-1831
Copy link
Collaborator

使用无免密sudo账户安装agent注意事项

请确保使用无免密sudo权限账户安装agent的机器未曾使用过非该账户安装过agent

或在使用无免密sudo权限账户安装agent前将原agent卸载并清理痕迹

# 基于默认接入点包括但不限于
/tmp/nm*
/tmp/xuoasefasd.err
/tmp/bkjob
/usr/local/gse
/var/run/ipc.stat
/var/log/gse
/var/run/gse
/var/run/ipc.state.report
/var/lib/gse

请在配置接入点时确认agent的安装账户拥有hostid文件路径的读写操作权限

hostid文件的路径默认为Linux: /var/lib/gse/host Windows: c:/gse/data/host

二进制部署版本中默认位于cmdb的/data/bkee/cmdb/server/conf/common.yaml文件eventServer-hostIdentifier中配置

容器化版本中默认位于cmdb的/data/bkhelmfile/blueking/environments/default/bkcmdb-values.yaml.gotmpl文件中的common-eventServer-hostIdentifier中配置

请确保所用账户拥有一下系统程序操作权限

/usr/bin/curl,
/usr/bin/mkdir,
/usr/bin/ls,
/usr/bin/cat,
/usr/bin/which,
/usr/bin/ping,
/usr/bin/echo,
/usr/bin/chmod,
/usr/bin/nohup,
/usr/bin/tail,
/usr/bin/ps,
/usr/bin/date,
/usr/bin/tee,
/usr/bin/uname,
/usr/bin/rm,
/usr/bin/awk,
/usr/bin/lsof,
/usr/bin/stat,
/usr/bin/readlink,
/usr/bin/grep,
/usr/bin/read,
/usr/bin/hash,
/usr/bin/timeout,
/usr/bin/bash,
/usr/bin/sed,
/usr/bin/chattr,
/usr/bin/cd,
/usr/bin/cp,
/usr/bin/wait,
/usr/bin/tr,
/usr/bin/wc,
/usr/bin/mktemp,
/usr/bin/seq,
/usr/bin/sleep,
/usr/bin/df,
/usr/bin/pidof,
/usr/bin/tar,
/usr/bin/gzip,
/usr/bin/pgrep,
/usr/bin/xargs,

接入点配置

接入点配置中 hostid路径 必须与上述 cmdb 的配置文件中指定的路径一致

创建接入点后根据接入点页面中显示的接入点id到节点管理数据库中执行下述语句

use bk_nodeman;
update node_man_accesspoint set is_use_sudo=0 where id={接入点页面中显示的id};

@chalice-1831 chalice-1831 added the todo 进入开发排期的状态,纳入了最近的迭代 label Sep 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog 需求初始状态,等待产品进行评估 todo 进入开发排期的状态,纳入了最近的迭代
Projects
None yet
Development

No branches or pull requests

3 participants