亚马逊AWS官方博客

一种基于Web访问的Kiro CLI 共享访问实现

摘要:KiroCLI凭借Agentic精确度,先进的模型能力和企业级应用案例等优势,成为了许多企业用户的首选AIOps工具。但企业员工在使用Kiro CLI的过程中,如何实现统一的管理,确保工具的使用安全与合规等,是摆在Ops团队面前的重要问题。同时,Kiro CLI本地运行还存在凭证管理复杂,权限控制复杂,企业网络出站访问配置等繁琐配置。Webaccess KiroCLI Platform提供了一种基于Web终端的TTY共享访问架构,基于Gotty+FastAPI+Vue的技术框架,实现TTY的浏览器转换,采用AWS IAM Identity Center实现SSO零凭证分发,并叠加合规日志,设备指纹,黑白名单等一系列的安全功能,让开发者和运维人员无需本地安装,即可通过浏览器使用完整的Kiro CLI能力。本文将详细介绍在北京/宁夏区部署Webaccess KiroCLI Platform的完整流程,包括环境准备、自动化部署、安全配置和生产优化。


一、软件概述

Kiro 是亚马逊云科技推出的 AI 驱动开发平台,核心理念是 Spec 驱动开发——将自然语言需求转化为结构化的规格说明(需求、设计、任务),再由 AI Agent 按规格逐步实现代码。强调”先规划、再实现”的工程化方法。Kiro CLI 是 Kiro 的命令行版本,将 AI 辅助开发能力带到终端,从而显著提升云基础资源的运维效率。帮助运维人员实现通过自然语言完成运维任务的构建、测试、部署等任务,并支持自定义 Agent 和 MCP 集成,实现企业内外部标准服务的扩展。

但对于开发/运维人员本地运行 Kiro CLI工具,企业AIOps团队往往对使用AIOps工具持保守态度,对权限管控,日志监控,行为追溯存在一定的担忧。例如为每个开发/运维人员下发AK/SK,本地化安装软件,自由配置MCP工具等,带来了管控的复杂度。同时,需要建立集中审计会话历史的分析模块,当团队规模达到 50 人以上时,以上这些不便都会带来新的运维负担。

基于以上场景,Webaccess KiroCLI Platform 设计了一个基于浏览器的 Web 终端管理平台,将 Kiro CLI 的访问集中到一台 EC2 实例上,通过 AWS IAM Identity Center 实现单点登录(SSO),用户无需接触任何 AWS 凭证,打开浏览器即可使用完整的 Kiro CLI 能力。整个项目从需求分析到代码实现,全程使用 Kiro IDE 的 Spec 驱动开发流程完成。Kiro IDE 帮助我们将模糊的想法逐步细化为结构化的需求文档、技术设计和实施任务,大幅提升了开发效率。本文将介绍 Webaccess KiroCLI Platform 的架构设计、核心安全特性,并提供完整的部署指南,帮助用户在 AWS 中国区快速搭建起来。

二、架构说明

Webaccess KiroCLI Platform 采用前后端分离架构,在Sample code的状态下,采用单节点部署,所有组件部署在同一台 EC2 实例上,通过 Nginx 统一对外提供服务。但实际向生产环境部署时,建议采用多节点高可用部署,在EC2 前端部署ALB,提供更好的安全防护和高可用能力。

1. 整体架构图

2. 核心组件说明

整个平台由以下几个核心组件协同工作,每个组件各司其职:

 a. WEB前端

采用 Vue 3 + TypeScript 构建,提供控制台、终端管理、监控看板、用户管理等。构建产物由 Nginx 直接提供静态文件服务,用户打开浏览器就能看到熟悉的管理界面。

b. 服务后端

基于 Python FastAPI 框架,是整个平台的”大脑”——执行SAML SSO 认证、终端会话管理、Gotty 进程的启停调度,以及审计日志、异常告警等安全功能。后端仅监听 `127.0.0.1:8000`,不直接对外暴露,所有请求都必须经过 Nginx 转发。

c. Gotty进程管理

