使用 Account Factory 定制(AFC)自定義帳戶 - AWS Control Tower

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

使用 Account Factory 定制(AFC)自定義帳戶

當您從 AWS Control Tower 主控台佈建資源 AWS 帳戶 時,AWS Control Tower 可讓您自訂新的和現有的資源。設定帳戶工廠自訂後,AWS Control Tower 會自動執行此程序以供 future 佈建使用,因此您不必維護任何管道。自訂帳戶可在佈建資源後立即使用。

您的自訂帳戶是在帳戶工廠、透過 AWS CloudFormation 範本或 Terraform 佈建。您將定義做為自訂帳戶藍圖的範本。您的藍圖描述佈建帳戶時所需的特定資源和組態。同時也提供由 AWS 合作夥伴建置和管理的預先定義藍圖。如需有關合作夥伴管理的藍圖的詳細資訊,請參閱AWS Service Catalog 入門程式庫。

注意

AWS Control Tower 包含主動控制,可監控 AWS Control Tower 中的 AWS CloudFormation 資源。或者,您可以在 landing zone 中啟用這些控制項。當您套用主動式控制時,它們會檢查以確保您將要部署到帳戶的資源符合組織的政策和程序。如需主動式控制的詳細資訊,請參閱主動式控制

您的帳戶藍圖存儲在 AWS 帳戶,出於我們的目的,稱為 Hub 帳戶。藍圖會以 Service Catalog 產品的形式儲存。我們稱此產品為藍圖,以便與其他任何 Service Catalog 產品區分開來。若要深入瞭解如何建立 Service Catalog 產品,請參閱《AWS Service Catalog 管理員指南》中的〈建立產品

將藍圖套用至現有帳戶

您也可以依照 AWS Control Tower 主控台中的更新帳戶步驟,將自訂藍圖套用至現有帳戶。如需詳細資訊,請參閱 更新主控台中的帳戶

開始之前

在 AWS Control 塔 Account Factory 開始建立自訂帳戶之前,您必須部署 AWS Control Tower landing zone 環境,而且您必須在 AWS Control Tower 註冊組織單位 (OU),並在其中放置新建立的帳戶。

如需使用 AFC 的詳細資訊,請參閱使用 AWS Control Tower 中的 Account Factory 自訂自動化帳戶。

定制準備
  • 您可以建立新帳戶做為 Hub 帳戶,也可以使用現有帳戶 AWS 帳戶。強烈建議您不要使用 AWS Control Tower 管理帳戶做為藍圖中樞帳戶。

  • 如果您打算註冊 AWS Control Tower 並對其 AWS 帳戶 進行自訂,則必須先將AWSControlTowerExecution角色新增到這些帳戶,就像對註冊 AWS Control Tower 的任何其他帳戶一樣。

  • 如果您計劃使用具有市場訂閱需求的合作夥伴藍圖,則必須先從 AWS Control Tower 管理帳戶設定這些藍圖,然後再將合作夥伴藍圖部署為帳戶工廠自訂藍圖。

注意

每個 AWS Control Tower 帳戶可部署一個藍圖。

Account Factory 自訂 (AFC) 的注意事項

  • AFC 僅支援使用單一 AWS Service Catalog 藍圖產品進行自訂。

  • AWS Service Catalog 藍圖產品必須在 Hub 帳戶中建立,並在與 AWS Control Tower 登陸區域主區域相同的區域中建立。

  • AWSControlTowerBlueprintAccessIAM 角色必須使用適當的名稱、許可和信任政策建立。

  • AWS Control Tower 支援兩種藍圖的部署選項:僅部署到本地區域,或部署到由 AWS Control Tower 管理的所有區域。無法選取區域。

  • 當您更新成員帳戶中的藍圖時,無法變更藍圖中樞帳戶 ID 和 AWS Service Catalog 藍圖產品。

  • AWS Control Tower 不支援在單一藍圖更新作業中移除現有藍圖和新增藍圖。您可以移除藍圖,然後在不同的作業中新增藍圖。

  • AWS Control Tower 會根據您要建立或註冊自訂帳戶或非自訂帳戶而變更行為。如果您不是使用藍圖建立或註冊自訂帳戶,AWS Control Tower 會在 AWS Control Tower 管理帳戶中建立 Account Factory 佈建的產品 (透過 Service Catalog)。如果您在使用藍圖建立或註冊帳戶時指定自訂,AWS Control Tower 不會在 AWS Control Tower 管理帳戶中建立 Account Factory 佈建的產品。

如果發生藍圖錯誤

