人工智能

在 AWS GovCloud (US) 中为 ChatGPT 桌面应用配置 Amazon Bedrock

ChatGPT 桌面应用现已在 Amazon Bedrock 上推出,适用于 AWS GovCloud (US), 通过两个组件提供对 OpenAI 前沿模型的访问。Work 可完成复杂的多步骤任务并交付可供审核的结果,Codex 则是用于开发、测试和审查软件的编码代理。

本演练面向安全架构要求模型推理使用 AWS GovCloud (US) 身份、终端节点和区域控制机制的组织。它将 Codex 配置为通过 Amazon Bedrock Mantle 在 us-gov-west-1中路由模型请求,在此可使用 AWS Identity and Access Management (IAM) 和现有 AWS GovCloud (US) 网络控制机制来管理访问权限。

Codex 是 OpenAI 的编码代理,用于 AI 驱动的软件开发。借助由 GPT 模型驱动的推理,Codex 引入了一类专为复杂、长周期开发者工作流优化的新型智能。您可以使用 ChatGPT 桌面应用、Codex CLI,以及与 Visual Studio Code、JetBrains 和 Xcode 的 IDE 集成。模型推理通过 Amazon Bedrock 上的 Responses API 进行路由。

对于有数据驻留要求的客户,处理过程会保留在您所选的 Amazon Bedrock AWS 区域内。您按 token 付费,无需席位许可,也没有按开发者计算的承诺用量。同时支持零数据保留(ZDR)。在此可配置模式下,提示和响应在处理过程中不会被 AWS 写入持久存储,也不会与模型提供商共享。这有助于您保护敏感信息,并满足严格的数据治理、隐私和安全要求。

本文介绍 ChatGPT 桌面应用的受控本地部署,该部署将模型推理发送至 AWS GovCloud (US-West) 中的 Amazon Bedrock。该配置使用 API 模式登录、托管设备策略、命名 AWS 配置文件以及网络限制。这些限制仅允许访问已批准的 Amazon Bedrock 终端节点,同时禁用其他外部连接和启用网络的功能。最终形成的部署可供机构安全团队测试和记录,然后再批准更广泛的使用。

使用 AWS GovCloud (US) 并遵循本指南本身并不构成对您工作负载的授权。您的组织仍需负责根据其系统安全计划和授权流程,审查所选模型、AWS 服务、区域、终端节点、工作站控制措施、代码仓库、凭证和数据流。

解决方案概述

您可以通过两种方式使用 ChatGPT 桌面应用:

  • Work 用于需要规划、研究、文件和最终成果的较大任务。
  • Codex 用于技术工作,例如编辑代码、运行测试和审查拉取请求。

ChatGPT 桌面应用通过桌面应用或 CLI 在组织管理的计算机上运行。它使用配置的 AWS 凭证安全地将请求发送到 us-gov-west-1中的 Amazon Bedrock Mantle 终端节点。由于此设置直接使用 AWS,因此不受 ChatGPT 工作区规则和用户角色的控制。主要安全控制措施是计算机的策略以及所使用的 AWS 身份和权限。

演练

该配置包含三个主要步骤:设置身份验证、设置 ChatGPT 桌面应用配置文件,然后启动、初始化并验证部署。

先决条件

在 AWS GovCloud (US) 中设置 ChatGPT 桌面应用之前,请确保 您的版本 的 ChatGPT 桌面应用支持 AWS GovCloud (US) 中的 Amazon Bedrock。您需要一个已批准的 AWS GovCloud (US) 账户、一个 IAM 身份和已批准的凭证、对已批准模型、AWS 区域和终端节点的访问权限,以及使用它们的权限。您还需要设置 requirements.toml 和 config.toml 文件。

步骤 1:设置身份验证

选择已批准的 AWS GovCloud (US) 账户和 IAM 身份或角色,使其有权访问 us-gov-west-1中已批准的模型。通过组织批准的机制获取凭证。本演练使用命名配置文件 codex-il5。请勿将凭证、持有者令牌、会话令牌和其他密钥保存在 TOML 文件中。

保护配置文件配置、凭证来源、SSO 令牌缓存以及任何凭证辅助程序,防止 ChatGPT 桌面应用任务写入,同时允许已批准的身份验证工具维护和刷新凭证。