是将命令行工具转换为 Web 应用的开源工具(Go 语言编写)。平台为每个用户会话启动一个独立的 Gotty 进程,绑定到 `127.0.0.1` 的随机端口(7861-7960),以随机 Token URL + TLS 的方式运行 Kiro CLI。这种进程级隔离确保了会话之间互不干扰,单个会话崩溃不会影响其他用户。

d. Nginx映射

作为访问的统一入口,监听 3000 端口,承担了三个角色:静态文件服务器、API 反向代理、以及终端流量的认证网关。终端访问通过 `auth_request` 指令实现 JWT 认证,确保只有合法用户才能访问自己的终端会话。

e. SQLite数据库

本地轻量级数据库,存储用户信息、会话记录、审计日志、告警规则等数据。对于单机部署场景来说完全够用,无需额外维护数据库服务。后续可以根据实际需求,分拆数据库,并采用RDS数据库替代,提供更高的性能和高可用性。

3. 安全增强与合规特性

安全是 Webaccess KiroCLI Platform 的核心设计目标之一。平台设计把团队的 AWS 操作入口集中到了一个平台上,并引入了多项企业级安全增强。在身份认证,会话管理和URL映射隔离等方面,应用了多项技术,包括:

a. 零凭证分发和密钥管理用户通过 AWS IAM Identity Center(SAML 2.0)进行单点登录,整个过程不涉及 AWS Access Key 的分发。所有操作通过 EC2 实例的 IAM Role 执行,凭证由 AWS 自动管理和轮换。应用集成AWS Secrets Manager,提供SSO 集成证书,敏感配置的集中管理,并提供轮换检测。

b. 多层认证机制终端访问需要经过三层验证,确保KiroCLI 进程不会被盗链,截流和越权使用:1. JWT Token 验证:每个 API 请求携带短期 JWT(默认8 小时有效期),后端验证签名和有效期。2. 会话 Token 绑定:每个终端会话分配 16 位随机 Token,URL 格式为 `/terminal/{token}/`,确保暴力猜测在计算上不可行。3. 用户所有权校验:后端会验证请求用户是否为该会话的创建者,防止跨用户访问。

c. Nginx 反向代理隔离安全加固的一种关键设计是将 Gotty 进程绑定到 `127.0.0.1`,彻底杜绝了从公网直接访问终端的可能。所有终端流量必须经过 Nginx 反向代理,通过 `auth_request` 指令进行 JWT 认证后才能转发到后端 Gotty 进程。EC2 安全组只需开放 22(SSH)和 3000(Web)两个端口,相比开放 KiroCLI的7860-7960 端口范围,安全攻击面大幅缩小。

d. 其他安全特性IP 白名单:管理员可配置 IP/CIDR 访问控制,动态生成 Nginx Geo配置。 Token更新:短期 Access Token默认8 小时更新,并支持自动轮换和即时吊销。设备指纹:追踪用户设备,新设备登录时触发通知。强制登出:管理员可远程终止用户的所有会话和 Token。e. 审计与告警平台记录所有安全相关事件,包括登录、登出、会话创建/关闭、管理员操作等,支持按用户、事件类型、时间范围筛选,并可导出 CSV 用于合规审计。告警通知通过 AWS SNS 发送,支持邮件订阅。告警系统默认内置以下异常检测规则:a. 会话突增(10 分钟内 5+ 个会话)。b. 登录失败监控(5 分钟内 10+ 次失败)。c. 多 IP 登录检测(60 分钟内 3+ 个不同 IP)。d. 非工作时间登录告警等。

除此之外,用户还可以自定义规则,添加Credits 消耗的告警指标等。

三、环境准备

在动手部署之前,我们需要先准备好 AWS 资源和相关配置。

1. AWS 资源清单

资源 说明 是否必需
EC2 实例 Ubuntu 22.04,推荐 t3.medium 或更高
Kiro enterprise订阅 提供企业级Kiro CLI 使用订阅
IAM Identity Center SAML SSO 认证 推荐
AWS Secrets Manager 存储 SECRET_KEY 和 SAML 证书
AWS SNS 告警通知, 邮件订阅 推荐
IAM EC2 IAM Role,提供平台运行权限 + Kiro CLI 操作权限

