跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.devin.ai/llms.txt

Use this file to discover all available pages before exploring further.

为什么要将 Devin 连接到自托管系统?

如果您的组织使用自托管的源代码管理系统 (如 GitLab) 或制品仓库 (如 Artifactory) ,依然可以充分利用 Devin。通过以安全的方式将这些服务暴露给 Devin 的基础设施,您的团队既能保持对自身系统的控制权,又能让 Devin 高效融入并协同您的开发工作流。

概览

您的团队可以创建一个 Network Load Balancer (NLB) ,将 Devin 的静态 IP 加入白名单,并为其发布一个 DNS 记录。此方案:
  • 将访问限制在一个小且可控的暴露面上 —— 只有 Devin 的已知 IP 可以连接
  • 只需数小时内的工程投入 即可完成搭建
  • 保留您现有的基础设施 —— 无需迁移到云托管方案
  • 提供集中化管理 —— 可选地使用单个负载均衡器来承载多个服务

前提条件

在设置集成之前,请确保您具备:
  • 在您的网络内可访问的 自托管 GitLab (或其他 SCM 系统)
  • 自托管制品仓库 (可选) ,例如 Artifactory 或 Nexus
  • 用于配置防火墙、负载均衡器和 DNS 的 网络管理访问权限
  • Devin 的静态 IP 地址 —— 可在此处找到
该集成适用于 Enterprise 计划客户。如需协助,请联系 enterprise@cognition.ai

配置选项

您可以通过两种主要方式将自托管服务暴露给 Devin: 保留你现有的自托管基础设施,只需在防火墙层将 Devin 的静态 IP 加入允许列表。 对于源代码管理:
  1. 将防火墙配置为允许来自 Devin 的 IP (列在此处) 的入站连接
  2. 确保你的 GitLab (或其他 SCM) 实例可通过 HTTPS 访问
  3. 在集成配置时将该 URL 提供给 Devin
对于制品仓库:
  1. 将 Devin 的 IP 添加到你的 Artifactory/Nexus 允许列表中
  2. 确保制品仓库可通过 HTTPS 访问
  3. 为 Devin 配置合适的凭证,以便访问制品
如果在制品仓库前使用负载均衡器,请参阅下方的负载均衡器注意事项部分,了解有关 IP 允许列表的重要细节。

方案 2:集中式负载均衡器

将多个服务部署在同一个 Application Load Balancer (ALB) 或 Network Load Balancer (NLB) 之后,集中进行 IP 过滤。 优点:
  • 为所有网络过滤提供统一管理点
  • 支持使用不同域名的多个内部服务
  • 简化安全审计和合规工作

负载均衡器注意事项

在 Application Load Balancer (ALB) 和 Network Load Balancer (NLB) 之间进行选择时,需要考虑它们各自如何处理 IP 允许列表 (IP allowlisting) : Application Load Balancer (ALB) —— 推荐用于大多数场景:
  • ALB 工作在第 7 层 (HTTP/HTTPS) ,并提供高级路由能力
  • 流量会经过 NAT,因此你的后端服务看到的是 ALB 的内部 IP 地址,而不是 Devin 的源 IP 地址
  • 对于位于 ALB 后面的制品仓库: 必须直接在 Artifactory/Nexus 上配置 IP 允许列表,因为仓库看到的是负载均衡器的内部 IP
  • 在 ALB 层使用 AWS WAF 进行 IP 过滤 (参见下面示例)
Network Load Balancer (NLB) —— 适用于需要 IP 白名单的场景:
  • NLB 工作在第 4 层 (TCP) ,并保留原始源 IP 地址
  • 你的后端服务可以看到 Devin 的真实源 IP
  • 对于位于 NLB 后面的制品仓库: 只在负载均衡器层配置 IP 允许列表即可,因为源 IP 会被保留
  • 需要为每个 IP 地址手动配置安全组
虽然 ALB 通常因其灵活性和易于管理而是首选,但当你需要在负载均衡器层进行 IP 允许列表控制、且不希望在后端服务上做额外配置时,NLB 也非常适用。

AWS 实现示例

以下是这两种负载均衡方案的 AWS 配置示例:

启用 WAF 的应用程序负载均衡器 (更简单)

# 使用 Devin 的静态 IP 创建 IP 集
aws wafv2 create-ip-set \
  --name devin-allowed-ips \
  --scope REGIONAL \
  --ip-address-version IPV4 \
  --addresses 1.2.3.4/32 5.6.7.8/32 9.10.11.12/32 13.14.15.16/32

