添加跨帐户连接
您可以使用 UI,CLI,API 和 Terraform 请求与其他 IBM Cloud 帐户中的网络的连接。
规划注意事项
在添加跨帐户连接之前,请查看以下注意事项:
-
将中转网关连接到另一个账户的网络后,所有连接到该中转网关的资源都可以从另一个网络访问。 确保使用可信账户。 允许以下网络连接作为跨帐户连接:
- 经典基础结构
- Direct Link
- Power System 虚拟服务器
- 冗余 GRE
- 未绑定的 GRE 隧道
- VPC
-
每个网关只允许 10 个暂挂请求。 要创建更多请求,可以取消暂挂的连接请求,或者等待其核准。 如果在 72 小时内未核准连接请求,那么这些请求将到期。
-
强烈建议使用 安全性控制(例如 ACL,安全组或其他网络服务) 来控制流量。 IBM Cloud Transit Gateway不提供安全组或 ACL,但它们所连接的网络可能会影响转接网关的通信。 有关 ACL 和安全组的更多信息,请参阅以下主题:
在 UI 中添加跨帐户连接
要使用 UI 连接不同帐户拥有的网络,请执行以下步骤:
-
从浏览器打开 IBM Cloud 控制台并登录账户。
-
从左上角选择导航菜单图标 导航
,然后单击基础架构 > 网络 > Transit Gateway。
-
单击要在其中添加连接的 Transit Gateway 的名称。 然后点击添加连接。
-
选择网络连接类型。 然后,选择请求连接到另一个账户的网络。
-
输入跨账户网络的 CRN,如果是 Classic 基础设施或 Unbound 或 Redundant GRE,则输入要连接的 IBM Cloud 账户 ID。
- 要获取经典基础架构或未绑定或冗余 GRE 隧道连接的 IBM Cloud 账户 ID,请从 IBM Cloud 控制台选择“管理”>“账户”,然后选择“账户设置”。 您的帐户标识将显示在“帐户设置”页面的 帐户 部分中。
- 要获取 VPC,Direct Link或 Power Systems Virtual Server的 CRN,请从左上方选择“导航菜单”图标
,然后单击 资源列表。 展开 联网 (针对 VPC 和 Direct Link) 或 计算 (针对 Power Systems Virtual Server) 以列出联网资源,然后找到您要查找的服务。 接下来,单击服务的表行中的任何位置 ("名称" 链接除外)。 从显示的侧窗口中,复制 CRN 并将其粘贴到“添加连接”窗格中。
-
填写所有剩余字段,然后单击 添加。 现在,网络连接将在网关所有者的帐户中显示 暂挂 核准状态。
对于经典基础架构连接,标识号用于 IBM Cloud 帐户,而不是 SoftLayer 帐户。
然后,网络所有者的帐户将接收到请求的通知。 如果网络所有者拒绝跨帐户连接,那么不会建立任何连接,并且该连接将显示状态 已拒绝。 现在可以删除此连接。 如果未明确核准跨帐户连接,那么该连接将在 72 小时后到期。
如果连接请求到期或被拒绝,那么可以重新提交这些连接请求。
-
网络所有者帐户中具有 必需 IAM 许可权 的用户可以在 仅查看 方式下查看网关以及附加到该网关的所有其他连接的详细信息。 从网络所有者的帐户中,转至 " Transit Gateway " 页面,然后单击表中的网关名称。
-
在“连接”部分中,请参阅 所需操作 以查看入局网络连接请求。 然后,具有 必需的其他 IAM 许可权 的用户可以单击 核准 以核准请求。
在网络所有者的帐户确保连接请求来自合法源并核准后,系统将建立与连接到同一运输网关的所有其他网络之间的路由。 强烈建议在可跨帐户访问的网络中使用 网络 ACL 和/或安全组 来控制网络流量流。 您可以通过具有相应许可权的用户,通过任一帐户单方面拆离跨帐户连接。
单击“批准”确认。 网络连接的状态指示 正在连接。
-
当您更改回原始帐户时,连接状态将更改为 已连接,这指示网络请求已核准。
网关所有者的帐户 (或网络所有者的帐户) 可以删除连接。 如果网络所有者删除连接,那么网关所有者会将连接状态视为 已拆离。
从 CLI 添加跨帐户连接
创建跨帐户连接包括以下步骤:
- 请求连接以与其他帐户通信。
- 核准/拒绝其他帐户上的连接。
例如,要请求连接以与另一个帐户进行通信,请运行以下命令:
ibmcloud tg connection-create|cc GATEWAY_ID --name NAME --network-id NETWORK_ID --network-type NETWORK_TYPE --network-account-id ACCOUNT_ID [--default-prefix-filter DEFAULT_PREFIX_FILTER] [--output json]
其中:
GATEWAY_ID : 新连接所使用的网关的标识。
--name- 新连接的名称。
--network-id- 网络连接的 ID。
classic,不设置数值。 将 CRN 用于所有其他网络类型。 例如,查找 VPC 的 CRN:
ibmcloud is vpc VPC_ID --json
--network-type- 连接的网络类型。 值为
classic,directlink,power_virtual_server,和vpc。 --network-account-id- 用于创建经典连接的 IBM Cloud 账户的 ID。 仅用于
classic类型,当连接账户与网关账户不同时。 --default-prefix-filter- 可选:连接的默认前缀过滤器 (
permit|deny)。 --output json- 可选:指定是否要以 JSON 格式显示输出。
--help | -h- 可选:获取有关此命令的帮助。
示例
此示例说明如何创建使用 vpcCRN="crn:v1:bluemix:public:is:us-south:a/3aa0a9999a1a46258064d84f7f447920::vpc:r134-f87014d5-87d2-46d1-9999-24683082f6bc" 的名为 vpc-connection 的 VPC 连接:
ibmcloud tg cc $gateway --name vpc-connection --network-id $vpcCRN --network-type vpc
创建名为 classic-conn 的经典连接。
ibmcloud tg cc $gateway --name classic-conn --network-account-id 67123579566843320188712647902101 --network-type classic
要以网络所有者身份核准来自其他帐户的连接,请运行以下命令:
ibmcloud tg connection-approve|ca GATEWAY_ID CONNECTION_ID [-h, --help]
要以网络所有者身份拒绝来自其他帐户的连接,请运行以下命令:
ibmcloud tg connection-reject|cr GATEWAY_ID CONNECTION_ID [-h, --help]
有关可用命令和选项的更多信息,请参阅 Transit Gateway 命令参考中的 Connections。
使用 API 添加跨帐户连接
要添加跨账户连接,请按以下步骤操作:
- 请求连接以在其他帐户之间进行通信。
- 对请求的连接执行操作。 必须完成此操作。
对于经典跨帐户连接,请确保将 network-account-id 设置为您请求与之进行通信的帐户。 对于 VPC 跨帐户连接,请确保 network-id 设置为您请求与其进行通信的帐户。
有关更多信息,请参阅“Transit Gateway API 参考”中的 添加与 Transit Gateway 和 针对 Transit Gateway的连接执行操作。
请求跨帐户连接
原始帐户必须请求连接以与其他帐户进行通信。
请求示例
此示例说明请求跨帐户连接的原始帐户:
curl -X POST --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '{ "network_type": "vpc" }'
"
{base_url}/transit_gateways/{transit_gateway_id}/connections?version={version}"
"name": "Transit_Service_BWTN_SJ_DL",
"network_id": "crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b",
"network_type": "vpc",
"prefix_filters": [
{
"action": "permit",
"ge": 0,
"le": 32,
"prefix": "192.168.100.0/24"
}
],
"prefix_filters_default": "permit",
响应示例
此示例说明来自跨帐户连接请求的响应:
{
"created_at": "2020-03-31T12:08:05Z",
"id": "1a15dca5-7e33-45e1-b7c5-bc690e569531",
"name": "example-connection",
"network_id": "crn:[...]",
"network_type": "vpc",
"status": "pending",
"updated_at": "2020-03-31T12:08:05Z"
}
对请求的连接执行操作
在原始帐户请求跨帐户连接之后,另一个帐户必须对请求的连接执行操作。
请求示例
此示例说明如何核准跨帐户连接:
"
{base_url}/transit_gateways/{transit_gateway_id}/connections/{id}/actions?version={version}"
{
"action": "approve"
}
响应示例
此示例说明了“状态 403”响应,在该响应中,调用者无权执行所请求的操作:
{
"errors": [
{
"code": "missing_field",
"message": "The `location` field is required.",
"more_info": "https://transitservice.cloud.ibm.com/",
"target": {
"name": "location",
"type": "field"
}
}
],
"trace": "86780a34-e651-4b47-9fb0-184a169cc9af"
}
使用 Terraform 添加连接
查看在使用 Terraform 为 Transit Gateway 创建交叉连接时可以为资源指定的以下参数引用:
| 参数 | 详细信息 |
|---|---|
| base_connection_id 可选 强制使用新资源 字符串 |
配置隧道的 network_type "classic" 连接的标识。 此字段仅适用于网络类型 gre_tunnel 连接。 |
| base_network_type 可选 强制使用新资源 字符串 |
基本网络类型。 允许的值为 classic。此字段仅适用于 unbound_gre_tunnel 类型的连接。 |
| gateway 必需 强制使用新资源 字符串 |
输入 Transit Gateway 标识。 |
| local_gateway_ip 可选 强制使用新资源 字符串 |
本地网关 IP 地址。 此字段对于 gre_tunnel 和 unbound_gre_tunnel 类型的连接是必需的,并且仅适用于这些连接。 |
| local_tunnel_ip 可选 强制使用新资源 字符串 |
本地隧道 IP 地址。 此字段对于 gre_tunnel 和 unbound_gre_tunnel 类型的连接是必需的,并且仅适用于这些连接。 |
| name 可选 字符串 |
连接名称。 如果未提供名称,那么将根据网络类型提供缺省名称,例如 vpc 表示网络类型 VPC,classic 表示网络类型经典。 |
| network_account_id 可选 强制使用新资源 字符串 |
网络连接的帐户的标识。 如果网络与网关位于不同的帐户中,那么将使用此项。 |
| network_type 必需 强制使用新资源 字符串 |
网络类型。 允许的值为 classic,directlink,gre_tunnel,unbound_gre_tunnel 和 vpc。 |
| network_id 可选 强制使用新资源 字符串 |
要通过此连接连接到的网络的标识。 对于网络类型 vpc 和 directlink以及要连接的 VPC 或直接链路网关的 CRN ,此参数是必需的。对于网络类型 classic,必须未指定此字段。示例: crn:v1:bluemix:public:is:us-south:a/123456::vpc:4727d842-f94f-4a2d-824a-9bc9b02c523b |
| remote_bgp_asn 可选 强制新资源 整数 |
远程网络 BGP ASN (如果未指定,将为连接生成)。 此字段仅适用于 gre_tunnel 和 unbound_gre_tunnel 类型的连接。 |
| remote_gateway_ip 可选 强制使用新资源 字符串 |
远程网关 IP 地址。 此字段仅适用于 gre_tunnel 和 unbound_gre_tunnel 类型的连接。 |
| remote_tunnel_ip 可选 强制使用新资源 字符串 |
远程隧道 IP 地址。 此字段仅适用于 gre_tunnel 和 unbound_gre_tunnel 类型的连接。 |
| zone 可选 强制使用新资源 字符串 |
GRE 隧道的位置。 此字段仅适用于 gre_tunnel 和 unbound_gre_tunnel 类型的连接。 |
示例
此示例说明如何使用 Terraform 创建 Transit Gateway 交叉连接:
resource "ibm_tg_connection" "test_ibm_tg_connection" {
gateway = ibm_tg_gateway.test_tg_gateway.id
network_type = "vpc"
name = "myconnection"
network_id = ibm_is_vpc.test_tg_vpc.resource_crn
}