ChatGPT 桌面应用支持两种 Amazon Bedrock 身份验证途径: Amazon Bedrock API 密钥 或 AWS SDK 凭证链. 通过 AWS IAM Identity Center 的 AWS SSO 在凭证链途径中受支持。

应用首先检查其环境中是否存在 AWS_BEARER_TOKEN_BEDROCK 。对于桌面使用,此变量可通过 Windows 上的 %USERPROFILE%\.codex\.env 或 Linux 和 macOS 上的 ~/.codex/.env 提供。存在时,持有者令牌优先于基于配置文件的身份验证。

如果没有可用的持有者令牌,应用将回退到标准 AWS SDK 凭证链。该链可以从 ~/.aws/credentials 读取 AWS 凭证,并从 ~/.aws/config读取相关配置文件设置。在 Windows 上,相应的默认路径为 %USERPROFILE%\.aws\credentials 和 %USERPROFILE%\.aws\config。该链还支持 SSO 配置文件。对于 SSO,它使用 AWS 配置文件中的配置文件设置和缓存的 SSO 会话获取临时角色凭证。这些凭证无需手动存储在 AWS 凭证文件中。请参阅 OpenAI 的 Bedrock 身份验证文档 和 AWS IAM Identity Center 凭证提供程序文档.

步骤 2:设置 ChatGPT 桌面应用配置文件

您必须创建两个 ChatGPT 桌面应用配置文件: config.toml 和 requirements.toml.

重要:必须在启动应用程序之前设置配置文件。下表显示了文件位置。

操作系统 用户 config.toml 管理员 requirements.toml
Windows %USERPROFILE%\.codex\config.toml %ProgramData%\OpenAI\Codex\requirements.toml
Linux ~/.codex/config.toml /etc/codex/requirements.toml
macOS ~/.codex/config.toml /etc/codex/requirements.toml

从 requirements.toml 文件开始。 requirements.toml 是由管理员控制的规则文件。它设置用户无法覆盖的安全限制,例如限制 ChatGPT 桌面应用允许使用的权限级别、工具或设置。

对于受支持的 AWS GovCloud (US) Amazon Bedrock 部署,请使用以下基线。 [windows] 部分仅适用于 Windows,且 sandbox_private_desktop 必须得到已批准运行时的支持。

