設定以進行自訂 - AWS Control Tower

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

設定以進行自訂

接下來的章節提供了為自訂程序設定 Account Factory 的步驟。我們建議您先為 Hub 帳戶設定委派管理員,然後再開始執行這些步驟。

Summary
  • 步驟 1. 建立必要的角色。建立 IAM 角色,授予 AWS Control Tower 存取 (Hub) 帳戶的權限,該帳戶存放 Service Catalog 產品 (也稱為藍圖)。

  • 步驟 2. 建立 AWS Service Catalog 產品。建立基準自訂帳戶所 AWS Service Catalog 需的產品 (也稱為「藍圖產品」)。

  • 步驟 3. 檢閱您的自訂藍圖。檢查您建立的 AWS Service Catalog 產品 (藍圖)。

  • 步驟 4. 呼叫您的藍圖以建立自訂帳戶。在建立帳戶時,在 AWS Control Tower 主控台的 Account Factory 的適當欄位中輸入藍圖產品資訊和角色資訊。

步驟 1. 建立必要的角色

在開始自訂帳戶之前,您必須設定包含 AWS Control Tower 和您的中樞帳戶之間信任關係的角色。假設此角色時,此角色會授予 AWS Control Tower 管理中樞帳戶的存取權。角色必須命名AWSControlTowerBlueprintAccess

AWS Control Tower 擔任此角色代表您建立 Portfolio 資源 AWS Service Catalog,然後將藍圖作為 Service Catalog 產品新增至此產品組合,然後在帳戶佈建期間與您的成員帳戶共用此產品組合和您的藍圖。

您將建立AWSControlTowerBlueprintAccess角色,如以下各節所述。

導覽至 IAM 主控台以設定所需角色。

在已註冊的 AWS Control Tower 帳戶中設定角色
  1. 在 AWS Control Tower 管理帳戶中聯合或以主體身分登入。

  2. 從管理帳戶中的聯合主體中,假設角色或將角色切換為您選擇作為藍圖中樞帳戶的已註冊 AWS Control Tower 帳戶中的角色。AWSControlTowerExecution

  3. 從已註冊 AWS Control Tower 帳戶中的AWSControlTowerBlueprintAccess角色建立具有適當許可和信任關係的角色。AWSControlTowerExecution

注意

為了遵守 AWS 最佳做法指引,建立角色後立即登出AWSControlTowerExecution角色非常重要。AWSControlTowerBlueprintAccess

為防止資源發生意外變更,此AWSControlTowerExecution角色僅供 AWS Control Tower 使用。

如果您的藍圖中樞帳戶未在 AWS Control Tower 中註冊,則該AWSControlTowerExecution角色不會存在於帳戶中,而且在繼續設定角色之前不需要假設AWSControlTowerBlueprintAccess角色。

若要在取消註冊的成員帳戶中設定角色
  1. 透過您偏好的方法,聯合或以您想要指定為 Hub 帳戶的帳戶中的主體身分登入。

  2. 以帳戶中的主參與者身分登入時,請建立具有適當權限和信任關係的AWSControlTowerBlueprintAccess角色。

必須將AWSControlTowerBlueprintAccess角色設定為將信任授與兩個主體:

  • 在 AWS Control Tower 管理帳戶中執行 AWS Control Tower 的主體 (使用者)。

  • AWS Control Tower 管理帳戶AWSControlTowerAdmin中指名的角色。

以下是信任政策範例,類似於您角色需要包含的信任政策。此原則示範授與最低權限存取權的最佳作法。當您制定自己的政策時,請使YourManagementAccountId用 AWS Control Tower 管理帳戶的實際會員 ID 取代該術語,並以管理帳戶YourControlTowerUserRole的 IAM 角色識別碼取代該術語。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::YourManagementAccountId:role/service-role/AWSControlTowerAdmin", "arn:aws:iam::YourManagementAccountId:role/YourControlTowerUserRole" ] }, "Action": "sts:AssumeRole" } ] }

必要的權限原則

AWS Control Tower 要求AWSServiceCatalogAdminFullAccess必須將具名的受管政策附加到AWSControlTowerBlueprintAccess角色上。此政策提供許可,以 AWS Service Catalog 尋找何時允許 AWS Control Tower 管理您的產品組合和 AWS Service Catalog 產品資源。您可以在 IAM 主控台中建立角色時附加此政策。

可能需要其他權限
  • 如果您將藍圖存放在 Amazon S3,AWS Control Tower 也需要該AWSControlTowerBlueprintAccess角色的AmazonS3ReadOnlyAccess許可政策。

  • 如果您不使用預設管理政策,則 AWS Service Catalog Terraform 類型的產品會要求您在 AFC 自訂 IAM 政策中新增一些其他許可。除了建立您在地形範本中定義的資源所需的權限之外,還需要這些權限。

步驟 2. 建立產 AWS Service Catalog 品

若要建立 AWS Service Catalog 產品,請遵循《AWS Service Catalog 管理員指南》〈建立產品〉中的步驟。建立產品時,您會將帳戶藍圖新增為範 AWS Service Catalog 本。

