AWS CodeStar 專案層級政策和許可 - AWS CodeStar

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

AWS CodeStar 專案層級政策和許可

建立專案時,AWS CodeStar 會建立管理專案資源所需的 IAM 角色和政策。政策可分為三個類別:

  • 用於專案團隊成員的 IAM 政策。

  • 用於工作者角色的 IAM 政策。

  • 用於執行時間執行角色的 IAM 政策。

用於專案團隊成員的 IAM 政策

建立專案時,AWS CodeStar 會為專案的擁有者、參與者和檢視者存取建立三個客戶受管政策。所有 AWS CodeStar 專案都包含這三個存取層級的 IAM 政策。這些存取層級是專案特定的,並由具有標準名稱的 IAM 受管政策定義,其中 CodeStar project id 是 AWS 專案的 ID (例如 my-first-projec):

  • CodeStar_project-id_Owner

  • CodeStar_project-id_Contributor

  • CodeStar_project-id_Viewer

重要

AWS 可能會變更這些政策 CodeStar。不得以手動方式編輯這些類別。如果要新增或變更許可,請將其他政策附加至 IAM 使用者。

新增專案團隊成員 (IAM 使用者) 到專案並選擇他們的存取層級時,對應的政策會連接到該 IAM 使用者,授與該使用者一組適當許可,能夠對專案資源執行動作。在大部分情況下,您不需要直接連接或管理 IAM 中的政策或許可。不建議將 AWS CodeStar 存取層級政策手動附加到 IAM 使用者。如果絕對必要,作為 AWS CodeStar 存取層級政策的補充,您可以建立自己的受管或內嵌政策,將自己的許可層級套用至 IAM 使用者。

政策將緊密限定在專案資源和特定動作。當新資源新增至基礎設施堆疊時,AWS 會 CodeStar 嘗試更新團隊成員政策,以納入存取新資源的許可 (如果它們是支援的資源類型之一)。

注意

AWS CodeStar 專案中的存取層級政策僅適用於該專案。這有助於確保使用者只能在其角色決定的層級上查看他們有許可的 AWS CodeStar 專案並與之互動。只有建立 AWS CodeStar 專案的使用者才應套用政策,允許存取所有 AWS CodeStar 資源,而不論專案為何。

所有 AWS CodeStar 存取層級政策都會有所不同,具體取決於與存取層級相關聯之專案相關聯的AWS資源。不同於其他 AWS 服務,這些政策是在建立專案時自訂的,並隨著專案資源變更而更新。因此,並沒有正式的擁有者、作者群或檢視者受管政策。

AWS CodeStar 擁有者角色政策

CodeStar_project-id_Owner客戶受管政策可讓使用者不受限制地在 AWS CodeStar 專案中執行所有動作。這是唯一允許使用者新增或移除團隊成員的政策。政策的內容可能因與專案關聯的資源而有所不同。如需範例,請參閱AWS CodeStar 擁有者角色原則

具有此政策的 IAM 使用者可以在專案中執行所有 AWS CodeStar 動作,但與具有該AWSCodeStarFullAccess政策的 IAM 使用者不同,使用者無法建立專案。codestar:*權限的範圍僅限於特定資源 (與該 CodeStar 專案 ID 關聯的 AWS 專案)。

AWS CodeStar 參與者角色政策

CodeStar_project-id_Contributor 客戶受管政策允許使用者構成專案並變更專案儀表板,但不允許使用者新增或移除團隊成員。政策的內容可能因與專案關聯的資源而有所不同。如需範例,請參閱AWS CodeStar 作者群角色政策

AWS CodeStar 檢視器角色政策

CodeStar_project-id_Viewer客戶受管政策允許使用者在 AWS 中檢視專案 CodeStar,但不能變更其資源或新增或移除團隊成員。政策的內容可能因與專案關聯的資源而有所不同。如需範例,請參閱AWS CodeStar 檢視者角色原則

用於工作者角色的 IAM 政策

如果您在太平洋標準時間 2018 年 12 月 6 日之後建立 AWS CodeStar 專案,AWS CodeStar 會建立兩個工作者角色,以CodeStar-project-id-ToolChainCodeStar-project-id-CloudFormation。工作者角色是 AWS 為傳遞給服務而 CodeStar 建立的專案特定 IAM 角色。它授予許可,以便服務可以在 AWS CodeStar 專案的環境中建立資源和執行動作。工具鏈背景工作者角色具有與工具鏈服務 (例如 CodeBuild CodeDeploy、和) 建立的信任關係 CodePipeline。專案團隊成員 (擁有者和貢獻者) 會獲授與許可,可將工作者角色傳遞至信任的下游服務。如需此角色的內嵌政策陳述式範例,請參閱AWS 工 CodeStar 具鏈工作者角色政策 (太平洋標準時間 2018 年 12 月 6 日之後)

CloudFormation Worker 角色包括所支援的選定資源的許可AWS CloudFormation,以及在應用程式堆疊中建立 IAM 使用者、角色和政策的許可。它還與 AWS CloudFormation 建立信任關係。若要降低權限提升和破壞性動作的風險,AWS CloudFormation 角色政策包含的條件要求在基礎設施堆疊中,針對每個 IAM 實體 (使用者或角色) 建立專案特定許可界限。如需此角色的內嵌政策陳述式範例,請參閱AWS CloudFormation 工作者角色政策

