AWS資源標記的最佳實踐與Yor

AWS資源標記的最佳實踐與Yor

表面上看,AWS資源標記是簡單的資訊性鍵值對元數據,可以指派給大多數AWS資源。但它們還隱藏了許多益處,正如本AWS標記最佳實踐指南中所概述的,可改善雲端作業。作者布萊恩·約斯特特別指出了六種使用案例:

簡而言之,標記可以簡化作業流程、改善安全狀況、縮短平均修復時間(MTTR),如果持續且一致地實施,甚至可節省成本。但遺憾的是,在大型組織中,這是一個艱鉅且經常出錯的過程。

為了協助團隊克服這一挑戰,並充分利用雲端資源標記,Bridgecrew(最近被Palo Alto Networks收購)最近推出了一款新的開源工具Yor。Yor旨在自動為基礎架構即代碼(IaC)範本新增一致且實用的標記,從Terraform、CloudFormation和Serverless Framework開始。如果在本機運行或新增到持續整合(CI)管線中,Yor將為IaC資源新增諸如Git組織和存放庫、唯一追蹤ID和提交修改者詳細資訊等標記,並將這些標記傳遞到雲端資源。例如,使用Yor,您可以為Terraform中的aws_instance代碼塊新增標記,這些標記將顯示在正在運行的EC2實例中。

本文將探討如何利用Yor來實現AWS標記最佳實踐指南中概述的六種標記使用案例。

AWS主控台組織與資源群組

使用標記來組織和篩選資源是最簡單且最常見的標記使用案例。如果您為資源(如EC2實例或資料庫資源)新增標記,就可以根據這些標記進行篩選。

如果您的AWS帳戶在某個區域中擁有數千或數萬個資源,則需要進行篩選來管理這些資源。例如,如果您有數百台Web伺服器,可以透過Yor新增的git_repo標記快速篩選出應用程式的Web伺服器。

同樣地,您可以根據標籤來設置資源群組,以跨AWS服務組織多個資源。舉例來說,如果您想要尋找由Terraform存放庫所建立的VPC、EC2、網際網路閘道或資料庫,可以使用您的git_repo標籤將多個資源組合成單一資源群組。

運營支持

Yor擅長簡化和加快運營支援。正如Brian Yost所說:”例如,一級支援團隊可以使用標籤來引導工作流程,並在監控系統觸發警報時執行業務服務映射作為分類過程的一部分。”Yor會自動為雲端資源添加git組織和修改者的標籤。這樣可以更容易識別出負責修復問題的適當團隊和使用者。

如果您在GitOps組織中工作,這就更加重要。遵循GitOps最佳實踐意味著所有變更都應該在IaC模板中執行,而不是直接在雲端資源上執行。因此,如果您的安全團隊使用政策即代碼或CSPM工具(如Bridgecrew)在運行時發現開放的端口22,Yor的標籤將有助於更輕鬆快速地找到IaC模板的擁有者,從而降低平均故障修復時間。

Yor更進一步,通過添加存儲庫、文件和跟踪標籤,幫助團隊不僅識別出代碼擁有者,還可以確定創建該資源錯誤配置的確切文件和資源塊。

成本分配

大型公司通常會為每個業務單位編製單獨的損益表。在報告期結束時,例如一個財務季度,財務團隊需要將公司的支出分配到各個成本中心。

對於傳統IT團隊而言,這通常涉及非常廣泛和概括的估計。例如,如果兩個組織共用一個伺服器機架,您可以根據虛擬CPU時間或磁碟空間來分配成本。一旦規模擴大到數十個組織和短暫的工作負載,該分配就會變得更加困難。分配雲端成本也同樣困難。如果您擁有數以千計不同類型的資源(虛擬機器、無伺服器、受管理的Kubernetes工作負載、受管理的資料庫、串流、CDN等),且具有不同的生命週期和生命週期,將這些資源成本追溯到成本中心是一項艱鉅的任務。

雲端標籤簡化了這一過程。假設每個團隊都有一個git組織,Yor將自動為資源加上git_org標籤,或者可以使用自訂標籤將git_modifier分組到成本中心標籤,而AWS成本探索器將允許您按照這些標籤進行篩選,輕鬆分配成本。您還可以按標籤導出成本到CSV文件,以便匯入其他工具進行分析。

