

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Connect 连接到私有托管的源代码管理
<a name="connect-private-connection"></a>

**重要**  
AWS 安全代理的私有连接处于预览版，可能会发生变化。

AWS Security Agent 可以连接到在私有网络中运行的源代码控制系统，例如 GitLab Self-Managed 实例和 GitHub 企业服务器。私有连接使用 Amazon VPC Lattice 在 AWS 安全代理和您的私有基础设施之间建立安全的连接，而无需将您的系统暴露在公共互联网上。

## 私有连接的工作原理
<a name="_how_private_connections_work"></a>

私有连接在 AWS 安全代理和您的 VPC 中的目标资源之间创建了一条安全的网络路径。在幕后，AWS 安全代理使用 Amazon VPC Lattice 来建立这种连接。VPC Lattice 是一项 AWS 应用程序联网服务，用于连接、保护和监控 VPC 和账户间服务之间的流量，而无需您管理底层网络基础设施。

创建私有连接时：

1. 您提供与目标服务具有网络连接的 VPC、子网和（可选）安全组。

1. AWS 安全代理创建服务托管资源网关，并在您指定的子网中配置弹性网络接口 (ENI)。

1. 代理使用资源网关通过私有网络路径将流量路由到目标服务的 IP 地址或 DNS 名称。

## Service-managed 与自我管理的私有连接对比
<a name="_service_managed_vs_self_managed_private_connections"></a>

AWS 安全代理支持两种私有连接模式：

 **Service-managed**（建议用于简单设置）：
+ AWS 安全代理为您创建和管理 VPC 莱迪思资源网关。
+ 目标服务必须在创建代理空间的**同一 AWS 账户**中运行。
+ 不能跨越多个 AWS 账户。

 **Self-managed**（适用于高级或跨账户设置）：
+ 您可以创建和管理自己的VPC Lattice资源配置。
+ 您提供现有资源配置的 Amazon 资源名称 (ARN)。
+ 支持跨账户访问（客户管理跨账户联网）。

## 先决条件
<a name="_prerequisites"></a>

在创建私有连接之前，请确认您已经：
+ 活跃的代理空间
+ 使用已知私有 IP 地址GitLab Self-Managed 或 DNS 名称可私密访问的目标服务（或 GitHub 企业服务器）
+ 目标服务必须使用 TLS 最低版本为 1.2 的 HTTPS 流量提供服务
+ 您的 VPC 中的子网（1-20 个子网）。我们建议在多个可用区中选择子网以实现高可用性。
+ （可选）用于控制 ENI 流量的安全组（最多 5 个）

**注意**  
VPC Lattice 不支持以下可用区：`use1-az3`、`usw1-az2`、`apne1-az3`、`apne2-az2`、、`euc1-az2`、`euw1-az4``cac1-az3`、`ilc1-az2`。

**注意**  
私有连接是账户级别的资源。创建私有连接后，可以在需要访问同一主机的多个集成和代理空间中重复使用该连接。

**注意**  
当您为使用 OAuth 身份验证的提供商选择私有连接时，私有连接将同时应用于提供商端点和令牌交换端点。确保私有连接配置的主机地址可以将流量路由到两个端点。

## 创建私有连接
<a name="_create_a_private_connection"></a>

1. 在 AWS 安全代理管理控制台中，导航到 “**集成**”。

1. 选择 “**专用连接**” 选项卡。

1. 选择 “**创建私有连接**”。

1. 在 “**连接详细信息**” 下，输入**名称**。名称可以包含小写字母、数字和连字符，并且必须以字母或数字开头和结尾。

1. 在**连接详情**部分，选择 AWS 安全代理如何连接到您的目标服务：
   + 要让 AWS Security Agent 创建和管理连接，请清除 “**使用现有资源配置**”，然后填写 “**资源位置**”、“**访问控制**” 和 “**服务目标详情**” 部分。
   + 要通过您已经创建的 VPC Lattice 资源配置进行路由，请选择**使用现有资源配置**，然后完成**现有资源配置**部分。服务管理部分不适用。

