跳转到内容

企业部署

本页面涵盖在环境中部署 Grok Build 所需的全部内容,包括网络要求、配置管理、身份验证选项、安全控制和数据生命周期。

网络要求

所有连接均使用 HTTPS(端口 443)。

必需项

这些主机是核心功能所必需的:

HostPurpose
cli-chat-proxy.grok.com推理代理、设置
auth.x.aiOAuth2/OIDC 身份验证

如果使用企业 OIDC,还需允许您的身份提供者(IdP)的域名(例如 login.microsoftonline.com)。

附加项

这些主机支持附加功能,可以被阻止而不会影响核心身份验证和推理:

HostPurposeImpact if blocked
api.x.aixAI API(直接 API 密钥路径)仅在使用 api_key 身份验证而非推理代理时需要
code.grok.com远程会话同步、共享、WebSocket 中继会话保持仅在本地;共享链接不可用
assets.grok.com个人资料图像、UI 资产用户头像无法加载;无功能影响
x.ai通过 curl | bash 安装脚本下载 CLI 二进制文件使用 npm install -g @xai-official/grok 作为不需要此主机的替代方案
storage.googleapis.comCLI 二进制文件的备用 CDN仅在 curl | bash 安装期间 x.ai 无法访问时需要

x.aistorage.googleapis.com 主机仅用于 shell 脚本安装程序和应用程序内的 grok update。如果您的环境使用 npm 进行分发(npm install -g @xai-official/grok),则不需要这两个主机。

TLS

所有连接使用 TLS 1.2 或 TLS 1.3,由 rustls 强制执行(无 OpenSSL 依赖)。根证书从操作系统信任存储中加载。没有禁用 TLS 的选项。对于 TLS 检查代理,请将代理的 CA 证书安装到操作系统信任存储中。

代理支持

CLI 遵循标准代理环境变量(HTTPS_PROXYHTTP_PROXYNO_PROXY)。HTTP 连接池默认保持空闲连接 90 秒(GROK_POOL_IDLE_TIMEOUT_SECS),推理请求使用 SSE 流式传输,其中每块空闲超时默认为 600 秒。将代理空闲超时设置为至少 10 分钟,以避免在长模型响应期间过早断开连接。

配置

Grok 从五个层级加载配置,按优先级从低到高:

PrioritySourcePurpose
1(最低)/etc/grok/managed_config.toml系统级托管配置
2~/.grok/managed_config.toml每用户托管配置
3~/.grok/config.toml用户偏好
4~/.grok/requirements.toml用户级固定设置
5(最高)/etc/grok/requirements.toml系统级固定设置

requirements.toml 中的设置不能被较低层级、远程设置或用户配置覆盖 — 请将其用于合规关键策略。所有层级都支持 [[version_overrides]] 用于版本条件补丁和 $VAR 扩展。

MDM 和托管部署的系统级策略

最高优先级配置层是 /etc/grok/requirements.toml。这是通过移动设备管理(MDM)、黄金镜像、配置管理工具或入职脚本大规模管理 Grok 的组织推荐使用的机制。

常见部署模式:

  • MDM / 端点管理 — 直接将 TOML 文件推送到托管工作站的 /etc/grok/ 中。
  • 黄金镜像 / AMI — 将策略文件烘焙到用于开发人员笔记本电脑或 CI 运行程序的基础镜像中。

requirements.toml 中固定的值使用封闭式"固定"机制:它们不能被用户 config.toml、环境变量、远程设置或较低优先级层覆盖。这使得 /etc/grok/requirements.toml 成为合规关键策略(如禁用遥测、强制执行沙箱配置、限制工具或固定特定功能标志)的权威来源。

Claude Code 兼容性(可选)

已经使用 Claude Code 并通过 MDM 部署了其 managed-settings.json 文件的组织可以继续依赖该文件。Grok 从中读取策略的子集(权限规则、MCP 服务器允许列表、一些遥测/反馈标志和市场限制)以实现兼容性。