重要

由於 Terraform 授權 HashiCorp的更新,將對 T erraform 開放原始碼產品和佈建產品的支援 AWS Service Catalog 變更為新的產品類型 (稱為外部)。若要深入瞭解此變更如何影響 AFC,包括如何將現有帳戶藍圖更新為外部產品類型,請參閱轉換為外部產品類型

建立藍圖的步驟摘要
  • 建立或下載將成為您帳戶藍圖的 AWS CloudFormation 範本或地形 tar.gz 設定檔。本節稍後會提供一些範本範例。

  • 登入您儲存 Account Factory 藍圖的 AWS 帳戶 位置 (有時稱為 Hub 帳戶)。

  • 導覽至主 AWS Service Catalog 控台。選擇 [產品清單],然後選擇 [上傳新產品]。

  • 產品詳細資料窗格中,輸入藍圖產品的詳細資料,例如名稱和描述。

  • 選取「使用範本檔案」,然後選取「選擇檔案」。選取或貼上您已開發或下載以用作藍圖的範本或設定檔。

  • 選擇主控台頁面底部的 [建立產品]。

您可以從 AWS Service Catalog 參考架構存儲庫下載 AWS CloudFormation 模板。該儲存庫中的一個範例有助於為您的資源設定備份計畫

這是一個名為 B est Pets 的虛構公司的示例模板。它有助於建立到他們的寵物數據庫的連接。

Resources: ConnectionStringGeneratorLambdaRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - "sts:AssumeRole" ConnectionStringGeneratorLambda: Type: AWS::Lambda::Function Properties: FunctionName: !Join ['-', ['ConnectionStringGenerator', !Select [4, !Split ['-', !Select [2, !Split ['/', !Ref AWS::StackId]]]]]] Description: Retrieves the connection string for this account to access the Pet Database Role: !GetAtt ConnectionStringGeneratorLambdaRole.Arn Runtime: nodejs16.x Handler: index.handler Timeout: 5 Code: ZipFile: > const response = require("cfn-response"); exports.handler = function (event, context) { const awsAccountId = context.invokedFunctionArn.split(":")[4] const connectionString= "fake connection string that's specific to account " + awsAccountId; const responseData = { Value: connectionString, } response.send(event, context, response.SUCCESS, responseData); return connectionString; }; ConnectionString: Type: Custom::ConnectionStringGenerator Properties: ServiceToken: !GetAtt ConnectionStringGeneratorLambda.Arn PetDatabaseConnectionString: DependsOn: ConnectionString # For example purposes we're using SSM parameter store. # In your template, use secure alternatives to store # sensitive values such as connection strings. Type: AWS::SSM::Parameter Properties: Name: pet-database-connection-string Description: Connection information for the BestPets pet database Type: String Value: !GetAtt ConnectionString.Value

步驟 3。檢閱您的自訂藍圖

您可以在 AWS Service Catalog 主控台中檢視藍圖。如需詳細資訊,請參閱《Service Catalog 管理員指南》中的〈管理產品〉。

步驟 4. 呼叫您的藍圖以建立自訂帳戶

在 AWS Control Tower 主控台中按照建立帳戶工作流程進行操作時,您會看到一個選擇性部分,您可以在其中輸入要用於自訂帳戶之藍圖的相關資訊。

注意

您必須先設定自訂中樞帳戶並新增至少一個藍圖 (Service Catalog 產品),然後才能將該資訊輸入 AWS Control Tower 主控台並開始佈建自訂帳戶。

在 AWS Control Tower 主控台中建立或更新自訂帳戶。
  1. 輸入包含藍圖之帳戶的帳戶 ID。

  2. 從該帳戶中,選取現有的 Service Catalog 產品 (現有藍圖)。

  3. 如果您有多個版本,請選取藍圖 (Service Catalog 產品) 的正確版本。

  4. (選擇性) 您可以在程序中此時新增或變更藍圖佈建原則。藍圖佈建政策以 JSON 撰寫並連結至 IAM 角色,因此可佈建藍圖範本中指定的資源。AWS Control Tower 會在成員帳戶中建立此角色,讓 Service Catalog 可以使用 AWS CloudFormation 堆疊集部署資源。角色已命名 AWSControlTower-BlueprintExecution-bp-xxxx。依預設,此處會套用AdministratorAccess原則。

  5. 根據此藍圖選擇您要在其中部署帳戶的 AWS 區域 或區域。

  6. 如果藍圖包含參數,則可以在 AWS Control Tower 工作流程的其他欄位中輸入參數值。其他值可能包括: GitHub 存放庫名稱、分 GitHub 支、Amazon ECS 叢集名稱以及儲存庫擁有者的 GitHub 身分。

  7. 如果您的 Hub 帳戶或藍圖尚未準備就緒,您可以在稍後按照帳戶更新程序自訂帳戶。

如需詳細資訊,請參閱從藍圖建立自訂帳戶