1. (Service-managed) 在 “**资源位置**” 下：

   1. 选择**您的资源所在的 VPC**。

   1. 选择一个或多个**子网**。我们建议在至少两个可用区中选择子网。

   1. （可选）选择 **IP 地址类型**（IPv4、IPv6 或双堆栈）。

1. (Service-managed) 在 “**访问控制**” 下：

   1. 选择与**您连接的资源关联的安全组**。

   1. （可选）在 “**高级配置**” 下，输入**端口范围**，例如，最多 11 个以逗号分隔的 TCP 端口或范围。`443, 8080-8090`

1. (Service-managed) 在 “**服务目标详细信息”** 下：

   1. 在**主机地址**字段中，输入目标服务的 DNS 主机名或 IP 地址。

   1. **对于 **DNS 解析**，对于可公开解析的主机地址，选择**在 VPC 中（私有 DNS）**，选择只能在 VPC 内解析的地址。**

   1. （可选）如果您的目标使用自签名**证书**或私有证书颁发机构，请在 “证书 PEM-encoded 公钥” 字段中输入公钥。这允许 AWS 安全代理信任 TLS 连接。

1. (Self-managed) 在 “**现有资源配置**” 下，对于**资源配置**，从列表中选择 VPC Lattice 资源配置，或者输入资源配置 ID（以开头`rcfg-`）或其 ARN。该列表显示了当前区域的资源配置。

1. 选择**创建连接**。

   连接状态更改为 “**正在创建”**。这一过程耗时最多 10 分钟。完成后，状态将更改为 “可**用**”。

## 使用私有连接进行集成
<a name="_use_a_private_connection_with_an_integration"></a>

注册 GitLab Self-Managed 或 En GitHub terprise Server 集成时，选择 “**使用专用连接连接到端点**”，然后从 “**专用连接” 列表中选择您的连接**。AWS 安全代理通过该连接将流量路由到提供商。只有状态为 “可**用**” 的连接才会出现在列表中。

您也可以在注册期间选择 “**创建私有连接**”。AWS Security Agent 会在您创建连接时保留您的注册草稿，然后将您返回到注册流程。

## 安全性
<a name="_security"></a>
+  **没有公开的互联网接触**-所有流量都保留在 AWS 网络上。
+  **Customer-controlled 安全组**-您可以管理入站和出站流量规则。
+  **Service-linked 权限最低的角色**-AWS 安全代理使用服务相关角色，其范围仅限于标记为的资源。`AWSSecurityAgentManaged`

**注意**  
如果您的组织有限制VPC Lattice API操作的服务控制策略 (SCP)，则服务管理资源网关是通过服务相关角色创建的。确保您的 SCP 允许服务相关角色执行必要的操作。

## 验证私有连接
<a name="_verify_a_private_connection"></a>

私有连接达到 “**可用**” 状态后，请验证连接：
+ 确保您的目标服务正在运行并接受预期端口上的连接
+ 验证连接到 ENI 的安全组是否允许目标端口上的出站流量
+ 验证您的服务的安全组是否允许来自您的 VPC CIDR 范围内的 VPC Lattice 数据平面 IP 的入站流量
+ 确认子网路由表允许 ENI 子网和您的服务之间的流量

## 删除私有连接
<a name="_delete_a_private_connection"></a>

1. 在 AWS 安全代理控制台中，导航到 “**集成**”。

1. 选择 “**专用连接**” 选项卡。

1. 选择要删除的专用连接。

1. 选择**删除**。

**重要**  
您无法删除集成当前正在使用的私有连接。先移除集成，然后删除私有连接。

## 后续步骤
<a name="_next_steps"></a>
+  [将 AWS 安全代理连接到 GitLab Self-Managed](connect-gitlab-self-managed.md)-Connect 私有 GitLab 实例
+  [将 AWS 安全代理连接到 GitHub 企业服务器](connect-github-enterprise-server.md)-Connect 私有 GitHub 企业服务器