ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Skyvern 凭据管理实战:用 `skyvern credentials` 安全存储密码、信用卡与密钥并驱动浏览器自动化

Skyvern 凭据管理实战:用 `skyvern credentials` 安全存储密码、信用卡与密钥并驱动浏览器自动化 Skyvern 凭据管理实战用skyvern credentials安全存储密码、信用卡与密钥并驱动浏览器自动化【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern本文聚焦 Skyvern CLI 的凭据Credential管理能力覆盖skyvern credentials add / list / get / delete四个核心命令的非交互式用法、环境变量注入、命名规范与安全边界。读完你可以在脚本、CI 或 AI Agent 场景中安全地存储登录密码含 TOTP 二要素、信用卡与 API 密钥并将其与skyvern browser login、工作流中的credential_id参数打通实现不泄露任何明文密钥的浏览器自动化。凭据在 Skyvern 中的定位密码永远不该出现在 prompt 里Skyvern 用 AI 驱动浏览器完成登录、填表、抓取等任务而凭据管理要解决的核心问题是自动化流程中绝不能把密码写进 prompt、命令行参数或对话记录。为此Skyvern 提供了一次存储、按 ID 引用的凭据机制——创建凭据后返回一个形如cred_xxx的凭据 ID后续所有自动化skyvern browser login、工作流 login 块都只引用这个 ID服务端在需要时安全地取用真实值。该定位在 skills 参考文档 中被反复强调Never type passwords. Always use stored credentials withskyvern browser login绝不手输密码始终使用已存储凭据配合skyvern browser login。这也是 credentials.md 整篇文档的安全主线。创建凭据非交互式优先环境变量禁用 CLI 明文参数skyvern credentials add是创建凭据的唯一安全入口。核心原则把秘密放进环境变量而不是 CLI flag——CLI flag 会出现在ps输出和/proc/*/cmdline中也会被 shell history 记录环境变量则只存在于进程环境里。对应实现见 skyvern/cli/credentials.py每个敏感字段都同时支持--flag与环境变量两种来源例如--password对应SKYVERN_CRED_PASSWORD、--totp对应SKYVERN_CRED_TOTP且帮助文本明确标注prefer env var ... over flag。密码类型password——含可选 TOTP# 方式一标准登录密码 用户名 export SKYVERN_CRED_PASSWORDs3cret skyvern credentials add --name prod-login --type password \ --username userexample.com --json # 方式二带 TOTP 二要素secret 形如 JBSWY3DPEHPK3PXP 的 Base32 串 export SKYVERN_CRED_PASSWORDs3cret export SKYVERN_CRED_TOTPJBSWY3DPEHPK3PXP skyvern credentials add --name prod-mfa --type password \ --username userexample.com --json参数要点来自 credentials.py参数环境变量说明--name/-n—必填人类可读的凭据名--type/-t—password默认、credit_card、secret--username/-uSKYVERN_CRED_USERNAME密码类型必填--passwordSKYVERN_CRED_PASSWORD密码类型必填--totpSKYVERN_CRED_TOTP可选提供后登录时自动处理一次性验证码--json—输出结构化 JSON返回credential_id在交互式终端中省略敏感参数也没问题源码会调用typer.prompt(..., hide_inputTrue)隐藏输入credentials.pyTOTP 留空直接回车即可跳过。信用卡类型credit_card——敏感字段全部走环境变量export SKYVERN_CRED_CARD_NUMBER4111111111111111 export SKYVERN_CRED_CVV123 skyvern credentials add --name test-card --type credit_card \ --exp-month 12 --exp-year 2027 --card-brand visa \ --holder-name John Doe --json完整字段与环境变量映射credentials.py参数环境变量说明--card-numberSKYVERN_CRED_CARD_NUMBER卡号--cvvSKYVERN_CRED_CVV安全码--exp-monthSKYVERN_CRED_EXP_MONTH有效期月份 MM--exp-yearSKYVERN_CRED_EXP_YEAR有效期年份 YYYY--card-brandSKYVERN_CRED_CARD_BRAND卡组织如visa、mastercard--holder-nameSKYVERN_CRED_HOLDER_NAME持卡人姓名密钥类型secret——API Key / Tokenexport SKYVERN_CRED_SECRET_VALUEsk_live_abc123 skyvern credentials add --name api-token --type secret \ --secret-label Stripe key --json--secret-value环境变量SKYVERN_CRED_SECRET_VALUE为必填--secret-label环境变量SKYVERN_CRED_SECRET_LABEL可选用于说明该密钥用途后续在list中可据此识别。类型校验与非交互保障add命令对类型做白名单校验非password / credit_card / secret会直接报错退出credentials.py。若必填项缺失且处于非交互环境会给出可操作的报错提示如Set SKYVERN_CRED_PASSWORD or pass --password value并退出码 1见 require_interactive_or_flag。在 CI、脚本或 Agent 环境中务必设置SKYVERN_NON_INTERACTIVE1确保任何情况下都不会触发交互式 prompt 导致流程挂起。该变量的判定逻辑在 skyvern/cli/commands/_tty.pyCItrue、SKYVERN_NON_INTERACTIVE取1/true/yes任一真值即进入非交互模式且只有显式真值才会触发避免误判。列出与查询凭据永远只见元数据不见秘密# 列出所有凭据元数据 skyvern credential list --json # 按 ID 查询单个凭据 skyvern credential get --id cred_abc123 --json注意命令拼写差异创建用credentials复数列出/查询/删除则提供了credential单数这一 MCP 对齐命令二者最终都走同一套 SDK。credential list由 skyvern/cli/credential.py 实现内部转发给 MCP 工具skyvern_credential_list。在 mcp_tools/credential.py 中可以看到输出被严格序列化password 类型只暴露username和totp_type信用卡只暴露last_four后四位与brandsecret 只暴露secret_label——密码、卡号、密钥值永远不会出现在任何响应中。列表中每页最多 100 条--page-size范围 1–100credential.py。非 JSON 模式去掉--json会输出富文本表格ID、Name、Type 与 Details如username...、****4242 (visa)、label...同样只含元数据。用凭据 ID 驱动登录与工作流拿到credential_id后可以在三处复用skyvern browser loginskyvern browser login --url https://login.example.com --credential-id cred_123commands/browser.py 定义--credential-id参数。MCP 侧对应skyvern_login同样只接受credential_id并在 browser.py 的 MCP 工具 中校验其存在。工作流 login 块在工作流定义中声明workflow_parameter_type: credential_id的参数login 块的parameter_keys引用它。完整可运行示例见 examples/login-and-extract.json——login块登录后接extraction块抓取账户摘要complete_criterion描述登录成功的判定标准。MCP 工具skyvern_login需要 browser session且绝不接受明文密码参数——MCP 层的输入校验会拦截任何把密码塞进动作参数的做法browser.py 附近有明确注释Block password/credential actions — redirect to skyvern_login。删除凭据需要显式确认且不可恢复skyvern credentials delete cred_abc123 --yes --json删除是永久性的、不可撤销的操作因此源码credentials.py默认要求确认交互式终端会弹出Delete credential cred_abc123?确认在非交互模式下必须显式传--yes或-y否则直接报错退出防止脚本误删。--json会输出{credential_id: ..., deleted: true}便于程序化判断。建议的删除流程skyvern credential list --json # 先确认 ID 确实对应目标系统 skyvern credentials delete cred_abc123 --yes --json命名规范可读、可检索、可审计凭据 ID 是随机串无法从名字回推所以命名就是你的可读索引。文档推荐格式为「环境-目标域」生产环境prod-salesforce-primary预发环境staging-hubspot-sandbox同一系统多个凭据时追加用途后缀例如prod-salesforce-primary与prod-salesforce-backup。这样在skyvern credential list中一眼即可定位也方便在 CI 中按前缀做批量审计。安全红线四条必须遵守的实践文档的安全清单与源码实现一一对应逐条展开秘密走环境变量绝不走 CLI flag。flag 会泄露进ps//proc/*/cmdline/ shell historySKYVERN_CRED_*环境变量则只存活于进程环境。这一点在add命令的每个敏感参数 help 中都有标注是整个凭据体系的根基。日志中永不打印秘密。MCP 层有专门的脱敏机制mcp_tools/credential.pyapi_key、client_secret、master_password、password、secret、token等字段名在序列化时一律替换为***redacted***_redact_secrets递归处理嵌套结构L112-L123而skyvern_credential_create甚至刻意不注册为 MCP 工具L301-L303注释写明Passwords must never flow through MCP tool calls创建只能走 CLI 或 Web UI。删除前确认 ID 映射到预期系统。先list核对名称、类型与详情如username、卡后四位、label再执行删除避免误删生产凭据。主动清理过期凭据。员工离职、凭据轮换、目标系统下线时及时删除缩小凭据泄露面配合命名规范环境-域-用途能让清理审计有条理可循。与外部密码管理器集成可选扩展仓库还支持将 Bitwarden、1Password 作为凭据提供方见 SKILL.md 中 Also supports bitwarden, 1password, and azure_vault providers。MCP 工具层mcp_tools/credential.py提供skyvern_bitwarden_items、skyvern_onepassword_items等工具可列出保险库条目元数据vault/collection/item ID绝不返回字段值并通过BITWARDEN_MASTER_PASSWORD、OP_SERVICE_ACCOUNT_TOKEN环境变量配置。这些属于同一凭据体系的能力延伸适合已有密码管理器资产的团队做统一管理。小结Skyvern 的凭据管理遵循一个统一心智模型CLI 安全写入 → 服务端加密存储 → 以credential_id引用消费 → 元数据只读、秘密不可逆。掌握本文的四个命令与四条安全红线就能在交互式终端、CI 流水线与 AI Agent 三种场景下统一、安全地管理登录凭据、支付信息与 API 密钥并让浏览器自动化流程彻底告别明文密码。相关源码与文档索引技能总览与登录用法skyvern/cli/skills/skyvern/SKILL.md本主题参考文档skyvern/cli/skills/skyvern/references/credentials.mdCLI 实现add/list/get/deleteskyvern/cli/credentials.pyMCP 对齐命令 skyvern/cli/credential.pyMCP 工具与脱敏逻辑skyvern/cli/mcp_tools/credential.py非交互模式判定skyvern/cli/commands/_tty.py登录命令实现skyvern/cli/commands/browser.py工作流 login 块示例skyvern/cli/skills/skyvern/examples/login-and-extract.json【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进