背景
在很多企業(yè)的實際應(yīng)用場景中,特別是金融類的客戶,大部分的應(yīng)用都是部署在私有子網(wǎng)中,如何能夠讓客戶的開發(fā)人員和運維人員從本地的數(shù)據(jù)中心中安全的訪問云上資源,堡壘機(jī)是一個很好的選擇。傳統(tǒng)堡壘機(jī)的核心實現(xiàn)原理是基于SSH協(xié)議的安全連接,通常運用SSH(Secure Shell)協(xié)議實現(xiàn)數(shù)據(jù)的加密通信。SSH為安全身份驗證和數(shù)據(jù)加密提供了可靠保障,從而確保了連接的安全性。然而,傳統(tǒng)的自建堡壘機(jī)在其管理和運維方面面臨著多種挑戰(zhàn):
部署與維護(hù)復(fù)雜性:自建堡壘機(jī)的部署和配置往往涉及多個復(fù)雜步驟和組件,導(dǎo)致管理和維護(hù)的工作量顯著增加。
安全性風(fēng)險:自行管理多個密鑰和憑證可能會增加安全漏洞的風(fēng)險。若密鑰管理不當(dāng),可能導(dǎo)致未經(jīng)授權(quán)的訪問。
可用性問題:自建堡壘機(jī)常常無法實現(xiàn)高可用性和彈性,多用戶同時訪問時可能出現(xiàn)性能問題,影響用戶體驗。
擴(kuò)展困難:隨著用戶數(shù)量和需求的增加,自建堡壘機(jī)可能難以靈活擴(kuò)展,導(dǎo)致資源分配不均。
更新和升級:自建堡壘機(jī)需要定期進(jìn)行更新和升級,以保持安全性和性能,然而這可能會導(dǎo)致業(yè)務(wù)中斷或不穩(wěn)定情況。
外網(wǎng)暴露:傳統(tǒng)堡壘機(jī)需要在云上環(huán)境中部署一個有外網(wǎng)訪問的權(quán)限的機(jī)器,增加了被攻擊的風(fēng)險。
與傳統(tǒng)方式不同,基于Amazon Systems Manager Session Manager的堡壘機(jī)通過建立雙向加密通道,連接客戶端和遠(yuǎn)程節(jié)點,并采用TLS 1.2進(jìn)行流量加密和Sigv4簽名請求。這一方式具備顯著優(yōu)勢:
一鍵式部署:該方案極大簡化了堡壘機(jī)部署流程,從而減少了部署難度和運維成本。
卓越安全性:Session Manager提供了加密和身份驗證功能,保障連接的安全性。
a. 基于AWS Identity and Access Management(IAM)角色的最小權(quán)限原則,管理員能夠通過集中的IAM策略管理堡壘機(jī)的訪問授權(quán)。
b. 無需管理堡壘機(jī)密鑰。
c. 支持云上私有子網(wǎng)部署,無需部署在公有子網(wǎng)中,且無需打開入站端口。
高可用性:通過彈性伸縮功能實現(xiàn)了堡壘機(jī)的跨可用區(qū)高可用性。
可擴(kuò)展性:基于CPU利用率的彈性伸縮策略能夠自動調(diào)整容量,以適應(yīng)不同流量訪問的需求。
簡化管理:Systems Manager Session Manager是一項無需用戶自行管理實例的托管服務(wù)。無需預(yù)先啟動實例,也無需將實例直接暴露在公網(wǎng)上,從而降低了管理復(fù)雜性。
端口轉(zhuǎn)發(fā)與跨平臺支持:通過Session Manager,可在本地客戶端進(jìn)行遠(yuǎn)程節(jié)點端口轉(zhuǎn)發(fā),并實現(xiàn)連接。同時,它對Linux、Windows、Mac等多種操作系統(tǒng)平臺提供了跨平臺訪問支持。
全面的日志記錄與審計:Session Manager支持多種方式進(jìn)行日志記錄,涵蓋登錄時間、命令執(zhí)行等內(nèi)容,以確保會話連接活動得到完整記錄。這些記錄可用于審計和故障排除。
提供監(jiān)控告警功能:針對堡壘機(jī)的性能指標(biāo)進(jìn)行監(jiān)控告警,以便在性能異常時及時收到通知。
基于Session Manager的堡壘機(jī)為訪問管理提供了高效、安全、高可用的解決方案,成為提升操作效率和保障安全性的理想選擇。堡壘機(jī)作為一種安全措施,允許用戶通過中間主機(jī)來訪問位于私有子網(wǎng)中的實例或資源。它作為一座橋梁,幫助用戶在安全的環(huán)境下連接到內(nèi)部資源,同時減少對直接連接的需求,從而降低被攻擊的風(fēng)險。對于企業(yè)的安全管理員來說,堡壘機(jī)可以增強(qiáng)安全性、簡化網(wǎng)絡(luò)配置、降低網(wǎng)絡(luò)資源暴露風(fēng)險、提供審計跟蹤,對于開發(fā)運維人員來說,他們可以在本地環(huán)境中使用熟悉的開發(fā)、運維工具,如數(shù)據(jù)庫客戶端、瀏覽器、RDP等去訪問云上私有資源,大大提高生產(chǎn)效率。
本文主要闡述的是基于Amazon Systems Manager的Session Manager特性和Amazon EC2堡壘機(jī)的設(shè)計和實現(xiàn)。主要內(nèi)容包括堡壘機(jī)的架構(gòu)設(shè)計、安全設(shè)計、日志監(jiān)控設(shè)計、高可用彈性設(shè)計以及自動化部署設(shè)計等,同時針對堡壘機(jī)在不同場景中的使用方式和腳本進(jìn)行舉例說明。
云上堡壘機(jī)設(shè)計
安全設(shè)計
在進(jìn)行云上堡壘機(jī)設(shè)計時,安全是第一個需要考慮的要求。Session Manager是一種無需通過公網(wǎng)IP或SSH密鑰來連接到EC2實例的服務(wù),它通過Systems Manager的控制臺或CLI來創(chuàng)建和管理安全的交互式會話。其安全設(shè)計主要考慮以下四點:
IAM權(quán)限和訪問控制:
Session Manager權(quán)限:確保只有授權(quán)的用戶或角色擁有使用Session Manager的權(quán)限。為用戶或角色分配適當(dāng)?shù)腎AM策略,限制其對Session Manager的訪問,一般情況下,通過與客戶已有的AD進(jìn)行集成,通過分組來控制啟動Session Manager的權(quán)限。
多因素認(rèn)證(MFA):強(qiáng)制啟用多因素認(rèn)證,增加用戶身份驗證的安全性。
VPC和子網(wǎng)安全性:
控制對Session Manager的網(wǎng)絡(luò)訪問:設(shè)置VPC Endpoints的安全組僅允許來自堡壘機(jī)及私有子網(wǎng)中主機(jī)的訪問,并且設(shè)置VPC Endpoints的策略,以限制特定受信任實體才能訪問。
日志和審計:
監(jiān)控Session Manager會話:啟用CloudTrail以記錄Session Manager的API調(diào)用活動,以便審計和監(jiān)控用戶對會話的操作;配置Session Manager參數(shù),發(fā)送會話日志到Amazon CloudWatch日志組和S3存儲桶,確保用戶在會話中的所有操作均被記錄,CloudWatch日志組中的數(shù)據(jù)將保存3個月,S3桶中的會話日志將持久存儲以滿足安全監(jiān)管和審計需求。同時,通過腳本來實現(xiàn)對本地Session Manager插件SSH登錄上的操作進(jìn)行詳細(xì)記錄,并存儲在指定的存儲桶中。
安全加密:
加密各類堡壘機(jī)相關(guān)資源:使用Amazon Key Management Service(KMS)對Session Manager的會話進(jìn)行加密,加密Amazon CloudWatch日志組及S3存儲桶,以確保會話和日志的安全性。
高可用和彈性設(shè)計
堡壘機(jī)的高可用設(shè)計可以確保在發(fā)生故障或負(fù)載增加時,堡壘機(jī)仍然能夠保持可用,并繼續(xù)提供安全的訪問控制。
堡壘機(jī)的高可用性
使用Auto Scaling Group(ASG):配置堡壘機(jī)所在的EC2實例為一個Auto Scaling Group。當(dāng)堡壘機(jī)實例的負(fù)載增加時,ASG會根據(jù)設(shè)置的擴(kuò)展規(guī)則自動增加實例數(shù)量,保持高可用性。
設(shè)置負(fù)載均衡:當(dāng)多個堡壘機(jī)實例同時運行時,可以使用負(fù)載均衡器來分發(fā)流量,確保各個實例的負(fù)載均衡。負(fù)載均衡器還可以在某些實例出現(xiàn)故障時自動將流量路由到其他健康的實例,提高了整體的可用性。
定時擴(kuò)展和縮減
通過Auto Scaling Group的定時規(guī)則,控制堡壘機(jī)的啟動和關(guān)機(jī)時間,從而來節(jié)約堡壘機(jī)的費用。
監(jiān)控告警設(shè)計
Amazon CloudWatch指標(biāo)監(jiān)控:CloudWatch可以監(jiān)控EC2實例和其他亞馬遜云資源的性能指標(biāo)??杀O(jiān)控實例的CPU使用率、內(nèi)存利用率、磁盤等關(guān)鍵指標(biāo)。并通過Amazon SNS服務(wù)設(shè)置報警,以便在性能異常時及時收到通知。
自動化部署設(shè)計
堡壘機(jī)代碼設(shè)計
考慮到堡壘機(jī)的高可用設(shè)計,在其中一臺機(jī)器宕機(jī)的情況下,可以自動、快速的拉起一臺新的堡壘機(jī)以供使用,我們采取EC2 launch template的方式進(jìn)行堡壘機(jī)的構(gòu)建,以下是IaC樣例代碼:
通過彈性伸縮啟動模版創(chuàng)建堡壘機(jī)的IaC代碼樣例,包含啟動模版、彈性伸縮組、彈性規(guī)則等。
2.定義堡壘機(jī)的EC2用戶數(shù)據(jù)代碼樣例
在創(chuàng)建堡壘機(jī)時,不僅僅是單獨的創(chuàng)建一臺EC2的實例,還需要針對用于該EC2的實例進(jìn)行安全加固、安裝相應(yīng)的工具、設(shè)置對于堡壘機(jī)的監(jiān)控等功能,以下是IaC代碼中,用于EC2實例初始化的用戶數(shù)據(jù)(User Data)樣例。
3.設(shè)計和創(chuàng)建堡壘機(jī)安全組
根據(jù)Session Manager安全組的最佳實踐,本方案中堡壘機(jī)的安全組設(shè)計如下:
IaC代碼設(shè)計樣例如下:
Session Manager配置設(shè)計
在啟用Session Manager時,需要對Session Manager進(jìn)行相關(guān)的配置,如是否開啟Session加密,是否將日志存儲到CloudWatch Logs或者S3上,是否對日志進(jìn)行加密,最大的Session時長等。我們通過創(chuàng)建SSM Documents的方式來進(jìn)行配置,如以下IaC樣例代碼所示:
堡壘機(jī)IAM角色設(shè)計
在本設(shè)計中,堡壘機(jī)的IAM角色主要包含以下權(quán)限:
AmazonSSMManagedInstanceCore
CloudWatchAgentServerPolicy
Logs部分權(quán)限
SSM Messages部分權(quán)限
S3部分權(quán)限
KMS部分權(quán)限
如需自定義更多Session Manager IAM角色的詳細(xì)可訪問:自定義Session Manager IAM角色
以下是IaC代碼樣例:
部署堡壘機(jī)
本章將介紹如何通過基礎(chǔ)設(shè)施即代碼(Infrastructure as code)的方式一鍵式構(gòu)建云上堡壘機(jī),通過Terraform進(jìn)行相應(yīng)的IaC代碼開發(fā)。
堡壘機(jī)部署架構(gòu)圖
根據(jù)云上堡壘機(jī)的設(shè)計,我們在堡壘機(jī)的部署中,將使用到亞馬遜云上的多種服務(wù):如Amazon CloudWatch、Key Management Service(KMS)、Identity and Access Management(IAM)、Systems Manager、Amazon Simply Notification Service(SNS)、Amazon Simple Storage Service(S3)、Amazon PrivateLink、Amazon EC2以及Amazon EC2 Auto Scaling等,以下為部署架構(gòu)圖:
以下對部署中所使用到的主要亞馬遜云相關(guān)服務(wù)的用途進(jìn)行簡單介紹:
Amazon EC2/Amazon EC2 Auto Scaling:在EC2上進(jìn)行堡壘機(jī)的部署,并通過AutoScaling確保堡壘機(jī)的高可用;
Amazon Simple Storage Service(S3):用于存放通過Session Manager和SSH登錄到堡壘機(jī)上所產(chǎn)生的操作日志信息;
Amazon VPC endpoints:用于堡壘機(jī)在沒有外網(wǎng)訪問的條件下,進(jìn)行安全的訪問如Amazon CloudWatch(Logs/Monitoring)、Amazon S3、Systems Manager、Amazon KMS等服務(wù);
Amazon CloudWatch:用于存放通過控制臺的Session Manager功能訪問堡壘機(jī)的操作日志存儲;
Amazon KMS:用于加密堡壘機(jī)部署過程中的相關(guān)服務(wù),如Session加密、CloudWatch logs加密、S3桶加密等;
Amazon Simply Notification Service:用于接受Bastion Host在CPU/Memory/磁盤超過閾值的時候的告警信息。
需要創(chuàng)建的Endpoints列表:
堡壘機(jī)自動化部署
當(dāng)IaC代碼開發(fā)完成后,可以將該代碼集成在其他資源的CICD pipeline中,也可以通過Terraform命令,直接進(jìn)行部署。
等到命令執(zhí)行完成后,登錄到亞馬遜云科技管理控制臺檢查相應(yīng)資源是否按照預(yù)期部署完成。
堡壘機(jī)使用場景
堡壘機(jī)使用前置條件
如果要在本地機(jī)器上使用堡壘機(jī),需要滿足以下條件:
確保亞馬遜云上堡壘機(jī)已經(jīng)部署完成,并且處于running狀態(tài);
確保網(wǎng)絡(luò)聯(lián)通性,確認(rèn)堡壘機(jī)能訪問私網(wǎng)環(huán)境中的RDS數(shù)據(jù)庫、WebServer EC2等;
確保你本地使用的IAM角色至少具有以下權(quán)限:
ec2:DescribeInstances
ssm:StartSession
ec2-instance-connect:SendSSHPublicKey
確保本地環(huán)境中正確安裝了亞馬遜云命令行工具(CLI V2)和Session Manager插件
堡壘機(jī)使用場景實操
假設(shè)客戶在亞馬遜云上的私有子網(wǎng)中,部署了一個Web應(yīng)用,包含Web前端和服務(wù)后端以及RDS數(shù)據(jù)庫(以SQL Server為例)。該客戶對于安全性的要求非常高,云上VPC環(huán)境中沒有Internet訪問,也沒有在本地網(wǎng)絡(luò)與云上環(huán)境之間搭建專線直連(Direct Connect)和VPN。但客戶的開發(fā)人員和運維人員,要求提供一個安全、高效、可靠的方式從本地的客戶端、應(yīng)用程序、瀏覽器去訪問云上資源,以提高開發(fā)、運維效率。下圖為堡壘機(jī)實操環(huán)境的部署示意圖:
場景一:通過亞馬遜云科技管理控制臺/命令行登錄堡壘機(jī)
在這個場景中,開發(fā)人員或者運維人員通過公司AD集成的賬號拿到了相應(yīng)的角色權(quán)限,直接登錄到亞馬遜云的管理控制臺,然后通過Session Manager直接連接到堡壘機(jī)上進(jìn)行操作。操作步驟如下:
方式一:直接進(jìn)入到EC2控制臺,選擇堡壘機(jī),然后點擊“Connect”進(jìn)行連接
方式二:進(jìn)入到Systems Manager→Session Manager→Start Session,然后選擇堡壘機(jī)進(jìn)行連接
兩種方式登錄后,進(jìn)入的界面如下圖所示:
或者在本地啟動SSM Session Manager的插件,從本地電腦中,直接訪問堡壘機(jī):
通過控制臺或者本地CLI進(jìn)入到堡壘機(jī)后,所有的操作都會被記錄到Amazon CloudWatch Log Group“/aws/sessionmanager”,日志保留時間為3個月,并且還會上傳到S3桶(S3桶名:bastion-audit-log-bucket-,路徑為:ssm/)中做持久化存儲。
場景二:通過堡壘機(jī)實現(xiàn)遠(yuǎn)程主機(jī)端口轉(zhuǎn)發(fā)
在該場景中,開發(fā)人員或者運維人員通過公司AD集成的賬號拿到了相應(yīng)的角色權(quán)限,然后在本地啟動Session Manager插件來進(jìn)行遠(yuǎn)程主機(jī)的端口轉(zhuǎn)發(fā),通過這種方式,開發(fā)人員或運維人員可以方便的使用本地客戶端進(jìn)行操作云上資源,如訪問云上數(shù)據(jù)庫和訪問WebServer等。以下命令是啟動如何在本地機(jī)器上實現(xiàn)遠(yuǎn)程主機(jī)端口轉(zhuǎn)發(fā):
(1)遠(yuǎn)端數(shù)據(jù)庫端口轉(zhuǎn)發(fā)
以在本地訪問云上SQLServer數(shù)據(jù)庫為例子,端口號為1433,本地端口號為12345,遠(yuǎn)程主機(jī)DNS為:“bastion-test-db.xxxxx..rds.amazonaws.com”,啟動后,如下圖所示:
打開本地SQLServer客戶端,輸入RDS Server端地址和端口:“127.0.0.1,12345”,并輸入登錄數(shù)據(jù)庫的賬號和密碼,如下圖所示:
點擊“Connect”,即可訪問云上RDS數(shù)據(jù)庫并進(jìn)行操作:
(2)遠(yuǎn)端服務(wù)器端口轉(zhuǎn)發(fā)
以本地通過瀏覽器訪問Web Server為例,端口號為80,本地端口號為8080,遠(yuǎn)程主機(jī)IP為:“10.99.3.132”,啟動后,如下圖所示:
通過本地瀏覽器訪問127.0.0.1:8080,可看到能夠成功訪問到位于私有網(wǎng)絡(luò)中的WebServer:
場景三:通過本地SSH連接到堡壘機(jī)
在開發(fā)人員或者運維人員在實際工作中,偶爾會需要通過SSH連接到堡壘機(jī)或者遠(yuǎn)端的主機(jī)上進(jìn)行調(diào)試或者運維,并上傳相應(yīng)的文件到堡壘機(jī)上。一般情況下,運維人員需要拿到EC2的密鑰并確保安全組中包含有22端口及客戶端的IP地址的入站規(guī)則,然后才能連接到云上服務(wù)器上,這種情況不僅增加了密鑰管理的難度,同時對于只存在私有網(wǎng)絡(luò)中的服務(wù)器且本地數(shù)據(jù)中心和云上環(huán)境沒有互聯(lián)的場景是一個很大的挑戰(zhàn)。通過ec2-instance-connect服務(wù)特性并結(jié)合Session Manager可以方便的滿足客戶通過SSH訪問云上EC2的情景。
將以上代碼中的Step1到Step3編寫成一個腳本,在每次執(zhí)行ssh之前,先運行該腳本,確保新生成的SSH Key有效(通過send-ssh-public-key上傳到EC2上的Key有效期只有60s)。
注意:如果使用動態(tài)生成SSH Key的方式,需要先創(chuàng)建“EC2 Instance Connect Endpoint”,同時確保本地電腦上使用的IAM角色包含有“ec2-instance-connect:SendSSHPublicKey”的權(quán)限。另外,亞馬遜云科技中國區(qū)暫時不支持該Endpoint類型的創(chuàng)建。
通過本地Session Manager插件SSH進(jìn)入到堡壘機(jī)后,所有的操作都會上傳到S3桶(S3桶名:bastion-audit-log-bucket-,路徑為:logs/)中做持久化存儲。
除通過SSH登錄到堡壘機(jī)外,SSM還可以支持SSH Socks Proxy,如下圖在瀏覽器中設(shè)置Proxy(以Firefox為例):
使用以下代碼啟動 SSH Socks Proxy:
啟動后,就可以通過Socks Proxy訪問內(nèi)網(wǎng)的WebServer。
未來架構(gòu)演進(jìn)
本方案中堡壘機(jī)是根據(jù)最常用的功能,如端口轉(zhuǎn)發(fā)、SSH訪問來設(shè)計的,但在一些特定的場景中,還需要設(shè)計更多復(fù)雜的堡壘機(jī)方案,如:Windows類型的堡壘機(jī)支持、如何使用IAM角色對堡壘機(jī)權(quán)限進(jìn)行更精細(xì)化的管理等,這些都是未來本方案演進(jìn)和增強(qiáng)的一個方向。目前我們方案中,創(chuàng)建的堡壘機(jī)類型只有一種,任何擁有啟動Session Manager的IAM用戶/角色都可以去訪問它并進(jìn)行操作,但在一些場景下,客戶需要對于不同的角色使用不同的堡壘機(jī):如角色A僅可以訪問堡壘機(jī)A,并通過該堡壘機(jī)上賦予的IAM權(quán)限進(jìn)行相應(yīng)的操作;角色B僅可以訪問堡壘機(jī)B,通過該堡壘機(jī)上賦予的IAM權(quán)限進(jìn)行相應(yīng)的操作。不同的用戶角色和客戶自有的AD域控進(jìn)行集成,可以靈活的進(jìn)行更精細(xì)化的權(quán)限控制。
總結(jié)
本文主要介紹了基于Amazon Systems Manager Session Manager的堡壘機(jī)的設(shè)計和實現(xiàn),并通過IaC自動化方式構(gòu)建和部署云上堡壘機(jī),同時基于堡壘機(jī)的使用場景進(jìn)行了舉例,介紹了不同場景下堡壘機(jī)的使用方法和步驟。該堡壘機(jī)方案已經(jīng)集成到Cloud Foundations快速啟動包服務(wù)中,為企業(yè)用戶提供更便捷的部署方式。
在安全方面做的同樣出色的亞馬遜云科技Amazon Lightsail和亞馬遜云科技Amazon CodeWhisperer也非常實用。
亞馬遜云科技Amazon Lightsail可以在Amazon EC2上拓展和遷移,其安全性背靠亞馬遜云科技。亞馬遜云科技Amazon CodeWhisperer可以對現(xiàn)有的代碼進(jìn)行實時的檢測,給予一定的建議,所以構(gòu)建應(yīng)用程序時更加的安全。對于企業(yè)或開發(fā)者,亞馬遜云科技Amazon Lightsail和亞馬遜云科技Amazon CodeWhisperer的安全性對工作構(gòu)建、架構(gòu)設(shè)計等全套工作流都非常重要。
審核編輯 黃宇
-
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
5230瀏覽量
73526 -
SSH
+關(guān)注
關(guān)注
0文章
196瀏覽量
16952 -
亞馬遜
+關(guān)注
關(guān)注
8文章
2696瀏覽量
84680 -
云服務(wù)器
+關(guān)注
關(guān)注
0文章
809瀏覽量
13835
發(fā)布評論請先 登錄
基于AWS EC2 F1實例的自動語音識別加速解決方案
云服務(wù)器安全嗎?云服務(wù)器有哪些優(yōu)勢?
Xilinx FPGA將用于最新亞馬遜EC2 F1實例
什么是彈性云服務(wù)器?
亞馬遜彈性計算云(EC2)實例將采用英特爾旗下Habana Labs的Gaudi加速器
亞馬遜云科技推出由自研芯片支持的三款Amazon EC2新實例
全新亞馬遜EC2 M7a實例使用第四代AMD EPYC處理器
亞馬遜云科技虛擬專用服務(wù)器Amazon Lightsail優(yōu)勢及其如何為初創(chuàng)企業(yè)提升運營效率

解讀亞馬遜云科技Amazon EC2預(yù)留實例與按需實例的區(qū)別,及其在成本節(jié)約的優(yōu)勢

一文了解亞馬遜云科技云服務(wù)器面向macOSAmazon EC2 M1 Mac實例
亞馬遜云科技宣布基于自研Amazon Graviton4的Amazon EC2 R8g實例正式可用
亞馬遜云科技宣布Amazon EC2 P5e實例正式可用 由英偉達(dá)H200 GPU提供支持
彈性云服務(wù)器怎么樣?好用嗎?
亞馬遜云科技宣布Amazon Trainium2實例正式可用

評論