Grok 自己的 /etc/grok/requirements.toml 始终优先于 Claude managed-settings.json 文件。Claude 兼容层仅适用于混合 Claude + Grok 环境;纯 Grok 部署应使用 requirements.toml + config.toml

身份验证

Grok Build 支持四种会话身份验证方法:

MethodTriggerRefreshableBest for
浏览器 OIDCgrok login(默认)具有浏览器的交互式终端
设备代码grok login --device-authSSH 会话、容器、无头主机
外部身份验证提供者配置中的 auth_provider_command企业 IdP、自定义令牌代理
API 密钥XAI_API_KEY 环境变量或配置中的 model.api_key脚本、CI/CD、无头自动化

当有多个凭据可用时,Grok 按模型解析它们:model.api_key > model.env_key > 活跃会话令牌 > XAI_API_KEY

企业 OIDC

拥有企业身份提供者(Entra ID、Okta、Auth0 等)的组织可以配置 Grok 直接针对其进行身份验证:

text
[auth.oidc]
issuer = "https://login.yourcompany.com"
client_id = "your-client-id"

或通过环境变量:GROK_OIDC_ISSUERGROK_OIDC_CLIENT_ID。该流程使用 PKCE 并支持 refresh_token 授权以实现自动续订。

外部身份验证提供者

将 Grok 指向一个在标准输出上生成令牌的可执行文件:

text
[auth]
auth_provider_command = "/usr/local/bin/your-auth-provider"

该命令必须输出纯令牌字符串或 JSON:{"access_token": "...", "refresh_token": "...", "expires_in": 3600}refresh_tokenexpires_in 是可选的)。

Grok 在两个契约上运行命令,并设置 GROK_AUTH_EXPIRED 来区分它们。当凭据是 Grok 已持有的凭据的后台刷新时,它为 1:没有人正在观看,命令在 Grok 终止它前有几秒钟时间 — 因此请静默生成或以非零状态退出,永远不要等待输入。在登录时,它未设置:有用户附加,命令的 stderr 显示给用户,浏览器往返或设备代码有最多 300 秒时间。在 GROK_AUTH_EXPIRED=1 时立即退出而不是提示的命令,使得切换到登录屏幕的速度更快。

API 密钥

对于 CI/CD 和无头自动化,设置 XAI_API_KEY 环境变量 — 不需要配置文件:

bash
export XAI_API_KEY="xai-..."
grok -p "Review this diff" --output-format json --always-approve

在持久的开发人员工作站上,您可以在 ~/.grok/config.toml 中将密钥绑定到特定模型:

text
[model.grok-build]
api_key = "xai-..."

[models]
default = "grok-build"

有关输出格式和 CLI 标志,请参阅无头与脚本

设备代码

对于没有浏览器的环境(SSH、容器、云开发盒),设备代码登录遵循 RFC 8628:

bash
grok login --device-auth

Grok 打印一个 URL 和一个简短的用户代码。在任何具有浏览器的设备上完成登录。

限制登录方法

两个策略控制用户如何进行身份验证。将它们设置在 requirements.toml 中,以便用户 config.toml、环境变量或远程设置无法覆盖它们。

disable_api_key_auth 强制交互式 IdP 登录。不再提供或接受 xai.api_key 方法,并且在请求时,第一方 xAI API 密钥将被替换为 IdP 会话令牌,因此遗留的 XAI_API_KEY 或每模型密钥无法跳过 SSO。第三方(BYOK)端点继续工作,因为它们的 base_url 不在 x.ai 上;通过您自己的提供者 IAM 限制这些。

text
[grok_com_config]
disable_api_key_auth = true

force_login_team_uuid 将登录固定到一个团队。令牌的团队主体必须与配置的值匹配,因此个人登录或登录到错误团队的操作将被拒绝并显示错误,不会写入 auth.json。您可以设置单个团队 UUID 或列表,在这种情况下,列表中的任何团队都被允许;空列表拒绝所有登录。设置此选项也会启用 disable_api_key_auth,因为纯 API 密钥不携带团队成员资格。