# Create a WAF web ACL
aws wafv2 create-web-acl \
  --name devin-access-control \
  --scope REGIONAL \
  --default-action Block={} \
  --rules file://waf-rules.json

# Associate the WAF with your ALB
aws wafv2 associate-web-acl \
  --web-acl-arn arn:aws:wafv2:region:account:regional/webacl/... \
  --resource-arn arn:aws:elasticloadbalancing:region:account:loadbalancer/app/...
请将这些 IP 地址替换为我们 IP 白名单文档 中的实际 IP 地址。

网络负载均衡器 (手动配置安全组)

# 为安全组添加每个 Devin IP 的入站规则
aws ec2 authorize-security-group-ingress \
  --group-id sg-xxxxxxxxx \
  --protocol tcp \
  --port 443 \
  --cidr 1.2.3.4/32

# 对每个 IP 地址重复以上操作
aws ec2 authorize-security-group-ingress \
  --group-id sg-xxxxxxxxx \
  --protocol tcp \
  --port 443 \
  --cidr 5.6.7.8/32

# 对所有 Devin IP 继续执行此操作...

DNS 配置

在完成负载均衡器的设置后,创建一条可供 Devin 使用的 DNS 记录:
# 示例:将 gitlab.yourcompany.com 指向您的负载均衡器
# 该域名将解析到负载均衡器 IP,由其过滤流量
# 仅允许来自 Devin 白名单 IP 的连接

# 使用 AWS Route 53:
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890ABC \
  --change-batch file://dns-change.json
示例文件 dns-change.json
{
  "Changes": [{
    "Action": "CREATE",
    "ResourceRecordSet": {
      "Name": "gitlab.yourcompany.com",
      "Type": "A",
      "AliasTarget": {
        "HostedZoneId": "Z215JYRZR1TBD5",
        "DNSName": "your-alb-name-123456.us-west-2.elb.amazonaws.com",
        "EvaluateTargetHealth": false
      }
    }
  }]
}

集成步骤

在完成网络基础设施配置之后:
  1. 测试连接性 - 使用已配置的域名验证你的服务是否可以从外部网络访问
  2. 联系 Devin 支持团队 - 与 Cognition 取得联系,并提供:
    • 你的自托管 GitLab URL (例如:https://gitlab.yourcompany.com)
    • 你的制品仓库 URL (如适用)
    • 任何特定的身份验证要求
  3. 完成集成配置 - 与 Devin 团队协作完成连接设置
  4. 配置代码仓库 - 将你的代码仓库添加到 Devin’s Machine
在为 Devin 开通访问权限之前,通过尝试从一个不在允许列表中的 IP 地址发起连接来测试你的 IP 过滤配置。该连接应当被阻止。

最佳实践

  • 使用 HTTPS - 始终通过启用有效 SSL 证书的 HTTPS 对外提供服务
  • 创建专用服务账号 - 在 GitLab/SCM 系统中为 Devin 设置专用账号
  • 监控访问日志 - 定期审查来自 Devin IP 地址的连接日志
  • 记录你的配置 - 在内部文档中记录负载均衡器和 DNS 的配置
  • 测试故障切换 - 确保你的配置能够平滑应对负载均衡器或服务故障
  • 定期安全审计 - 定期检查对外暴露的服务并验证 IP 允许列表 (allowlist)

故障排查

Devin 无法连接到我的自托管系统:
  • 确认所有 Devin IP 地址 都已加入允许列表
  • 检查你的 SSL 证书是否有效且受信任
  • 确保 DNS 记录配置正确并已完成解析并生效
  • 确认防火墙规则允许 HTTPS (443 端口) 流量通过
身份验证失败:
  • 确认服务账号凭证正确无误
  • 确认服务账号在你的 SCM/制品系统中拥有适当的权限
  • 检查是否存在超出允许列表之外的基于 IP 的身份验证限制
性能问题:
  • 监控负载均衡器的指标以排查潜在瓶颈
  • 确保你的自托管服务拥有充足资源
  • 考虑你的基础设施与 Devin 的系统之间的地理距离

支持

如需获得有关自托管集成的帮助:
  1. 通过 app.devin.ai/settings/support 与我们的团队创建一个 Slack Connect 频道
  2. 发送邮件至 enterprise@cognition.ai,并说明您的具体部署和配置情况
  3. 在报告问题时,分享相关配置文件 (请先删减或遮蔽其中的敏感数据)