套用藍圖時發生錯誤

如果在將藍圖套用至帳戶 (新帳戶或您註冊 AWS Control Tower 的現有帳戶) 的過程中發生錯誤,復原程序也是相同的。該帳戶將存在,但不是自訂帳戶,也不會註冊到 AWS Control Tower。若要繼續,請按照以下步驟將帳戶註冊到 AWS Control Tower,並在註冊時新增藍圖。

建立AWSControlTowerBlueprintAccess角色時發生錯誤,以及因應措施

從 AWS Control Tower 帳戶建立AWSControlTowerBlueprintAccess角色時,您必須使用該AWSControlTowerExecution角色以主體身分登入。如果您以任何其他方式登入,則 SCP 會阻止該CreateRole作業,如下列成品所示:

{ "Condition": { "ArnNotLike": { "aws:PrincipalArn": [ "arn:aws:iam::*:role/AWSControlTowerExecution", "arn:aws:iam::*:role/stacksets-exec-*" ] } }, "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/aws-controltower-*", "arn:aws:iam::*:role/*AWSControlTower*", "arn:aws:iam::*:role/stacksets-exec-*" ], "Effect": "Deny", "Sid": "GRIAMROLEPOLICY" }

以下是可用的因應措施:

  • (最建議使用) AWSControlTowerExecution 扮演角色並建立AWSControlTowerBlueprintAccess角色。如果您選擇此因應措施,請務必在之後立即登出AWSControlTowerExecution角色,以防止資源發生意外變更。

  • 登入未註冊 AWS Control Tower 的帳戶,因此不受此 SCP 約束。

  • 暫時編輯此 SCP 以允許此作業。

  • (強烈不建議使用) 使用您的 AWS Control Tower 管理帳戶做為您的中樞帳戶,因此不受 SCP 的約束。

根據 AFC 藍圖自訂政策文件 CloudFormation

當您透過帳戶工廠啟用藍圖時,AWS Control Tower 會 AWS CloudFormation 指示代表您建 StackSet 立藍圖。 AWS CloudFormation 需要存取您的受管理帳戶,才能在中建立 AWS CloudFormation 堆疊 StackSet。雖然 AWS CloudFormation 已經透過AWSControlTowerExecution角色在受管理帳戶中擁有系統管理員權限,但無法保證此角色。 AWS CloudFormation

AWS Control Tower 會在成員帳戶中建立角色,做為啟用藍圖的一部分,該角色 AWS CloudFormation 可能會假設完成 StackSet 管理任務。透過帳戶工廠啟用自訂藍圖的最簡單方法是使用允許所有原則,因為這些原則與任何藍圖範本相容。

不過,最佳做法建議您必須限制目標帳戶 AWS CloudFormation 中的權限。您可以提供自訂政策,AWS Control Tower 將該政策套用至其建立 AWS CloudFormation 要使用的角色。例如,如果您的藍圖建立稱為某些重要的 SSM 參數,您可以提供下列原則:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFormationActionsOnStacks", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "arn:aws:cloudformation:*:*:stack/*" }, { "Sid": "AllowSsmParameterActions", "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:*:ssm:*:*:parameter/something-important" } ] }

所有 AFC 自訂原則都需要此AllowCloudFormationActionsOnStacks陳述式; AWS CloudFormation 使用此角色建立堆疊執行個體,因此需要對堆疊執行 AWS CloudFormation 動作的權限。此AllowSsmParameterActions區段專屬於要啟用的範本。

解決權限問題

當您啟用具有受限原則的藍圖時,您可能會發現沒有足夠的權限無法啟用藍圖。若要解決這些問題,請修訂您的政策文件,並更新成員帳戶的藍圖偏好設定,以使用更正後的原則。若要檢查原則是否足以啟用藍圖,請確定已授與 AWS CloudFormation 權限,並且您可以直接使用該角色建立堆疊。

建立以 Terraform 為基礎的 Service Catalog 產品所需的其他權限

當您使用 AFC 的 Terraform 設定檔建立 AWS Service Catalog 外部產品時,除了建立範本中定義的資源所 AWS Service Catalog 需的許可之外,還需要將某些許可新增至您的 AFC 自訂 IAM 政策。如果您選擇預設的完整管理員原則,則不需要新增這些額外權限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" }, { "Action": "s3:GetObject", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } } ] }

如需有關在中使用外部產品類型建立 Terraform 產品的詳細資訊 AWS Service Catalog,請參閱《Service Catalog 管理員指南》中的步驟 5:建立啟動角色