Skip to content

配置更新需拒绝 env_vars 与 secret_env_refs 同名冲突 #269

@Xy718

Description

@Xy718

背景

PR #267 已在初始部署入口校验普通 env_vars 与 Agent Bundle 鉴权 SecretRef 的环境变量名冲突,但实例后续配置更新路径还没有复用同一规则。

当前问题

  • 初始部署会在 deploy_service.py 中调用 _reject_secret_ref_env_var_collisions()。
  • save_config() 会直接把 req.env_vars 保存进 pending_config。
  • _execute_config_update() 会直接写 instance.env_vars。
  • _merge_reserved_advanced_config() 会保留已有 advanced_config.secret_env_refs。
  • resource_builder.build_deployment() 会先加入 ConfigMap env,再追加 secretKeyRef env。

因此用户后续仍可能写入与 secret_env_refs 同名的普通 env,例如 OAUTH_ACCESS_TOKEN,造成 Deployment 中重复 env,并弱化 SecretRef 边界。

建议修复

在 save_config() / update_config() / _execute_config_update() 应用 env_vars 前,基于实例现有或合并后的 advanced_config.secret_env_refs 执行同 deploy_service._reject_secret_ref_env_var_collisions() 等价校验。

验收

  • 带 secret_env_refs 的实例后续更新 env_vars.OAUTH_ACCESS_TOKEN 时返回 400。
  • 不修改 env_vars 或不冲突时保持原行为。
  • pending_config 和直接更新路径都覆盖测试。

来自 PR #267 维护者 review follow-up;非 P0/P1 blocker。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions