通过PrivateLink调用云控制API

通过私网连接(PrivateLink)调用云控制API可以实现私网访问服务,避免通过公网访问服务带来的潜在安全风险。

概述

什么是PrivateLink

私网连接(PrivateLink)是阿里云提供的一种私网访问服务,能够实现VPC与阿里云服务之间的私网连接,避免通过公网访问,从而提升安全性和稳定性。

使用场景

当您的应用程序运行在阿里云生产环境上,并需要调用云控制API服务时,推荐使用PrivateLink技术来实现内网调用,适用于以下场景:

  • 安全合规要求高:企业内部安全策略要求禁止或限制公网访问。

  • 成本优化:减少公网流量费用,降低总体拥有成本。

  • 跨地域部署:需要在多个地域部署应用,要求统一的网络架构。

技术优势

优势

说明

低时延

内网直连,相比公网访问可降低30%-50%的网络时延。

高稳定性

避免公网波动。

安全隔离

流量不经过公网。

前提条件

权限要求

配置PrivateLink终端节点需授予以下权限:

  • AliyunVPCFullAccess:VPC完整访问权限。

  • AliyunPrivateLinkFullAccess:PrivateLink完整访问权限。

资源要求

根据您调用的云控制API服务部署地域,需要满足以下条件:

云控制API服务地域

访问域名

需要的VPC地域

国内服务

cloudcontrol.aliyuncs.com

cn-zhangjiakou(华北3-张家口)

国际服务

cloudcontrol.ap-southeast-1.aliyuncs.com

ap-southeast-1(新加坡)

资源清单:

  • 目标地域的VPC实例。

  • VPC内至少一个可用的交换机(vSwitch)。

  • 确保交换机有足够的可用IP地址。

服务地域说明

云控制API服务目前支持部署在以下地域,请根据您的业务需求选择:

国内服务(cn-zhangjiakou)

  • 终端节点服务com.aliyuncs.privatelink.cn-zhangjiakou.cloudcontrol-api

  • 公网域名cloudcontrol.aliyuncs.com

  • 私网域名cloudcontrol.vpc-proxy.aliyuncs.com

国际服务(ap-southeast-1)

  • 终端节点服务com.aliyuncs.privatelink.ap-southeast-1.cloudcontrol

  • 公网域名cloudcontrol.ap-southeast-1.aliyuncs.com

  • 私网域名cloudcontrol-vpc.ap-southeast-1.aliyuncs.com

重要

配置PrivateLink后,应用代码需要将调用域名修改为对应的私网域名。

配置步骤

同地域配置

当您的应用部署在cn-zhangjiakouap-southeast-1时,可以直接在同地域创建终端节点。

步骤1:登录控制台

  1. 登录阿里云VPC控制台

  2. 在左侧导航栏中,单击进入终端节点页面。

  3. 在接口终端节点中,单击创建终端节点

image

步骤2:选择地域

在“所属地域”下拉框中选择:

  • 访问国内服务 → 选择华北3(张家口)

    image.png

  • 访问国际服务 → 选择新加坡

    image.png

步骤3:配置基本信息

配置项

说明

配置示例

终端节点名称

自定义名称,建议使用有意义的命名

ep-cloudcontrol-prod

终端节点类型

选择“接口终端节点”

接口终端节点

资源类型

选择“阿里云服务”

阿里云服务

步骤4:选择终端节点服务

  1. 搜索终端节点服务输入框中,根据目标服务输入:

    • 国内服务com.aliyuncs.privatelink.cn-zhangjiakou.cloudcontrol-api

    • 国际服务com.aliyuncs.privatelink.ap-southeast-1.cloudcontrol

  2. 搜索后会显示唯一的终端节点服务,选中即可。

步骤5:启用自定义域名

勾选开启自定义服务域名,系统会自动分配私网访问域名,无需手动填写。

  • 国内服务域名:cloudcontrol.vpc-proxy.aliyuncs.com

  • 国际服务域名:cloudcontrol-vpc.ap-southeast-1.aliyuncs.com