text
[grok_com_config]
force_login_team_uuid = "<your-team-uuid>"
# Or allow several teams:
# force_login_team_uuid = ["<team-a-uuid>", "<team-b-uuid>"]

该值是团队的 UUID,访问令牌将其作为登录主体携带。每次颁发或重用会话时都执行强制执行,包括缓存的令牌和静默刷新。不再合规的会话将被清除,因此用户必须重新登录。运行 grok inspect 检查加载了哪个登录策略。

如果您从 Claude Code 迁移,forceLoginMethod 映射到 disable_api_key_auth,而 forceLoginOrgUUID 映射到 force_login_team_uuid,后者采用团队 UUID。

安全控制

日常权限(模式、允许/拒绝规则)和沙箱配置文件适用于单个机器和托管部署。本节涵盖仅企业策略:固定、无头模式和锁定始终批准关闭。

沙箱

配置文件、自定义 sandbox.toml 以及沙箱与权限的关系在沙箱中介绍。在 requirements.toml 中固定配置文件:

text
[sandbox]
profile = "workspace"

权限

询问、自动和始终批准,加上 CLI --allow / --deny 和配置规则,在权限中介绍。对于 CI 和无头运行,另外两种模式很重要:

ModeBehaviorTypical use
dontAsk静默拒绝没有明确允许规则的内容无头、CI
acceptEdits自动批准文件编辑;为 shell 命令提示半自动化工作流

示例无头运行:

bash
grok -p "Review the API changes" \
  --permission-mode dontAsk \
  --allow 'Bash(git *)' \
  --allow 'Bash(gh *)' \
  --allow 'Read' \
  --allow 'Grep' \
  --deny 'Bash(rm -rf *)' \
  --sandbox strict

锁定绕过权限模式

[ui] 下设置 disable_bypass_permissions_mode = true 以在整个部署中关闭始终批准(绕过权限)。这会阻止切换回它的所有方式:--yolo--permission-mode bypassPermissions 标志、会话内切换(Ctrl+O、/always-approve 和 Shift+Tab 模式循环)、客户端提供的 yolo 设置以及通配 allow 规则(如 ***)。拒绝规则仍然适用,未设置锁定时行为不变。

text
[ui]
disable_bypass_permissions_mode = true

为了防止篡改,仅从根拥有来源(/etc/grok/requirements.toml 或系统层)遵守锁定,而不是从用户可写的 ~/.grok/requirements.toml。Claude Code 的 managed-settings.json 中的 disableBypassPermissionsMode: "disable" 应用于 grok 的始终批准 — grok 遵守该文件的权限规则、MCP 允许列表和市场限制,但开发人员的 --yolo / [ui] permission_mode / 运行时切换仍然生效。这使 grok 不会继承主机的 Claude Code 锁定(例如由 AppSec 强化的共享集群);要在 grok 中禁用始终批准,请在 grok 自己的 requirements.toml 中设置 disable_bypass_permissions_mode = true

隐私与数据生命周期

数据生命周期

会话将数据通过六个阶段移动:

  1. 用户输入 — 提示和文件内容在本地组装。
  2. 传输 — 通过 TLS 1.2/1.3 发送到推理代理。
  3. 推理 — 代理转发到模型。ZDR 组织通过跳过日志记录的专用服务身份路由。
  4. 工具执行 — 在用户的沙箱环境中本地发生。
  5. 响应 — 通过相同的 TLS 连接流回。
  6. 会话结束 — 对于 ZDR 组织,在推理层不保留提示、代码或响应。本地会话历史存储在 ~/.grok/ 中。

零数据保留

ZDR 在团队级别强制执行。当为团队或企业启用时,使用 Grok Build 时会发生零数据保留。

本文档为 docs.x.ai 全站中文翻译,由 AI 自动翻译生成。代码示例请以原文为准。