背景
最近在给项目配置 Gitee 流水线,需要将代码自动部署到阿里云的 ECS 服务器上。在 Gitee 中新建主机组时,卡在了“凭证管理”这一步。经过一番摸索,从阿里云控制台的 RAM 权限配置,到地域 ID 的查找,再到 Gitee 的最终填写,踩了不少坑。
本文将带你从零开始,完整走一遍 Gitee + 阿里云 ECS 安全部署的配置流程。为了安全,我们强烈不建议使用主账号,而是使用 RAM 子账号。整个过程分为四个阶段:创建 RAM 子账号 -> 授予最小权限 -> 获取并配置 Gitee 凭证 -> 新建主机组。
一、核心概念:什么是 RAM?
在开始之前,先弄清楚阿里云的 RAM(Resource Access Management,资源访问管理)。你可以把它理解为公司的门禁卡管理系统:
- 主账号:相当于公司大老板,拥有所有权限,风险极高,绝对不能日常使用。
- RAM 用户(子账号):相当于员工,每人有自己的门禁卡,权限由老板分配。
- 权限策略:相当于门禁规则,明确规定“谁”在“什么条件下”能访问“哪个房间”。
使用 RAM 子账号遵循最小权限原则,即使密钥不慎泄露,也能将损失降到最低。
二、实战:创建 RAM 子账号与获取 AccessKey
避坑提醒:手机 App 无法创建 AccessKey
很多同学喜欢用手机阿里云 App 操作,但手机 App 目前无法直接创建或查看 AccessKey。请务必使用电脑上的浏览器登录阿里云网页版控制台。
1. 创建 RAM 子账号
- 登录 阿里云 RAM 控制台。
- 在左侧导航栏选择 “身份管理” > “用户”,点击 “创建用户”。
- 填写登录名称(如
gitee-deploy)和显示名称(如Gitee部署账号)。 - 访问方式:勾选 “使用永久 AccessKey 访问”。因为 Gitee 流水线是程序调用,需要 AccessKey。
- 点击确定。验证成功后,系统会生成 AccessKey ID 和 AccessKey Secret。这是你唯一一次看到 AccessKey Secret 的机会!
2. 最关键的一步:立即保存 AccessKey
在“保存结果”页面,立刻点击 AccessKey ID 和 AccessKey Secret 旁边的 “复制” 按钮,将它们粘贴到你的密码管理器或安全的地方。一旦关闭页面,Secret 将永远无法再次查看。
三、配置 Gitee 流水线所需的最小权限
创建完 RAM 用户后,它默认没有任何权限。我们需要给它授权。
- 在 RAM 控制台的“用户”列表中,找到刚才创建的用户,点击其右侧的 “添加权限”。
- 在搜索框中输入并勾选以下系统策略(这是 Gitee 官方建议的最小权限集合):
AliyunECSReadOnlyAccess:只读权限,用于读取 ECS 实例信息。AliyunECSAssistantFullAccess:管理权限,用于安装云助手、执行命令等。AliyunECSFullAccess:管理权限。注意:此权限较大。如果你追求极致安全,可以创建自定义策略,只授予 Gitee 必需的 6 项操作权限(ecs:DescribeInstances、ecs:DescribeInvocationResults、ecs:DescribeCloudAssistantStatus、ecs:InstallCloudAssistant、ecs:RebootInstance、ecs:RunCommand)。
- 点击 “确定”,完成授权。
四、在 Gitee 中配置凭证与主机组
回到 Gitee 的“新建主机组”页面,此时你还需要在“凭证管理”里创建凭证。
1. 新建凭证(Gitee 凭证管理)
点击右侧蓝色的“凭证管理”链接,新建凭证,按照以下对应关系填写:
- 凭证类型:阿里云
- 凭证名称:自定义,如
my-aliyun-key - 凭证 ID:留空,系统会自动生成 UUID
- AccessKey ID:填入刚才保存的 AccessKey ID
- AccessKey Secret:填入刚才保存的 AccessKey Secret
- 地域 ID:填入
cn-hongkong(如果是香港服务器,详见下文) - 描述:选填
- 保存。
2. 填写主机组信息
回到“新建主机组”页面,填写以下三项:
- 主机组名称:自定义,仅用于展示,如
我的阿里云服务器。 - 主机组标识:系统内部唯一标识,建议使用英文、数字或中划线,不要用中文和空格,如
aliyun-prod。 - 凭证名称:在下拉菜单中选择刚刚创建的凭证(如
my-aliyun-key)。 - 凭证 UUID:选中凭证后会自动填充。
五、避坑指南:地域 ID 到底在哪里看?
很多同学在阿里云 ECS 控制台找不到“地域 ID”。以中国香港的服务器为例:
- 控制台不会直接显示
cn-hongkong,而是显示中文名称“中国香港”。 - 在控制台顶部导航栏的右上角,可以看到当前地域是“中国香港”。
- 在实例列表或基本信息中,可以看到“中国香港 C”。这里的“中国香港”是地域,“C”是可用区。
结论:
- 在 Gitee 凭证中填写的地域 ID,直接填写
cn-hongkong即可。 - 千万不要填
cn-hongkong-c(这是可用区 ID,填错会导致连接失败)。 - 如果你在服务器内,也可以通过元数据服务查询最准确的地域 ID:
curl -s http://100.100.100.200/latest/meta-data/region-id
六、常见报错与安全提醒
- AccessKey Secret 无法找回:如果创建时没有保存,后续将无法查看,只能重新创建新的 AccessKey。
- 密钥数量限制:每个 RAM 用户最多只能拥有 2 个 AccessKey,请妥善管理。
- MFA 安全加固:建议在手机上下载阿里云 App,激活 RAM 用户的 MFA(多因素认证),进一步提升账号安全性。
- 地域 ID 混淆:再次强调,Gitee 填的是地域(Region),不是可用区(Zone)。
总结
配置 Gitee 流水线部署阿里云,其实就是一个安全换取信任的过程。通过 RAM 子账号和最小权限原则,我们既赋予了 Gitee 管理服务器的能力,又保障了云账号的安全。希望这篇避坑指南能帮你顺利跑通流水线!
如果这篇文章对你有帮助,欢迎点赞收藏,评论区交流你在部署中遇到的坑!