對於 2018 年 12 月 6 日之前建立的 AWS CodeStar 專案,PDT AWS CodeStar 會為工具鏈資源 (例如 CodePipeline、 CodeBuild和 CloudWatch 事件) 建立個別的工作者角色,並為支援有限資源集的AWS CloudFormation工作者角色建立工作者角色。這每個角色已與對應的服務建立信任關係。專案團隊成員 (擁有者和貢獻者) 和與些其他工作者角色會獲授與許可,可將角色傳遞至信任的下游服務。工作者角色的許可會在內嵌政策中定義,它可將範圍限縮在角色可以對一組專案資源執行的一組基本動作。這些許可是靜態的。它們包含專案建立時包含資源的許可,但不會在對專案新增新資源時更新。如需這些政策陳述式的範例,請參閱:

執行角色的 IAM 政策

針對在 2018 年 12 月 6 日 (太平洋標準時間) 之後建立的專案,AWS CodeStar 會為應用程式堆疊中的範例專案建立一般執行角色。系統會使用許可界限政策,將該角色範圍限縮在專案資源。當您擴展範例專案時,您可以建立其他 IAM 角色,而AWS CloudFormation角色政策要求使用權限界限將這些角色限定為範圍,以避免權限提升。如需詳細資訊,請參閱 將 IAM 角色新增至專案

對於在 2018 年 12 月 6 日 (太平洋標準時間) 之前建立的 Lambda 專案,AWS CodeStar 會建立一個 Lambda 執行角色,該角色具有內嵌政策的權限,可對專案AWS SAM堆疊中的資源執行動作。當新資源新增至 SAM 範本時,AWS 會 CodeStar 嘗試更新 Lambda 執行角色政策,以包含新資源的許可 (如果這些許可是受支援的資源類型之一)。

IAM 許可界可界限

在 2018 年 12 月 6 日 (太平洋標準時間) 之後,當您建立專案時,AWS 會建 CodeStar 立客戶受管政策,並將該政策指派為 IAM 許可界限給專案中的 IAM 角色。AWS CodeStar 要求在應用程式堆疊中建立的所有 IAM 實體都必須具有許可界限。許可界限可控制角色可以有的最大許可,但無法提供該角色任何許可。許可政策可定義角色的許可。這表示無論新增多少額外的許可至角色,使用該角色的任何人都無法執行超過許可界限中包含的動作。有關如何評估許可政策和許可邊界的詳細資訊,請參閱《IAM 使用者指南》中的政策評估邏輯

AWS CodeStar 使用專案特定的許可界限來防止專案外部資源的權限提升。AWS CodeStar 許可界限包括專案資源的 ARN。如需此政策陳述式的範例,請參閱AWS CodeStar 許可邊界政策

當您透過應用程式堆疊 (template.yml) 從專案新增或移除支援的資源時,AWS CodeStar 轉換會更新此政策。

新增 IAM 許可界限至現有的專案

如果您擁有在 2018 年 12 月 6 日 PDT 之前建立的 AWS CodeStar 專案,則應手動將權限界限新增至專案中的 IAM 角色。做為最佳實務,建議您使用只包含專案中資源的專案特定界限,以防止將權限提升至專案外部的資源。請按照以下步驟使用隨專案發展而更新的 AWS CodeStar 受管許可界限。

  1. 登入 AWS CloudFormation 主控台,並找到專案中工具鏈堆疊的範本。此範本名為 awscodestar-project-id

  2. 依序選擇範本、Actions (動作)View/Edit template in Designer (在 Designer 中檢視/編輯範本)

  3. 找到 Resources 區段,並在區段上方包含下列程式碼片段。

    PermissionsBoundaryPolicy: Description: Creating an IAM managed policy for defining the permissions boundary for an AWS CodeStar project Type: AWS::IAM::ManagedPolicy Properties: ManagedPolicyName: !Sub 'CodeStar_${ProjectId }_PermissionsBoundary' Description: 'IAM policy to define the permissions boundary for IAM entities created in an AWS CodeStar project' PolicyDocument: Version: '2012-10-17' Statement: - Sid: '1' Effect: Allow Action: ['*'] Resource: - !Sub 'arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:stack/awscodestar-${ProjectId}-*'

    您可能需要額外的 IAM 許可才能從AWS CloudFormation主控台更新堆疊。

  4. (選用) 如果您想要建立應用程式專用 IAM 角色,請完成此步驟。從 IAM 主控台更新附加至專案AWS CloudFormation角色的內嵌政策,以包含下列程式碼片段。您可能需要其他 IAM 資源才能更新政策。

    { "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::{AccountId}:role/CodeStar-{ProjectId}*", "Effect": "Allow" }, { "Action": [ "iam:CreateServiceLinkedRole", "iam:GetRole", "iam:DeleteRole", "iam:DeleteUser" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:AttachRolePolicy", "iam:AttachUserPolicy", "iam:CreateRole", "iam:CreateUser", "iam:DeleteRolePolicy", "iam:DeleteUserPolicy", "iam:DetachUserPolicy", "iam:DetachRolePolicy", "iam:PutUserPermissionsBoundary", "iam:PutRolePermissionsBoundary" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::{AccountId}:policy/CodeStar_{ProjectId}_PermissionsBoundary" } }, "Effect": "Allow" }
  5. 透過專案管道推送變更,讓 AWS 以適當的許可更 CodeStar 新許可界限。

如需詳細資訊,請參閱 將 IAM 角色新增至專案