allowed_login_methods = ["api"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
allowed_approvals_reviewers = ["user"]
allowed_approval_policies = [
{ granular = { sandbox_approval = false, rules = true,
mcp_elicitations = false, request_permissions = false,
skill_approval = true } },
]
allowed_web_search_modes = ["disabled", "cached"]
allow_browser_and_computer_use = false
allow_appshots = false
allow_remote_control = false
allow_login_shell = false
allow_managed_hooks_only = true
check_for_update_on_startup = false
mcp_servers = {}

[feedback]
enabled = false

[features]
network_proxy = true
in_app_chat = false
in_app_dictation = false
in_app_browser = false
browser_use = false
browser_use_external = false
browser_use_full_cdp_access = false
computer_use = false
in_app_updates = false
image_generation = false
memories = false
chronicle = false
external_agent_memory_import = false
guardian_approval = false
guardianv2 = false
guardian_ext = false
apps = false
enable_mcp_apps = false
plugins = false
remote_plugin = false
plugin_sharing = false
recommended_plugins = false
skill_mcp_dependency_install = false
skill_search = false
workspace_dependencies = false
hooks = false
standalone_web_search = false

[experimental_network]
enabled = true
managed_allowed_domains_only = true
domains = {}
unix_sockets = {}
allow_upstream_proxy = false
dangerously_allow_non_loopback_proxy = false
dangerously_allow_all_unix_sockets = false
allow_local_binding = false

[application.network]
enabled = true

[application.network.domains]
"bedrock-mantle.us-gov-west-1.api.aws" = "allow"
"api.openai.com" = "deny"
"chat.openai.com" = "deny"
"chatgpt.com" = "deny"
"ab.chatgpt.com" = "deny"
"platform.openai.com" = "deny"
"auth.openai.com" = "deny"
"gov.api.openai.com" = "deny"
"gov.chatgpt.com" = "deny"
"sdfedpreastus2.oaiusercontent.com" = "deny"
"o33249.ingest.us.sentry.io" = "deny"
"persistent.oaistatic.com" = "deny"
"oaisidekickupdates.blob.core.windows.net" = "deny"

[windows]
allowed_sandbox_implementations = ["elevated"]
sandbox_private_desktop = true

接下来,配置 config.toml 文件。 config.toml 用于告知 ChatGPT 桌面应用如何运行,包括使用哪个模型提供商(amazon-bedrock)、选择哪个模型,以及权限或上下文限制等设置。

将模型 ID 和命名配置文件(例如 codex-il5)替换为已批准的值。

model = "REPLACE_WITH_APPROVED_MODEL_ID"
model_provider = "amazon-bedrock"
forced_login_method = "api"
approval_policy = { granular = { sandbox_approval = false,
rules = true, mcp_elicitations = false,
request_permissions = false, skill_approval = true } }
approvals_reviewer = "user"
sandbox_mode = "workspace-write"
web_search = "cached"
allow_login_shell = false
check_for_update_on_startup = false

[model_providers.amazon-bedrock]
base_url = "https://bedrock-mantle.us-gov-west-1.api.aws/openai/v1"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = false
supports_standalone_web_search = false

[model_providers.amazon-bedrock.aws]
region = "us-gov-west-1"
profile = "codex-il5"

[sandbox_workspace_write]
network_access = false

[features]
network_proxy = true

[analytics]
enabled = false

[feedback]
enabled = false

[otel]
exporter = "none"
trace_exporter = "none"
metrics_exporter = "none"
log_user_prompt = false

[memories]
generate_memories = false
use_memories = false

[skills.bundled]
enabled = false

[apps._default]
enabled = false

[windows]
sandbox = "elevated"

第 3 步:启动、初始化并验证

从 ChatGPT 网站下载应用并安装。安装后保持应用关闭。如果应用自动打开,或此前已启动过该应用,请完全退出 ChatGPT,并结束所有残留的 ChatGPT 或 Codex 进程。

确保在首次启动应用前, requirements.toml 和 config.toml 已就位。

启动应用以加载 requirements.toml 和 config.toml 设置。确保其将 amazon-bedrock 显示为模型提供商。

在 Codex CLI 中,你应该会看到一个 /status 标签页,如下所示:

Codex CLI /status tab showing amazon-bedrock configured as the model provider

图 1:Codex CLI /status 标签页确认 amazon-bedrock 为模型提供商

在 ChatGPT 桌面应用中,你也可以确认 amazon-bedrock 为模型提供商。

ChatGPT desktop app settings confirming amazon-bedrock as the model provider

图 2:ChatGPT 桌面应用设置显示 amazon-bedrock 为模型提供商

故障排除

应用提示登录 OpenAI 账户。 验证 requirements.toml 和 config.toml 使用的是前表中所示的确切位置和文件名,终止所有 ChatGPT 和 Codex 进程,然后重新启动。这些文件必须在应用启动之前就位。

AWS GovCloud (US) 端点被报告为不受支持。 与 OpenAI 确认确切的桌面版或应用服务器版本、端点和模型。仅更改 URL 并不能确立支持。

使用了错误的 AWS 身份。 检查实际生效的凭证来源和命名配置文件。检查 Amazon Bedrock API 密钥是否优先于配置文件。

缺少能力限制。 重启后检查完整的实际生效要求。仅 API 登录设置不会应用能力策略。

回滚与清理

如果验证检查失败,请停止推广。将受影响的设备恢复到先前批准的策略和提供商设置,然后重启 ChatGPT 桌面应用。撤销所有临时 AWS 凭证或 API 密钥,并确认这些设备无法再连接到 Amazon Bedrock。保留测试记录,并在再次尝试前清楚记录失败原因。

结论

在 AWS GovCloud (US) 中,Amazon Bedrock 上的 ChatGPT 桌面应用为你提供了一种受控方式来使用 OpenAI 前沿模型和编码辅助。推理过程保留在 AWS GovCloud (US) 区域内。通过验证配置、确认已批准的 AWS 身份和端点,并验证安全控制,你可以自信地为更广泛的使用准备部署。这种方法支持创新,同时使部署决策与各组织的安全、授权和数据处理要求保持一致。

准备好探索在 AWS GovCloud (US) 中 Amazon Bedrock 上使用 Codex 的 ChatGPT 桌面应用了吗?从受控部署开始,验证你的安全控制,并与你的安全团队合作,为更广泛的采用做好准备。

相关资源


关于作者