使用 Account Factory Customization (AFC) 自訂帳戶 - AWS Control Tower

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

使用 Account Factory Customization (AFC) 自訂帳戶

當您從 AWS Control Tower 主控台佈建資源 AWS 帳戶 時,AWS Control Tower 可讓您自訂新的和現有的資源。設定 Account Factory 自訂後,AWS Control Tower 會自動化此程序以供未來佈建,因此您不需要維護任何管道。自訂帳戶可在佈建資源後立即使用。

使用藍圖佈建新帳戶

您的自訂帳戶會在 AWS Control Tower 帳戶工廠、透過 AWS CloudFormation 範本或使用 Terraform 佈建。您將定義一個範本,做為自訂帳戶藍圖。您的藍圖說明佈建帳戶時所需的特定資源和組態。由 AWS 合作夥伴建置和管理的預先定義藍圖也可供使用。如需合作夥伴管理藍圖的詳細資訊,請參閱AWS Service Catalog 入門程式庫

將藍圖套用至現有帳戶

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

定義:您的中樞帳戶

您的帳戶藍圖會存放在 中 AWS 帳戶,基於我們的目的,稱為中樞帳戶。藍圖是以 Service Catalog 產品的形式存放。我們稱之為藍圖,以將其與任何其他 Service Catalog 產品區分開來。若要進一步了解如何建立 Service Catalog 產品,請參閱 AWS Service Catalog 管理員指南中的建立產品

注意

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

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

先決條件

開始使用 AWS Control Tower Account Factory 建立自訂帳戶之前,您必須部署 AWS Control Tower 登陸區域環境,而且必須擁有向 AWS Control Tower 註冊的組織單位 (OU),其中將放置新建立的帳戶。

自訂準備
  • 指定中樞帳戶:您可以建立新的帳戶做為中樞帳戶,也可以使用現有的 AWS 帳戶。我們強烈建議您不要使用 AWS Control Tower 管理帳戶做為藍圖中樞帳戶。

  • 新增必要的角色:如果您計劃 AWS 帳戶 註冊 AWS Control Tower 並自訂這些角色,您必須先將AWSControlTowerExecution角色新增至這些帳戶,就像您註冊 AWS Control Tower 的任何其他帳戶一樣。

  • 設定合作夥伴藍圖 (選用):如果您計劃使用具有市場訂閱需求的合作夥伴藍圖,您必須先從 AWS Control Tower 管理帳戶設定這些藍圖,才能將合作夥伴藍圖部署為帳戶原廠自訂藍圖。

注意

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

Account Factory Customizations (AFC) 的考量

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

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

  • IAM AWSControlTowerBlueprintAccess 角色必須以適當的名稱、許可和信任政策建立。

  • 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 約束。

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

當您透過帳戶工廠啟用藍圖時,AWS Control Tower AWS CloudFormation 會指示 代表您建立 StackSet。 AWS CloudFormation 需要存取您的受管帳戶,才能在 StackSet 中建立 AWS CloudFormation 堆疊。雖然 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:建立啟動角色