Yor可靠且一致地應用這些標籤,因此財務團隊不需要挖掘不同的組織名稱版本,例如合併dev_team_one和devTeam1,或手動分類未標籤的資源。

存取控制

AWS身分與存取管理(IAM)政策支援使用標籤來限制資源控制的能力。這簡化了使用複雜IAM規則來分割資源給不同團隊的過程。

例如,如果您希望開發人員僅能存取他們佈建的EC2執行個體,您可以使用由Yor新增的git_modifiers標籤。Yor將自動為資源加上編輯基礎架構程式碼的Git使用者標籤。然後,Yor將新增AWS IAM政策,根據該標籤限制存取權限。您也應該新增一個拒絕執行ec2:CreateTags和ec2:DeleteTags等動作的政策,以防止使用者自行將自己新增到其他資源中。

在此情況下,可以利用Checkov這個開源的政策即代碼工具,以獲得額外的控制。您可以為Checkov的檢查增加上下文資訊,從而實現更細緻的政策控制。例如,您可以填入修改基礎架構即代碼模板的使用者身分識別,而Checkov則可確保只有經核准的團隊成員才能修改該代碼。以下是一個自訂檢查的範例,用於確定只有安全人員可修改CloudTrail設定。

如果 Yor 添加的 git_modifier 標籤不是 “Nimrod”、”Rotem” 或 “Naor”之一,Checkov 將對該資源顯示該自訂檢查的失敗政策檢查。

自動化

透過結合標籤和其他工具(如 Lambda 函數和備份計劃),您可以將自動化應用於特定資源,例如將資源設為存檔、更新或刪除的目標。

AWS 標籤最佳實踐指南以開發資源在非營業時間關閉的情況為例。AWS 最近發佈了一款名為 Instance Scheduler 的工具,專門用於此類用例。它是一個包含 Lambda 函數和 DynamoDB 實例的 CloudFormation 堆疊,可根據預定義的時程自動啟動和停止 EC2 和 RDS 實例。

Instance Scheduler 使用一個 key:value 對作為標籤,例如將 “Schedule” (或自訂金鑰)作為金鑰,將時程作為值。這些時程可以是 DynamoDB 表中預先配置的時程之一,例如辦公時間,也可以是自訂時程。

在 Yor 中使用簡單的自訂標籤,您可以透過使用環境變數為存放庫中的每個資源添加時程標籤,例如將以下內容添加到 Yor GitHub Action YAML 文件中:

這將導致在該基礎架構目錄中為每個資源新增標籤。透過「seattle-office-hours」標籤,Instance Scheduler將於太平洋時間星期一至星期五的下午5點關閉EC2執行個體,並於上午9點重新啟動。此舉可在閒置時間自動停止執行個體,藉此節省開支。

另一個流行的自動化使用案例是用於備份和存檔計劃。AWS可以根據應用於資源(如儲存和資料庫資源)的標籤自動套用不同的備份計劃。例如,如果某些組織(如處理財務資料的組織)需要永久存檔,而其他組織只需要一年的備份,則可以將短期儲存移至較便宜的選項(如Glacier),並最終根據排程將其刪除。

安全風險管理

最後一個使用案例是風險管理。雲端資源的風險程度因其是否位於測試或生產環境,以及其所處理和持有的資料的敏感度而有所不同。這是另一個可以使用簡單標籤(如git_repo)來篩選處理敏感資料的應用程式存放庫的領域。您也可以利用複雜的自訂標籤。例如,連接至名稱中包含「customer」一詞的資料庫的EC2執行個體將獲得data_level:sensitive標籤。

IT服務管理工具可以為具有敏感資料標籤或生產環境標籤的資源指派更高的修補和更新優先順序。這是另一個可以結合Checkov的圖形化檢查和Yor標籤來為違反政策的資源指派更高嚴重程度等級的領域。指派優先順序有助於集中開發人員的注意力,並更快地減輕風險。

這六個標籤使用案例只是您可以如何利用標籤在AWS中提高效率和改善雲端安全態勢的一些例子。Yor的追蹤功能使開發和運營團隊能夠在無需進行複雜分類以找到合適人員和IaC模板的情況下合作。有了Yor的可擴展性和自訂標籤功能,我們期待社群能夠提出更多其他使用案例!

Telegram : @Alan5808

Line : @286fhkvy

Youtube : @kingcloud85

FB : https://www.facebook.com/kingcloud.tech/