image

步骤6:网络配置

配置项

说明

建议

专有网络(VPC)

选择您的应用所在的VPC

确保选择正确的VPC

可用区与交换机

至少选择一个交换机,建议选择多个以实现高可用

生产环境建议选择2-3个不同可用区

安全组

选择安全组限制访问来源

建议配置仅允许应用安全组访问

多可用区配置示例

可用区A:vsw-xxxxx 
可用区B:vsw-yyyyy 


image.png

步骤7:配置访问策略

终端节点策略用于控制哪些主账号/RAM用户可以通过该终端节点访问服务。

说明

根据最小权限原则,建议限制仅允许必要的账号访问。

默认策略(允许所有):

{
  "Version":"1",
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":"*",
      "Action":"*",
      "Resource":"*"
    }
  ]
}

推荐策略(仅允许本账号):

{
  "Version":"1",
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{
        "Aliyun":[
          "acs:ram::YOUR_ACCOUNT_ID:root"
        ]
      },
      "Action":"*",
      "Resource":"*"
    }
  ]
}

步骤8:创建并验证

  1. 单击确定创建,创建终端节点。

  2. 等待2-5分钟,终端节点状态变为可用

  3. 连接状态显示为已连接

状态说明

  • 创建中:终端节点正在创建。

  • 可用:终端节点已就绪,可以使用。

  • 异常:创建失败或连接异常,需要检查配置。
    image.png

跨地域配置

当您的应用部署在cn-zhangjiakouap-southeast-1以外的地域,需要通过云企业网(CEN)打通跨地域网络。

步骤1:在目标地域创建终端节点

  • cn-zhangjiakouap-southeast-1创建终端节点。具体操作,请参见同地域配置

  • 记录终端节点所在的VPC ID。

步骤2:创建CEN实例打通region

CEN配置说明请参考跨地域VPC互通

验证与测试

连通性验证

登录到部署应用的ECS或容器实例,执行以下命令:

国内服务验证

curl -v cloudcontrol.vpc-proxy.aliyuncs.com

国际服务验证

curl -v cloudcontrol-vpc.ap-southeast-1.aliyuncs.com

成功标志

返回的HTTP响应头中包含 x-acs-request-id,示例输出:

< HTTP/1.1 401 Unauthorized
< date:Thu, 09 Oct 2025 10:30:00 GMT
< content-type:application/json
< x-acs-request-id:23C12345-1234-1234-1234-123456789ABC
< x-acs-trace-id:0b12345678901234567890123456789a
...
说明

由于请求未携带身份凭证信息,接口返回401状态码属于预期行为。

测试关注点:响应头中必须包含阿里云标识性字段(如 x-acs-request-id),以确认请求已被阿里云 API 网关或服务正确处理。

应用集成示例

Java示例

import com.aliyun.cloudcontrol20220830.Client;
import com.aliyun.teaopenapi.models.Config;

public class PrivateLinkExample {
    public static void main(String[] args) throws Exception {
        // 配置客户端
        Config config = new Config()
            .setAccessKeyId("<YOUR-ACCESS-KEY-ID>")
            .setAccessKeySecret("<YOUR-ACCESS-KEY-SECRET>")
            // 使用私网域名
            .setEndpoint("cloudcontrol.vpc-proxy.aliyuncs.com")  // 国内服务
            .setHost("cloudcontrol.aliyuncs.com")  // 国内服务
            // .setEndpoint("cloudcontrol-vpc.ap-southeast-1.aliyuncs.com")  // 国际服务
            .setProtocol("https");
        
        Client client = new Client(config);
        
        // 后续使用client进行API调用
        try {
            var response = client.listResources(...);
            System.out.println("Request successful: " + response.getBody().getRequestId());
        } catch (Exception e) {
            System.err.println("Request failed: " + e.getMessage());
        }
    }
}