通過會話管理連接實(shí)例
會話管理是阿里云為您提供的免費(fèi)的連接實(shí)例的工具,該工具基于云助手和WebSocket等技術(shù)實(shí)現(xiàn),支持一鍵免密碼、免跳板機(jī)連接到無公網(wǎng)實(shí)例。本文為您介紹會話管理的使用場景以及注意事項(xiàng)。
什么是會話管理?
會話管理本身不收費(fèi),但如果需要保存會話管理操作記錄,需開啟會話操作記錄投遞功能,這將產(chǎn)生數(shù)據(jù)存儲費(fèi)用,開啟該功能的具體操作,請參見會話操作記錄投遞。
會話管理是阿里云為您提供的免費(fèi)的連接實(shí)例的工具,該工具主要特點(diǎn)如下:
免密連接實(shí)例:在連接實(shí)例時(shí)無需輸入實(shí)例密碼。
支持連接無公網(wǎng)實(shí)例:使用該工具,無需您準(zhǔn)備跳板機(jī)即可連接到無公網(wǎng)的實(shí)例。
在使用會話管理連接實(shí)例時(shí),命令會經(jīng)由阿里云的會話管理服務(wù)端轉(zhuǎn)發(fā)到ECS實(shí)例。
多種客戶端形態(tài):
阿里云官網(wǎng)控制臺:直接在瀏覽器上使用會話管理客戶端連接實(shí)例(免安裝)
本機(jī)命令行(安裝ali-instance-cli):在您的個(gè)人計(jì)算機(jī)上通過會話管理客戶端連接實(shí)例(需安裝ali-instance-cli)
登錄用戶說明
通過會話管理連接實(shí)例時(shí),Linux實(shí)例默認(rèn)以ecs-assist-user
用戶登錄,Windows實(shí)例默認(rèn)以system
用戶登錄,具體說明如下。
ecs-assist-user
:Linux系統(tǒng)的一個(gè)普通用戶,沒有系統(tǒng)級的權(quán)限,只能執(zhí)行被授權(quán)的操作,但可以通過使用sudo
命令臨時(shí)獲得root權(quán)限執(zhí)行操作。system
:Windows系統(tǒng)的一個(gè)本地系統(tǒng)賬戶,擁有系統(tǒng)最高權(quán)限。
使用限制&前提條件
僅支持連接到運(yùn)行中狀態(tài)的實(shí)例。
實(shí)例需安裝云助手Agent:會話管理基于云助手的功能實(shí)現(xiàn),需要在實(shí)例中安裝云助手Agent。
2017年12月01日之后使用官方公共鏡像創(chuàng)建的ECS實(shí)例,默認(rèn)預(yù)裝了云助手Agent。如果您的實(shí)例是2017年12月01日之前購買的或使用自行上傳的自定義鏡像創(chuàng)建的實(shí)例,若需要使用云助手相關(guān)功能,需自行安裝云助手Agent,具體操作,請參見安裝云助手Agent。
使用前請確保網(wǎng)絡(luò)連通:由于云助手Agent會通過WebSocket協(xié)議與云助手服務(wù)端通訊,需要確保實(shí)例與云助手服務(wù)端的網(wǎng)絡(luò)連通性,具體說明,請參見相關(guān)安全組設(shè)置。
更多功能&適用場景
通過端口轉(zhuǎn)發(fā)訪問無公網(wǎng)服務(wù)
使用會話管理客戶端的端口轉(zhuǎn)發(fā)功能,將實(shí)例的某個(gè)服務(wù)端口映射到您的本機(jī),然后您可以直接通過訪問本機(jī)的對應(yīng)端口訪問在ECS上的服務(wù)。比如訪問內(nèi)網(wǎng)部署的Web后端服務(wù)、通過SSH連接內(nèi)網(wǎng)實(shí)例。具體操作,請參見通過會話管理CLI的端口轉(zhuǎn)發(fā)訪問無公網(wǎng)實(shí)例。
向?qū)嵗砑优R時(shí)SSH公鑰
在您使用SSH連接實(shí)例時(shí),您可以使用會話管理向?qū)嵗齼?nèi)添加有效時(shí)間60s的臨時(shí)公鑰,然后通過密鑰對的驗(yàn)證方式連接到實(shí)例。具體操作,請參見通過會話管理CLI注冊臨時(shí)公鑰免密登錄實(shí)例。
會話操作記錄投遞
如果您是多人使用場景,可以通過會話操作記錄投遞功能,查看某個(gè)人的操作記錄,便于您在后續(xù)進(jìn)行操作審計(jì)。開啟會話操作記錄投遞功能,請參見會話操作記錄投遞。
會話管理工作原理
如圖所示,在通過會話管理連接實(shí)例時(shí),會話管理客戶端和ECS實(shí)例將分別與云助手服務(wù)端建立WebSocket連接。一旦連接建立,您每次輸入的命令都會經(jīng)過云助手服務(wù)端轉(zhuǎn)發(fā)至實(shí)例,由實(shí)例中的云助手Agent代為執(zhí)行。
圖中涉及的模塊
細(xì)節(jié)說明
安全性
|
基本使用流程
在阿里云控制臺通過會話管理連接實(shí)例。(瀏覽器中使用)
您可以直接在瀏覽器登錄阿里云官網(wǎng)控制臺,通過會話管理連接實(shí)例。具體連接操作,請參見直接在瀏覽器上使用會話管理客戶端連接實(shí)例(免安裝)。操作流程如圖所示:
在您的個(gè)人計(jì)算機(jī)上通過會話管理客戶端連接實(shí)例。(本機(jī)命令行中使用)
您可以在個(gè)人計(jì)算機(jī)上安裝ali-instance-cli,直接使用本機(jī)命令行,通過會話管理連接實(shí)例。
具體操作,請參見在您的個(gè)人計(jì)算機(jī)上通過會話管理客戶端連接實(shí)例(需安裝ali-instance-cli)。操作流程如圖所示:
相關(guān)權(quán)限管理
如果RAM用戶需要通過會話管理連接實(shí)例,相關(guān)操作的權(quán)限及說明如下:
操作(Action)列對應(yīng)RAM權(quán)限策略中的操作(Action)。
操作(Action) | 說明 |
| 通過會話管理功能連接到ECS實(shí)例。(必須) |
| 查詢ECS實(shí)例是否安裝云助手Agent,該權(quán)限用于控制臺在連接前進(jìn)行校驗(yàn)。 |
| 查詢會話管理是否開啟,該權(quán)限用于控制臺在連接前進(jìn)行校驗(yàn)。 |
| 開啟或關(guān)閉會話管理,如果當(dāng)前阿里云賬號已經(jīng)開啟會話管理功能,無需分配該權(quán)限。 |
權(quán)限策略示例
示例一:在控制臺使用會話管理
如果RAM用戶需要在控制臺使用會話管理連接實(shí)例,根據(jù)最小授權(quán)原則,需要具有以下權(quán)限。
ecs:StartTerminalSession
:通過會話管理連接實(shí)例的權(quán)限,此外,可以通過Resource
字段,限制RAM用戶可連接(會話管理)的ECS實(shí)例。ecs:DescribeCloudAssistantStatus
:查詢ECS實(shí)例是否需要安裝云助手,該權(quán)限用于控制臺在連接前進(jìn)行校驗(yàn)。ecs:DescribeUserBusinessBehavior
:查詢會話管理功能是否已經(jīng)開啟,該權(quán)限用于控制臺在連接前進(jìn)行校驗(yàn)。ecs:ModifyCloudAssistantSettings
(可選):打開或關(guān)閉會話管理的權(quán)限,如果當(dāng)前阿里云賬號已經(jīng)開通會話管理,無需分配該權(quán)限。
自定義權(quán)限策略示例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:StartTerminalSession",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ecs:DescribeUserBusinessBehavior",
"ecs:DescribeCloudAssistantStatus",
"ecs:ModifyCloudAssistantSettings"
],
"Resource": "*"
}
]
}
為RAM用戶授權(quán),請參見為RAM用戶授權(quán)。
示例二:通過ali-instance-cli使用會話管理
在使用 ali-instance-cli
工具時(shí),配置階段要求設(shè)置RAM用戶的AccessKey、STS Token。當(dāng)通過會話管理操作連接實(shí)例時(shí),系統(tǒng)會驗(yàn)證此憑證對應(yīng)的RAM用戶是否擁有ecs:StartTerminalSession
權(quán)限,這是允許通過會話管理建立與ECS實(shí)例連接的必要權(quán)限。
此外,在自定義權(quán)限策略時(shí),可以通過指定Resource
字段來限定RAM用戶能夠通過會話管理連接的具體ECS實(shí)例。權(quán)限策略示例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:StartTerminalSession",
"Resource": "*"
}
]
}
關(guān)于CredentialsURI、STS Token的更多說明,請參見創(chuàng)建AccessKey、什么是STS。
為RAM用戶授權(quán),請參見為RAM用戶授權(quán)。
相關(guān)安全組設(shè)置
通過會話管理連接ECS實(shí)例時(shí),需要確保ECS中運(yùn)行的云助手Agent與云助手服務(wù)端的網(wǎng)絡(luò)連通性,即在安全組出方向設(shè)置以下規(guī)則:
與SSH、RDP等連接方式不同,由于會話管理是由云助手Agent主動與會話管理服務(wù)端建立WebSocket連接,因此僅需放行出方向的云助手服務(wù)端的WebSocket端口。關(guān)于會話管理的原理,請參見會話管理工作原理。
如果使用普通安全組(包括默認(rèn)安全組),默認(rèn)情況下會放行所有的出方向流量,無需配置。
如果使用企業(yè)安全組,默認(rèn)情況下會禁用所有出方向的流量,需要配置以下規(guī)則。更多企業(yè)安全組的說明,請參見普通安全組與企業(yè)級安全組。
添加安全組規(guī)則的具體操作,請參見添加安全組規(guī)則。
授權(quán)策略 | 優(yōu)先級 | 協(xié)議類型 | 端口范圍 | 授權(quán)對象 | 描述 |
允許 | 1 | 自定義TCP | 443 |
| 用于訪問云助手服務(wù)端。 |
允許 | 1 | 自定義TCP | 443 |
| 訪問云助手Agent安裝包所在服務(wù)器,用于安裝或更新您的云助手Agent。 |
允許 | 1 | 自定義UDP | 53 |
| 用于解析域名。 |
此外,如果您計(jì)劃僅通過會話管理連接實(shí)例,為了增加ECS實(shí)例的安全性,您可以取消放行安全組入方向上的SSH端口(默認(rèn)22)或者RDP端口(默認(rèn)3389)的規(guī)則。
在自己的應(yīng)用中集成會話管理遠(yuǎn)程登錄功能
通過會話管理遠(yuǎn)程連接到云服務(wù)器或托管實(shí)例的完整代碼,請參考開源項(xiàng)目cloud-assistant-starter。本項(xiàng)目中AxtSession.tsx文件包含了調(diào)用APIStartTerminalSession - 開始終端會話獲取WebSocketURL
并建立連接的示例代碼,將這段代碼移植到您自己的企業(yè)應(yīng)用中,即可使用會話管理連接實(shí)例。