選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 CodePipeline、IAM Access Analyzer 和 AWS CloudFormation 巨集,在 AWS 帳戶中自動驗證和部署 IAM 政策和角色 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 角色和政策並將其部署到帳戶。

在 AWS 帳戶中驗證和部署 IAM 政策和角色的步驟。

該圖顯示以下工作流程:

  1. 開發人員會撰寫 JSON 檔案,其中包含 IAM 政策和角色的定義。開發人員會將程式碼推送至 CodeCommit 儲存庫,然後 CodePipeline 會啟動RolesPipeline管道。

  2. CodeBuild 使用 IAM Access Analyzer 驗證 JSON 檔案。如果有任何安全或錯誤相關的問題清單,部署程序會停止。

  3. 如果沒有安全或錯誤相關的調查結果,JSON 檔案會傳送至 RolesBucket S3 儲存貯體。

  4. 實作為 AWS Lambda 函數的 AWS CloudFormation 巨集會從RolesBucket儲存貯體讀取 JSON 檔案,並將其轉換為 AWS CloudFormation IAM 資源類型。

  5. 預先定義的 AWS CloudFormation 堆疊會安裝、更新或刪除帳戶中的 IAM 政策和角色。 

自動化和擴展

GitHub IAM 角色管道儲存庫中提供自動部署此模式的 AWS CloudFormation 範本。 GitHub https://github.com/aws-samples/iam-roles-pipeline

工具

Code

此模式的原始程式碼和範本可在 GitHub IAM 角色管道儲存庫中取得。

史詩

任務描述所需的技能

複製範例儲存庫。

將 GitHub IAM 角色管道儲存庫複製到本機機器。

應用程式開發人員,一般 AWS

複製儲存庫

任務描述所需的技能

複製範例儲存庫。

將 GitHub IAM 角色管道儲存庫複製到本機機器。

應用程式開發人員,一般 AWS
任務描述所需的技能

部署管道。

  1. 導覽至包含複製儲存庫的目錄。

  2. 重要

    執行 make deploy bucket=<bucket_name>命令。:您必須<bucket_name>將 取代為現有 S3 儲存貯體的儲存貯體名稱。

  3. 執行 aws codepipeline get-pipeline –name RolesPipeline命令來檢查您的部署是否成功。

應用程式開發人員,一般 AWS

複製管道的儲存庫。

  1. RolesPipeline AWS CloudFormation 堆疊會建立 roles-pipeline-repo CodeCommit 儲存庫。

  2. 登入 AWS 管理主控台,開啟 AWS CodeCommit 主控台,然後複製 CodeCommit 儲存庫的 URL 以將其複製到本機電腦。如需詳細資訊,請參閱 AWS CodeCommit 文件中的連線至 AWS CodeCommit 儲存庫。 AWS CodeCommit

應用程式開發人員,一般 AWS

部署 RolesPipeline 管道

任務描述所需的技能

部署管道。

  1. 導覽至包含複製儲存庫的目錄。

  2. 重要

    執行 make deploy bucket=<bucket_name>命令。:您必須<bucket_name>將 取代為現有 S3 儲存貯體的儲存貯體名稱。

  3. 執行 aws codepipeline get-pipeline –name RolesPipeline命令來檢查您的部署是否成功。

應用程式開發人員,一般 AWS

複製管道的儲存庫。

  1. RolesPipeline AWS CloudFormation 堆疊會建立 roles-pipeline-repo CodeCommit 儲存庫。

  2. 登入 AWS 管理主控台,開啟 AWS CodeCommit 主控台,然後複製 CodeCommit 儲存庫的 URL 以將其複製到本機電腦。如需詳細資訊,請參閱 AWS CodeCommit 文件中的連線至 AWS CodeCommit 儲存庫。 AWS CodeCommit

應用程式開發人員,一般 AWS
任務描述所需的技能

