企业部署
本页面涵盖在环境中部署 Grok Build 所需的全部内容,包括网络要求、配置管理、身份验证选项、安全控制和数据生命周期。
网络要求
所有连接均使用 HTTPS(端口 443)。
必需项
这些主机是核心功能所必需的:
| Host | Purpose |
|---|---|
cli-chat-proxy.grok.com | 推理代理、设置 |
auth.x.ai | OAuth2/OIDC 身份验证 |
如果使用企业 OIDC,还需允许您的身份提供者(IdP)的域名(例如 login.microsoftonline.com)。
附加项
这些主机支持附加功能,可以被阻止而不会影响核心身份验证和推理:
| Host | Purpose | Impact if blocked |
|---|---|---|
api.x.ai | xAI 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.com | CLI 二进制文件的备用 CDN | 仅在 curl | bash 安装期间 x.ai 无法访问时需要 |
x.ai 和 storage.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_PROXY、HTTP_PROXY、NO_PROXY)。HTTP 连接池默认保持空闲连接 90 秒(GROK_POOL_IDLE_TIMEOUT_SECS),推理请求使用 SSE 流式传输,其中每块空闲超时默认为 600 秒。将代理空闲超时设置为至少 10 分钟,以避免在长模型响应期间过早断开连接。
配置
Grok 从五个层级加载配置,按优先级从低到高:
| Priority | Source | Purpose |
|---|---|---|
| 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 支持四种会话身份验证方法:
| Method | Trigger | Refreshable | Best for |
|---|---|---|---|
| 浏览器 OIDC | grok login(默认) | 是 | 具有浏览器的交互式终端 |
| 设备代码 | grok login --device-auth | 是 | SSH 会话、容器、无头主机 |
| 外部身份验证提供者 | 配置中的 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 直接针对其进行身份验证:
[auth.oidc]
issuer = "https://login.yourcompany.com"
client_id = "your-client-id"或通过环境变量:GROK_OIDC_ISSUER 和 GROK_OIDC_CLIENT_ID。该流程使用 PKCE 并支持 refresh_token 授权以实现自动续订。
外部身份验证提供者
将 Grok 指向一个在标准输出上生成令牌的可执行文件:
[auth]
auth_provider_command = "/usr/local/bin/your-auth-provider"该命令必须输出纯令牌字符串或 JSON:{"access_token": "...", "refresh_token": "...", "expires_in": 3600}(refresh_token 和 expires_in 是可选的)。
Grok 在两个契约上运行命令,并设置 GROK_AUTH_EXPIRED 来区分它们。当凭据是 Grok 已持有的凭据的后台刷新时,它为 1:没有人正在观看,命令在 Grok 终止它前有几秒钟时间 — 因此请静默生成或以非零状态退出,永远不要等待输入。在登录时,它未设置:有用户附加,命令的 stderr 显示给用户,浏览器往返或设备代码有最多 300 秒时间。在 GROK_AUTH_EXPIRED=1 时立即退出而不是提示的命令,使得切换到登录屏幕的速度更快。
API 密钥
对于 CI/CD 和无头自动化,设置 XAI_API_KEY 环境变量 — 不需要配置文件:
export XAI_API_KEY="xai-..."
grok -p "Review this diff" --output-format json --always-approve在持久的开发人员工作站上,您可以在 ~/.grok/config.toml 中将密钥绑定到特定模型:
[model.grok-build]
api_key = "xai-..."
[models]
default = "grok-build"有关输出格式和 CLI 标志,请参阅无头与脚本。
设备代码
对于没有浏览器的环境(SSH、容器、云开发盒),设备代码登录遵循 RFC 8628:
grok login --device-authGrok 打印一个 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 限制这些。
[grok_com_config]
disable_api_key_auth = trueforce_login_team_uuid 将登录固定到一个团队。令牌的团队主体必须与配置的值匹配,因此个人登录或登录到错误团队的操作将被拒绝并显示错误,不会写入 auth.json。您可以设置单个团队 UUID 或列表,在这种情况下,列表中的任何团队都被允许;空列表拒绝所有登录。设置此选项也会启用 disable_api_key_auth,因为纯 API 密钥不携带团队成员资格。
[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 中固定配置文件:
[sandbox]
profile = "workspace"权限
询问、自动和始终批准,加上 CLI --allow / --deny 和配置规则,在权限中介绍。对于 CI 和无头运行,另外两种模式很重要:
| Mode | Behavior | Typical use |
|---|---|---|
dontAsk | 静默拒绝没有明确允许规则的内容 | 无头、CI |
acceptEdits | 自动批准文件编辑;为 shell 命令提示 | 半自动化工作流 |
示例无头运行:
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 规则(如 * 或 **)。拒绝规则仍然适用,未设置锁定时行为不变。
[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。
隐私与数据生命周期
数据生命周期
会话将数据通过六个阶段移动:
- 用户输入 — 提示和文件内容在本地组装。
- 传输 — 通过 TLS 1.2/1.3 发送到推理代理。
- 推理 — 代理转发到模型。ZDR 组织通过跳过日志记录的专用服务身份路由。
- 工具执行 — 在用户的沙箱环境中本地发生。
- 响应 — 通过相同的 TLS 连接流回。
- 会话结束 — 对于 ZDR 组织,在推理层不保留提示、代码或响应。本地会话历史存储在
~/.grok/中。
零数据保留
ZDR 在团队级别强制执行。当为团队或企业启用时,使用 Grok Build 时会发生零数据保留。