2 创建 EC2 实例

首先,我们需要一台 EC2 实例作为平台的运行环境。在 AWS 控制台进入 EC2 服务,点击”启动实例”,选择以下配置创建EC2实例:

项目 配置描述 备注
实例AMI Ubuntu Server 22.04 LTS
实例类型 t3.medium(2 vCPU, 4GB RAM)或更高
存储 20GB gp3 EBS(最低要求)
安全组   – 入站:22/TCP(你的 IP)、3000/TCP(0.0.0.0/0)  – 出站:全部允许

3 配置 EC2 IAM Role

EC2 实例需要一个 IAM Role 来支持平台功能和 Kiro CLI 操作。这里有个关键点需要理解:SAML 认证只控制谁能登录平台,而 Kiro CLI 执行的所有 AWS 操作都使用 EC2 IAM Role 的权限。进入 IAM 控制台,创建一个新角色(受信任实体选择”AWS 服务” → EC2),附加以下权限策略:

##平台基础权限(内联策略):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "IdentityStoreReadOnly",
      "Effect": "Allow",
      "Action": [
        "identitystore:ListUsers",
        "identitystore:ListGroups",
        "identitystore:ListGroupMembershipsForMember",
        "identitystore:DescribeGroup"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SecretsManagerRead",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": "arn:aws-cn:secretsmanager:*:*:secret:kirocli-platform-*"
    }
  ]
}

备注:

Kiro CLI 操作权限:根据团队需求选择 `AdministratorAccess`(全权限)或特定服务策略。将角色命名为 `KiroCLIPlatformRole`,创建完成后附加到 EC2 实例。

4 配置 IAM Identity Center SAML 应用

IAM Identity Center 是 AWS 提供的企业级身份管理服务,我们用它来实现 SAML 2.0 单点登录。在 AWS 控制台进入 IAM Identity Center 服务,选择”应用程序” → “添加应用程序” → “自定义 SAML 2.0 应用程序”。
配置应用程序基本信息:

显示名称:KiroCLI Platform
描述:Web 终端管理平台
记录IAM Identity Center Metadata的以下配置和下载证书。
– SAML IDP SSO URL
– SAML IDP X509 Certificate(PEM 格式)

配置 SAML 应用元数据:

```
Application ACS URL:http://<YOUR_EC2_IP>:3000/api/v1/auth/saml/callback
Application SAML audience: http://<YOUR_EC2_IP>:3000/api/v1/auth/saml/metadata
```

配置属性映射(Attribute mappings),备注:这一步很关键,映射错误会导致后续的登录失败。

应用程序中的属性 映射到此字符串值或用户属性 格式
Subject ${user:email} emailAddress
email ${user:email} unspecified
groups ${user:groups} unspecified

获取SAML IDP Entity ID, 这个值在Setting 的 Identify source 页面可以获取。