使用有效的 IAM 政策和角色測試 RolesPipeline 管道。

  1. 為您的 IAM 政策和角色建立 JSON 檔案。您可以從 GitHub IAM roles pipeline儲存庫使用 role-example目錄中的範例。

  2. 重要

    使用所需的組態定義您的 IAM 政策和角色。:請確定您遵循 GitHub IAM roles pipeline儲存庫中ReadMe檔案中描述的格式。

  3. 將修改推送到 roles-pipeline-repo CodeCommit 儲存庫。

  4. 驗證RolesPipeline管道的實作。

  5. 請確定 IAM 政策和角色已正確部署在帳戶中。

  6. 驗證是否有與 IAM 政策或角色相關聯的許可界限。如需詳細資訊,請參閱 IAM 文件中的 IAM 實體的許可界限

應用程式開發人員,一般 AWS

使用無效的 IAM 政策和角色測試 RolesPipeline 管道。

  1. 修改 roles-pipeline-repo CodeCommit 儲存庫,並包含無效的 IAM 角色或政策。例如,您可以使用不存在的動作或無效的 IAM 政策版本。

  2. 驗證管道實作。如果 IAM Access Analyzer 偵測到無效的 IAM 政策或角色,則會在驗證階段停止管道。

應用程式開發人員,一般 AWS

測試 RolesPipeline 管道

任務描述所需的技能

使用有效的 IAM 政策和角色測試 RolesPipeline 管道。

  1. 為您的 IAM 政策和角色建立 JSON 檔案。您可以從 GitHub IAM roles pipeline儲存庫使用 role-example目錄中的範例。

  2. 重要

    使用所需的組態定義您的 IAM 政策和角色。:請確定您遵循 GitHub IAM roles pipeline儲存庫中ReadMe檔案中描述的格式。

  3. 將修改推送到 roles-pipeline-repo CodeCommit 儲存庫。

  4. 驗證RolesPipeline管道的實作。

  5. 請確定 IAM 政策和角色已正確部署在帳戶中。

  6. 驗證是否有與 IAM 政策或角色相關聯的許可界限。如需詳細資訊,請參閱 IAM 文件中的 IAM 實體的許可界限

應用程式開發人員,一般 AWS

使用無效的 IAM 政策和角色測試 RolesPipeline 管道。

  1. 修改 roles-pipeline-repo CodeCommit 儲存庫,並包含無效的 IAM 角色或政策。例如,您可以使用不存在的動作或無效的 IAM 政策版本。

  2. 驗證管道實作。如果 IAM Access Analyzer 偵測到無效的 IAM 政策或角色,則會在驗證階段停止管道。

應用程式開發人員,一般 AWS
任務描述所需的技能

準備清理。

清空 S3 儲存貯體,然後執行 destroy命令。

應用程式開發人員,一般 AWS

刪除 RolesStack 堆疊。

  1. RolesPipeline 管道會建立部署 IAM 政策和角色的 RolesStack AWS CloudFormation 堆疊。您必須先刪除此堆疊,才能刪除RolesPipeline管道。

  2. 登入 AWS 管理主控台,開啟 AWS CloudFormation 主控台,然後選擇RolesStack堆疊,然後選擇刪除

應用程式開發人員,一般 AWS

刪除 RolesPipeline 堆疊。

若要刪除 RolesPipeline AWS CloudFormation 堆疊,請遵循 Github IAM roles pipeline儲存庫中 ReadMe 檔案的指示。

應用程式開發人員,一般 AWS

清除您的資源

任務描述所需的技能

準備清理。

清空 S3 儲存貯體,然後執行 destroy命令。

應用程式開發人員,一般 AWS

刪除 RolesStack 堆疊。

  1. RolesPipeline 管道會建立部署 IAM 政策和角色的 RolesStack AWS CloudFormation 堆疊。您必須先刪除此堆疊,才能刪除RolesPipeline管道。

  2. 登入 AWS 管理主控台,開啟 AWS CloudFormation 主控台,然後選擇RolesStack堆疊,然後選擇刪除

應用程式開發人員,一般 AWS

刪除 RolesPipeline 堆疊。

若要刪除 RolesPipeline AWS CloudFormation 堆疊,請遵循 Github IAM roles pipeline儲存庫中 ReadMe 檔案的指示。

應用程式開發人員,一般 AWS

相關資源

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。