在之前的部落格文章中,我們介紹了 IAM 存取分析器 (IAM Access Analyzer) 的自訂政策檢查功能,這功能可以讓你根據自訂規則驗證你的政策。現在,我們更進一步,將這些政策檢查直接帶入你的開發環境,透過 AWS 工具包 (AWS Toolkit) 與 Visual Studio Code (VS Code) 整合。
在這篇文章中,我們將展示如何將 IAM 存取分析器的自訂政策檢查功能整合到 VS Code 中,讓你能夠在開發過程的早期階段識別過度授權的 IAM 政策並微調存取控制。這種主動的安全與合規方法有助於確保你的 IAM 政策在部署之前已被驗證,減少引入錯誤配置或授予非預期存取的風險。它還能節省開發者的時間,因為當他們撰寫不符合組織標準的政策時,能快速提供回饋。
問題是什麼?
雖然安全團隊負責監督組織的整體安全狀態,但開發者需要創建應用程式以獲得特定的權限。為了讓開發者在保持高安全標準的同時有效工作,組織通常尋求安全地將 AWS 身份和存取管理 (IAM) 政策的撰寫委託給開發者。許多 AWS 客戶在將開發者撰寫的 IAM 政策部署到生產環境之前,會手動審查這些政策,以防止授予過多或非預期的權限。然而,根據政策的數量和複雜性,這些手動審查可能會耗時,導致開發延遲和應用程式與服務部署的潛在瓶頸。組織需要在安全存取管理與快速應用程式開發和部署所需的敏捷性之間取得平衡。
如何在 VS Code 中使用 IAM 存取分析器自訂政策檢查
自訂政策檢查是 IAM 存取分析器中的一項功能,旨在幫助安全團隊主動識別和分析其 IAM 政策中的關鍵權限。在本節中,我們提供了在 VS Code 中直接使用自訂政策檢查的逐步說明。
先決條件
要完成我們的演練示例,首先需要完成以下步驟:
安裝 Python 版本 3.6 或更高版本。
假設你已經在使用 VS Code 整合開發環境 (IDE),搜尋並安裝 AWS 工具包擴充功能。
配置你的 AWS 角色憑證以連接工具包到 AWS。
安裝 IAM 政策驗證器 (IAM Policy Validator) 用於 AWS CloudFormation,該工具在 GitHub 上可用。或者,如果你在組織中使用 Terraform 作為基礎設施即代碼,你可以從 GitHub 安裝 Terraform 的 IAM 政策驗證器。
為了能在 VS Code 編輯器中開啟 IAM 存取分析器政策檢查,按下 Ctrl+Shift+P 開啟 VS Code 命令面板,搜尋 IAM Policy Checks,然後選擇 AWS: Open IAM Policy Checks,如圖 1 所示。
使用 VS Code 中的 IAM 政策檢查選項,你可以執行四種類型的檢查:
我們將在接下來的部分中逐一介紹這些檢查的示例。
範例 1:ValidatePolicy
在這個範例中,我們使用 IAM 政策檢查插件提供的 ValidatePolicy 選項來根據 IAM 政策語法和 AWS 最佳實踐驗證 IAM 政策。當你運行這個檢查時,你可以查看政策驗證檢查結果,其中包括安全警告、錯誤、一般警告和對你的政策的建議。這些可操作的建議幫助你撰寫符合 AWS 最佳實踐的政策。
要運行 ValidatePolicy 檢查
讓我們使用以下 IAM 政策作為示例。你可以看到在第一個聲明中使用了資源 *(萬用字元),這表示 iam:PassRole 操作被允許對所有資源進行。
在 VS Code 編輯器中,導航到 IAM Policy Checks 面板。選擇文件類型 JSON Policy Language 和政策類型 Identity。然後選擇 Run Policy Validation。
你可以看到存取分析器已檢測到一個問題,顯示在 PROBLEMS 面板中。
圖 3 中顯示的安全警告指出,iam:PassRole 操作在資源中使用萬用字元 (*) 可能過於寬鬆,因為它允許在該帳戶中傳遞任何 IAM 角色。
現在,讓我們通過將萬用字元 (*) 替換為特定角色的 Amazon 資源名稱 (ARN) 來修改 IAM 政策。
再次運行 ValidatePolicy 檢查,確保在更新 IAM 政策後不會產生任何問題。
範例 2:CheckNoPublicAccess
使用 CheckNoPublicAccess 選項,你可以驗證你的資源政策是否對支援的資源類型授予公共存取權。
要運行 CheckNoPublicAccess 檢查
為了測試政策是否不允許公共存取,使用 CloudFormation 模板創建一個新桶,並附加一個資源政策,授予任何主體查看此桶中對象的權限。
警告:此範例桶政策不應在生產環境中使用。在桶政策的主體元素中使用萬用字元將允許任何 IAM 主體查看桶的內容。
選擇文件類型 CloudFormation 模板,然後選擇 Run Custom Policy Check 以查看此資源政策是否通過 CheckNoPublicAccess 檢查。
政策檢查返回失敗結果,因為此桶確實允許公共存取。
接下來,修正此政策以允許來自同一帳戶內角色的存取,通過將政策限制為特定角色 ARN。
重新運行 CheckNoPublicAccess 檢查。資源政策不再授予公共存取,政策檢查的狀態為 PASS。
範例 3:CheckAccessNotGranted
CheckAccessNotGranted 選項允許你檢查政策是否允許訪問一系列 IAM 操作和資源 ARN。你可以使用此檢查快速向開發者提供反饋,指出某些權限或資源存取是不被允許的。
要運行 CheckAccessNotGranted 檢查
識別敏感操作和資源。
在 VS Code 編輯器中,選擇 Custom Policy Checks 下的檢查類型 CheckAccessNotGranted。使用逗號分隔的列表,創建一個不希望在 IAM 政策中允許的操作和資源 ARN 列表。你還可以使用圖 7 中顯示的語法創建一個 JSON 文件,列出你的操作和資源。對於此示例,將 s3:PutBucketPolicy 和 dynamodb:DeleteTable IAM 操作設置為在 IAM 政策中“不允許”。
創建一個包含附加到 IAM 角色的 IAM 政策的 CloudFormation 模板,如下所示。此政策授予你在圖 7 中認為敏感的某些操作的存取權。
在 VS Code 編輯器中,選擇 Run Custom Policy Check 以識別 IAM 政策中是否允許某個敏感操作或資源。政策檢查返回 FAIL,因為政策中包含你標記為不希望開發者授予存取權的操作 s3:PutBucketPolicy 和 dynamodb:DeleteTable。從政策中移除受限操作,然後再次運行檢查以查看政策檢查的 PASS 結果。
範例 4:CheckNoNewAccess
CheckNoNewAccess 選項是一個自訂政策檢查,驗證你的政策是否相較於參考政策授予了新的存取權。
你可以使用參考政策檢查候選政策是否允許比參考政策更多的存取權。換句話說,如果候選政策是參考政策的子集,則檢查通過。參考政策通常從允許所有存取開始。然後你可以添加一個或多個聲明,以拒絕你希望參考政策檢查的存取權。欲了解更多參考政策的詳細信息和示例,請參閱 GitHub 上的 iam-access-analyzer-custom-policy-check-samples 存儲庫。
使用參考政策的能力提供了在 IAM 政策中尋找幾乎任何內容的靈活性。當你有一些其他自訂政策檢查可能無法滿足的組織自訂需求時,這非常有用。
要運行 CheckNoNewAccess 檢查
創建一個參考政策:在你的專案中創建一個新的 JSON 政策文件,作為你的參考政策。
以下參考政策檢查 IAM 角色信任政策僅授予一組允許的 AWS 服務存取權。這使你能夠允許開發者創建角色,但將這些角色的使用限制在指定的 AWS 服務集內。
在此參考政策中,僅允許指定的 AWS 服務主體 ec2.amazonaws.com、lambda.amazonaws.com 和 ecs-tasks.amazonaws.com 假設角色。
在 VS Code 編輯器中輸入參考政策。在 IAM Policy Checks 面板中,選擇檢查類型 CheckNoNewAccess。然後將參考政策類型設置為 Resource,因為這是一個定義哪些主體可以假設角色的信任政策。此外,提供你在步驟 1 中創建的參考政策的路徑。你也可以直接輸入參考政策作為 JSON 政策文件,如圖 8 所示。
創建一個 CloudFormation 模板,如下所示。此模板創建了一個 IAM 角色,允許 AWS 服務主體 lambda.amazonaws.com 和 glue.amazonaws.com 假設 sample-application-role IAM 角色。
在 VS Code 編輯器中,選擇 Run Custom Policy Check 以根據你在步驟 1 中配置的參考政策檢查你的 CloudFormation 模板。檢查將返回 FAIL,並且你會在編輯器的 PROBLEMS 面板中看到安全警告。
問題在於 glue.amazonaws.com 未列為參考政策中允許假設角色的服務主體。你可以從 CloudFormation 模板中移除 glue.amazonaws.com,然後重新運行檢查以獲得 PASS 結果。
結論
在這篇文章中,我們探討了如何在開發工作流程中使用 VS Code 與 IAM 存取分析器的整合,以確保你的 IAM 政策符合最佳實踐並遵循組織的安全要求。IAM 存取分析器提供的四個關鍵檢查可以總結如下:
ValidatePolicy 檢查提供可操作的建議,幫助你撰寫符合 AWS 最佳實踐的政策。
CheckNoPublicAccess 檢查有助於保護資源不被公開暴露,並減少未授權公共存取的風險。
CheckAccessNotGranted 檢查尋找特定的 IAM 操作和資源 ARN,以幫助強制存取限制並防止未授權存取關鍵數據或服務。
CheckNoNewAccess 檢查驗證你的 IAM 政策中授予的權限是否在組織要求定義的預期範圍內。
今天就安裝或更新 AWS Toolkit for VS Code,並確保你擁有 CloudFormation Policy Validator 或 Terraform Policy Validator,以利用這些功能。
如果你對這篇文章有任何反饋,請在下方的評論區提交評論。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!