最后,别忘了将用户和用户组分配到该应用程序。详细配置步骤请参考:[IAM Identity Center 配置指南](https://github.com/William2005-git/vue-kirocli-platform/blob/main/docs/IAM_IDENTITY_CENTER_SETUP.md)

5. 安装 Kiro CLI

Webaccess KiroCLI Platform 依赖 Kiro CLI,这是需要手动完成的前置步骤——因为安装过程需要交互式配置,并完成订阅账号登录。

```
# SSH 连接到 EC2 实例
ssh -i /path/to/your-key.pem ubuntu@<YOUR_EC2_IP>
# 下载 Kiro CLI(Ubuntu/Debian)
wget https://desktop-release.q.us-east-1.amazonaws.com/latest/kiro-cli.deb
# 安装依赖
sudo apt update
sudo apt install -y libayatana-appindicator3-1 libwebkit2gtk-4.1-0 libgtk-3-0
# 安装 Kiro CLI
sudo dpkg -i kiro-cli.deb
sudo apt-get install -f -y
# 验证安装
kiro-cli —version
# 完成认证配置(交互式)
kiro-cli
# 按提示完成 AWS 账号登录和初始化配置
```
## 请确保在运行部署脚本前完成这一步,否则脚本会在第一步就报错退出。
## Kiro-cli提供多种配置的登录。可参考官方链接。

四、安装步骤

1 一键部署

环境准备就绪后,执行一键部署脚本,部署过程采用人机交互,自动化部署。整个安装过程大约需要 10-15 分钟,具体时间取决于网络速度和实例性能。

```
bash
# 1. 克隆项目代码
git clone https://github.com/aws-samples/sample-Webaccess-KiroCLI.git ~/kirocli-platform
cd ~/kirocli-platform
# 2. 运行自动化安装脚本
chmod +x scripts/install.sh
./scripts/install.sh
```
脚本会自动完成以下任务:
```
bash
[1/12] 检测 Kiro CLI 安装状态 ✓
[2/12] 安装系统依赖(Node.js 20, Python 3.10, Nginx, SQLite)✓
[3/12] 下载并安装 Gotty ✓
[4/12] 生成 TLS 证书(自签名,用于 Gotty HTTPS)✓
[5/12] 配置 FastAPI 后端环境(Python 虚拟环境 + pip 依赖)✓
[6/12] 初始化数据库(SQLite,14 张表)✓
[7/12] 配置 AWS Secrets Manager(交互式输入 SAML 证书)✓
[8/12] 构建 Vue 前端(npm install + npm run build)✓
[9/12] 配置 Nginx(反向代理 + JWT 认证 + 动态路由)✓
[10/12] 创建 systemd 服务(kirocli-backend.service)✓
[11/12] 启动服务 ✓
[12/12] 运行健康检查 ✓
```

备注:安装过程中的注意事项:- 脚本会在第 7 步提示输入 IAM Identity Center 相关配置(Entity ID、SSO URL、X509 证书等),请提前准备好这些信息。- 如果 npm build 过程因内存不足失败,脚本会自动添加 swap 空间并重试,或切换到更大的实例类型重试。- 如果 Kiro CLI 未安装或未认证,脚本会在第 1 步报错并退出。

2 配置 AWS Secrets Manager

为了避免将敏感信息(SAML 证书、SECRET_KEY)直接写入配置文件,平台使用 AWS Secrets Manager 来托管密钥。安装脚本通常会自动完成这一步,但如果需要手动创建:

```
bash
# 生成随机 SECRET_KEY
SECRET_KEY=$(openssl rand -hex 32)
# 创建 Secret
aws secretsmanager create-secret \
  --name kirocli-platform/production \
  --region cn-northwest-1 \
  --secret-string "{
    "SECRET_KEY": "$SECRET_KEY",
    "SAML_IDP_X509_CERT": "YOUR_CERTIFICATE_KEY"
  }"
# The key Without string of "BEGIN CERTIFICATE" and "END CERTIFICATE"

# 验证 Secret
--
```

后端服务启动时会自动从 Secrets Manager 读取配置。一个贴心的设计是:如果检测到 SECRET_KEY 发生变化,系统会自动撤销所有旧的 JWT Token,确保密钥轮换后的安全性。

3 验证部署

安装完成后,执行以下检查确认部署成功:

```
bash
# 1. 检查服务状态
sudo systemctl status kirocli-backend
sudo systemctl status nginx
# 2. 检查后端健康接口
curl http://127.0.0.1:8000/api/v1/health
# 应返回:{"success": true, "data": {"status": "healthy", "database": "connected"}}
# 3. 检查 Nginx 配置
sudo nginx -t
# 应返回:nginx: configuration file /etc/nginx/nginx.conf test is successful
# 4. 检查 Kiro CLI
which kiro-cli
kiro-cli --version
```

所有检查通过后,在浏览器访问 `http://<EC2_EIP>:3000`,应该能看到登录界面

五、配置与测试

部署完成后,让我们来配置用户访问并体验一下平台的核心功能。

1 . 配置用户访问

用户管理通过 IAM Identity Center 完成,用户创建用户和组,软件默认支持Admin和User两种角色。然后通过应用管理,将用户或组关联起来。平台会自动同步用户信息到本地数据库。

2. 首次登录访问

当 IAM Identity Center 中的用户首次通过 SSO 登录平台时,用户登录流程:

1. 访问 `http://<YOUR_EC2_IP>:3000`

2. 点击”SSO Login”按钮

3. 重定向到 IAM Identity Center 登录页面

4. 输入用户名和密码

5. SAML 断言验证成功后,跳转回平台主界面

3. 启动和管理会话

登录成功后,就可以体验 Webaccess KiroCLI Platform 的核心功能了——创建和管理 Kiro CLI 终端会话。

a. 在控制台页面点击”启动新终端”按钮

b. 系统会自动:

– 从端口池(7861-7960)中分配一个空闲端口
– 启动独立的 Gotty 进程
– 生成 16 位随机 Token(如:a3f9k2m7n8p1q4r5
– 更新 Nginx 动态路由配置
– 返回终端访问 URL

c. 浏览器自动打开新窗口,显示 Web 终端界面

d. 在终端中直接使用 Kiro CLI

**会话管理功能**:

– 查看所有会话(状态:运行中/启动中/已关闭)
– 实时显示会话时长
– 手动关闭会话
– 会话空闲 30 分钟自动关闭(可在配置文件中调整)

4. 监控与告警

平台提供了 Web 监控面板,管理员可以实时查看系统状态和业务指标。

**系统指标**(通过 psutil 采集):

– CPU 使用率
– 内存使用率
– 磁盘使用率
– 网络 I/O(进站/出站流量)

**业务指标**:
– 用户总数 / 24 小时活跃用户
– 会话总数 / 运行中会话 / 成功率
– 平均会话时长等指标

5. 审计日志

平台记录了 14 类审计事件,包括用户登录、会话创建、管理员操作等,所有操作都可以追溯。审计日志包含以下信息:

– 事件类型(登录、登出、会话创建、会话关闭等)
– 用户信息(用户名、邮箱)
– 时间戳- IP 地址
– 设备信息
– 操作结果

这些日志对于安全审计和合规性检查非常重要。

六、成本分析

成本是大家都关心的话题。 Webaccess KiroCLI Platform 的运行成本相当低——一台 EC2 实例就能服务整个团队。下面是不同规模团队的成本估算(基于宁夏区按需价格)。10人团队成本(小型团队)

资源 规格 月成本 部署区域
EC2 t3.medium (2C/4G) ¥306.60 宁夏区
EBS gp3 20GB ¥16
流量 10GB/月 ¥6
Secrets Manager 2个密钥 ¥0.80
SNS 500 条通知/月 免费
总计 ¥329/月
人均成本 ¥32.9/月

20人团队成本(中型团队)

资源 规格 月成本 部署区域
EC2 t3.large (4C/8G) ¥613 宁夏区
EBS gp3 50GB ¥40
流量 30GB/月 ¥18
Secrets Manager 2个密钥 ¥0.80
SNS 1000 条通知/月 免费
总计 ¥672/月
人均成本 ¥33.6/月

可以看到,10-20 人规模的运维团队的人均成本不到 ¥35/月,使用成本并不高。

七、总结

Webaccess KiroCLI Platform 提供了一种更便捷的 Kiro CLI 使用方式。通过 Web 终端 + SSO 的组合,团队成员无需安装任何软件、无需管理用户凭证,打开浏览器就能使用 Kiro CLI 的全部能力。从安全角度看,Webaccess KiroCLI Platform实现了集中管控,零凭证分发、多层安全认证、审计告警等特性,均可以满足企业级的合规要求和使用要求。从成本角度看,单台 EC2 实例即可支撑 20+人的运维团队,人均月成本不到 ¥35,投入并不大。综合以上优势,可以有效支持企业Ops团队快速建立AIOps的能力。

➡️ 下一步行动:

项目资源:

相关技术:

相关文章:

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

William Yee

亚马逊云科技资深解决方案架构师。主要技术方向为云基础设施、容器和安全。具备全面的云计算技术知识和丰富的企业上云实践经验。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用