本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 CodePipeline、IAM Access Analyzer 和 AWS CloudFormation 巨集,在 AWS 帳戶中自動驗證和部署 IAM 政策和角色
由 Helton Ribeiro (AWS) 和 Guilherme Simoes (AWS) 建立
Summary
請注意:新客戶不再使用 AWS CodeCommit。AWS CodeCommit 的現有客戶可以繼續正常使用服務。進一步了解
此模式說明步驟並提供程式碼來建立部署管道,讓您的開發團隊在您的 Amazon Web Services (AWS) 帳戶中建立 AWS Identity and Access Management (IAM) 政策和角色。此方法可協助您的組織降低營運團隊的開銷,並加速部署程序。它還可協助您的開發人員建立與您現有控管和安全控制相容的 IAM 角色和政策。
此模式的方法使用 AWS Identity and Access Management Access Analyzer 來驗證您要連接到 IAM 角色的 IAM 政策,並使用 AWS CloudFormation 部署 IAM 角色。不過,您的開發團隊不會直接編輯 AWS CloudFormation 範本檔案,而是建立 JSON 格式的 IAM 政策和角色。AWS CloudFormation 巨集會在開始部署之前,將這些 JSON 格式的政策檔案轉換為 AWS CloudFormation IAM 資源類型。
部署管道 (RolesPipeline
) 具有來源、驗證和部署階段。在來源階段,您的開發團隊會將包含 IAM 角色和政策定義的 JSON 檔案推送至 AWS CodeCommit 儲存庫。AWS CodeBuild 接著會執行指令碼來驗證這些檔案,並將其複製到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。由於您的開發團隊無法直接存取存放在個別 S3 儲存貯體中的 AWS CloudFormation 範本檔案,因此他們必須遵循 JSON 檔案建立和驗證程序。
最後,在部署階段,AWS CodeDeploy 會使用 AWS CloudFormation 堆疊來更新或刪除帳戶中的 IAM 政策和角色。
重要
此模式的工作流程是一種概念驗證 (POC),我們建議您只在測試環境中使用它。如果您想要在生產環境中使用此模式的方法,請參閱 IAM 文件中的 IAM 中的安全最佳實務,並對 IAM 角色和 AWS 服務進行必要的變更。
先決條件和限制
先決條件
作用中的 AWS 帳戶
RolesPipeline
管道的新或現有 S3 儲存貯體。請確定您使用的存取憑證具有將物件上傳至此儲存貯體的許可。安裝並設定 AWS Command Line Interface (AWS CLI)。如需詳細資訊,請參閱 AWS CLI 文件中的安裝、更新和解除安裝 AWS CLI。
安裝並設定 AWS Serverless Application Model (AWS SAM) CLI。如需詳細資訊,請參閱 AWS SAM 文件中的安裝 AWS SAM CLI。
Python 3,安裝在本機電腦上。如需詳細資訊,請參閱 Python 文件
。 已安裝和設定的 Git 用戶端。
GitHub
IAM roles pipeline
儲存庫,複製到您的本機電腦。現有的 JSON 格式 IAM 政策和角色。如需詳細資訊,請參閱 Github
IAM roles pipeline
儲存庫中的 ReadMe檔案。 您的開發人員團隊不得具有編輯此解決方案 AWS CodePipeline、CodeBuild 和 CodeDeploy 資源的許可。
限制
此模式的工作流程是一種概念驗證 (POC),我們建議您只在測試環境中使用它。如果您想要在生產環境中使用此模式的方法,請參閱 IAM 文件中 IAM 中的安全最佳實務,並對 IAM 角色和 AWS 服務進行必要的變更。
架構
下圖說明如何使用 CodePipeline、IAM Access Analyzer 和 AWS CloudFormation 巨集,自動驗證 IAM 角色和政策並將其部署到帳戶。

該圖顯示以下工作流程:
開發人員會撰寫 JSON 檔案,其中包含 IAM 政策和角色的定義。開發人員會將程式碼推送至 CodeCommit 儲存庫,然後 CodePipeline 會啟動
RolesPipeline
管道。CodeBuild 使用 IAM Access Analyzer 驗證 JSON 檔案。如果有任何安全或錯誤相關的問題清單,部署程序會停止。
如果沒有安全或錯誤相關的調查結果,JSON 檔案會傳送至
RolesBucket
S3 儲存貯體。實作為 AWS Lambda 函數的 AWS CloudFormation 巨集會從
RolesBucket
儲存貯體讀取 JSON 檔案,並將其轉換為 AWS CloudFormation IAM 資源類型。預先定義的 AWS CloudFormation 堆疊會安裝、更新或刪除帳戶中的 IAM 政策和角色。
自動化和擴展
GitHub IAM 角色管道儲存庫中提供自動部署此模式的 AWS CloudFormation 範本。 GitHub https://github.com/aws-samples/iam-roles-pipeline
工具
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列 shell 中的命令與 AWS 服務互動。
AWS Identity and Access Management (IAM) 可透過控制誰經過身分驗證和授權,協助您安全地管理對 AWS 資源的存取。
IAM Access Analyzer 可協助您識別組織和帳戶中與外部實體共用的資源,例如 S3 儲存貯體或 IAM 角色。這可協助您識別對資源和資料的意外存取。
AWS Serverless Application Model (AWS SAM) 是一種開放原始碼架構,可協助您在 AWS 雲端中建置無伺服器應用程式。
Code
此模式的原始程式碼和範本可在 GitHub IAM 角色管道
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
複製範例儲存庫。 | 將 GitHub IAM 角色管道 | 應用程式開發人員,一般 AWS |
任務 | 描述 | 所需的技能 |
---|---|---|
部署管道。 |
| 應用程式開發人員,一般 AWS |
複製管道的儲存庫。 |
| 應用程式開發人員,一般 AWS |
任務 | 描述 | 所需的技能 |
---|---|---|
使用有效的 IAM 政策和角色測試 RolesPipeline 管道。 |
| 應用程式開發人員,一般 AWS |
使用無效的 IAM 政策和角色測試 RolesPipeline 管道。 |
| 應用程式開發人員,一般 AWS |
任務 | 描述 | 所需的技能 |
---|---|---|
準備清理。 | 清空 S3 儲存貯體,然後執行 | 應用程式開發人員,一般 AWS |
刪除 RolesStack 堆疊。 |
| 應用程式開發人員,一般 AWS |
刪除 RolesPipeline 堆疊。 | 若要刪除 | 應用程式開發人員,一般 AWS |
相關資源
IAM Access Analyzer - 政策驗證
(AWS 新聞部落格) 使用 AWS CloudFormation 巨集對範本執行自訂處理 (AWS CloudFormation 文件)
使用 Python 建置 Lambda 函數 (AWS Lambda 文件)