針對使用 Azure AD 的 AWS 多帳戶環境自動化 SAML 2.0 聯合 - AWS Prescriptive Guidance

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

針對使用 Azure AD 的 AWS 多帳戶環境自動化 SAML 2.0 聯合

由亞當史派克 (AWS) 創建

環境:生產

技術:安全性、身分識別、法規遵循;基礎架構;管理與治理;混合雲

工作負載:微軟

AWS 服務:AWS CloudFormation;AWS Identity and Access Management;AWS Organizations;AWS Secrets Manager;AWS Control Tower

Summary

透過 AWS AWS Control Tower 或 AWS Organizations 在 Amazon Web Services (AWS) 中操作多帳戶策略的 AWS Organizations,可能需要使用 Microsoft Azure 使用中目錄 (Azure AD) 單一登入 (SSO),才能聯合到 AWS 管理主控台。在情況下AWS Single Sign-On可能不符合組織的需求,同盟是藉由使用 Azure AD 內名為AWS 單一帳戶存取,這是針對每個 AWS 帳戶在 Azure AD 中部署的。 

如所述有關將 Azure 廣告 SSO 與 AWS 整合的微軟教程,則必須在每個帳戶中使用 AWS Identity and Access Management (IAM) 使用者設定每個整合帳戶的程式設計存取。Azure AD 使用 IAM 使用者擷取 IAM 角色以與 Azure AD 同步處理。網域管理員將這些同步的角色對應到 Azure AD 內的使用者群組,讓這些使用者能夠以適當的 IAM 角色聯合到 AWS。 

如果您有多帳戶策略,手動部署整合步驟的程序可能會很麻煩,而且可能會減慢啟用聯合到新 AWS 帳戶的程序。建立每個新 AWS 帳戶時,網域管理員通常依賴雲端管理員建立 IAM 使用者、產生程式化存取金鑰,並以安全的方式將金鑰提供給網域管理員。這通常是手動程序,會延長從帳戶建立的時間,直到使用者可以同盟到帳戶為止。此模式中提供的解決方案透過提供規範指引和自動化來加速此程序,讓網域管理員以最低權限的方式直接取得 IAM 使用者程式化存取金鑰,而不必牽涉第三方。因此,透過改良的程序和自動化來簡化新 AWS 帳戶的聯合設定。

先決條件和限制

先決條件

  • 使用 AWS 控制中心或 AWS Organizations 的 AWS 多帳戶組態

  • 針對 AWS 管理和成員帳戶建立的 Azure AD 企業應用程式 (EA),並使用 EA 中繼資料設定身分提供者 (IdP)

限制

  • 範圍內的帳戶必須是管理帳戶 AWS 組織的成員。

  • 範圍內的所有帳戶必須在 AWS 組織單位 (OU) 內。

Architecture

目標技術堆疊

實作此模式之後,資源會部署到管理帳戶和每個成員帳戶。下表列出這些資源。 

管理帳戶

AWS 資源名稱描述
IAM roleAzure 讀取同盟管理員角色

IAM 角色,其中為 SAML 身分識別提供者 (IdP) 設定的信任原則,只允許組織中成員帳戶的伴隨角色擔任角色。

This IAM role acts as an intermediate role so that users can be configured to federate into the management account with this role and then assume the appropriate role in member accounts.
AWS CloudFormation stack setAzure 讀取同盟堆疊集A stack set that enables you to deploy a stack to all accounts within the organization.
IAM user自動讀取使用者The IAM user to be used by Azure AD SSO to synchronize the roles for federation.
IAM group快速讀取自動群組The IAM group that contains the IAM user 自動讀取使用者.
IAM managed policy阿蘇格蘭植物A policy that allows the iam:ListRoles action on all resources. The policy is attached to the IAM group 快速讀取自動群組 to enable Azure AD to synchronize IAM roles.
AWS Secrets Manager secret access keyAzure 讀取同盟/CFN 使用者秘密存取金鑰The programmatic access keys for the IAM user 自動讀取使用者, which are generated and stored as a secret within Secrets Manager.

成員帳戶

部署到成員帳戶的資源是從堆疊集 (AzureAdFederationStackSet) 已在管理帳戶中設定。

AWS 資源名稱描述
IAM roleAzure 讀取同盟假設

具有信任政策的 IAM 角色,該角色已設定為允許由管理帳戶中建立的伴隨角色擔任。

The role allows access only to get the secret value that is stored in Secrets Manager.
IAM user自動讀取使用者The IAM user to be used by Azure AD SSO to synchronize the roles for federation.
IAM group快速讀取自動群組The IAM group that contains the IAM user 自動讀取使用者.
IAM managed policy阿蘇格蘭植物A policy that allows the iam:ListRoles action on all resources. The policy is attached to the IAM group 快速讀取自動群組 to enable Azure AD to synchronize IAM roles.
Secrets Manager secret access keyAzure 讀取同盟/CFN 使用者秘密存取金鑰The programmatic access keys for the IAM user 自動讀取使用者, which are generated and stored as a secret within Secrets Manager.

目標架構

此解決方案部署使用 AWS CloudFormation 堆疊和堆疊集在所有帳戶中建立聯合元件的目標架構。下圖說明了目標架構。

下圖顯示啟用和設定成員帳戶 IAM 角色同步化的工作流程。

建立成員帳戶 (圖表中的步驟 1) 之後,網域管理員可以依照下列剩餘步驟取得所有成員帳戶的 IAM 使用者程式化存取金鑰:

  • 步驟 2. 使用 IAM 角色同盟至管理帳戶AzureAdFederationAdminRole

  • 步驟 3. 在 AWS 管理主控台中,使用 IAM 角色將角色切換為新成員帳戶AzureAdFederationAssumeRole

  • 步驟 4. 瀏覽至「Secrets Manager」,然後擷取AzureADFederation / CFNUserSecretAccessKey秘密。

  • 步驟 5. 在 Azure 內適當的 AWS 企業應用程式中,使用擷取的秘密設定佈建管理員登入資料。 

Tools

AWS 服務

  • AWS CloudFormation— AWS CloudFormation 可讓您以可預期和重複的方式建立和佈建 AWS 基礎設施部署。

  • IAM— AWS Identity and Access Management (IAM) 可協助您安全地存取 AWS 服務和資源。有了 IAM,即可集中管理使用者、安全登入資料 (例如存取金鑰);此外,您還能獲得許可,進而控制可供使用者存取的 AWS 資源。

  • AWS Organizations— AWS Organizations ccess 是一種帳戶管理服務,可讓您將多個 AWS 帳戶整合到您所建立和集中管理的組織中。

  • AWS Control Tower— AWS Control Tower 提供簡單的方式,讓您可以根據與數以千計企業共同合作下所建立的最佳實務,設定和管理安全、合規且多帳戶的 AWS 環境。

  • AWS Secrets Manager— AWS Secrets Manager 可讓您在資料庫登入資料、API 金鑰和其他機密的整個生命週期進行輪換、管理和擷取。

Code

此模式的來源碼可在 GitHub 上取得,位於AWS Control Tower 自訂儲存庫。原始程式碼包含兩個 CloudFormation 範本 (YAML 檔案),您可以用來部署目標架構。下一節中的史詩和故事提供使用這些範本的詳細說明。

Epics

任務描述所需技能
執行 CloudFormation 範本,以在管理帳戶中建立管理員角色和 IAM 使用者。

在管理帳戶中 CloudFormation 執行名為azuread-fed-management-account.yaml(請參閱GitHub 儲存庫。您需要指定 AWS 組織 ID 和管理帳戶中存在的 SAML 提供者名稱。

CloudFormation
任務描述所需技能
為所有成員帳戶建立 CloudFormation 堆疊集。

在管理帳戶中,使用azuread-fed-member-account.yaml範本 (請參閱GitHub 儲存庫)以使用以下堆棧集部署選項創建一個新的堆棧集。

在組織單位中部署堆疊: 

  • 為將接收此堆疊的成員帳戶指定所有頂層上層 OU。

  • 請確定管理帳戶和所有其他核心帳戶位於其中一個頂層 OU 內。

區域:選擇一個將 IAM 秘密儲存在 Secrets Manager 中的 AWS 區域。

CloudFormation
任務描述所需技能
設定管理帳戶的 Azure AD 同盟同步處理

名為AzureAdFederationAdminRole必須在 Azure AD AWS 企業應用程式內對應,才能讓 Azure AD 管理員為所有成員帳戶設定角色同步處理程序。請遵循下列步驟: 

  1. 取得 IAM 使用者程式設計存取金鑰AzureADAutomationUser,方法是瀏覽至 Secrets Manager,然後存取名為AzureADFederation / CFNUserSecretAccessKey。 

  2. 在管理帳戶的 AWS 企業應用程式中,使用您在上一個步驟中取得的 IAM 使用者程式設計存取金鑰,在佈建區域中設定管理員登入資料、測試連線並啟用佈建。 

  3. 等候同步處理完成。然後對應AzureAdFederationAdminRole角色指派給管理帳戶的 AWS 企業應用程式中適當 Azure AD 管理員使用者,以便讓他們存取管理帳戶角色的權限。 

  4. 測試 AWS 企業應用程式,方法是使用AzureAdFederationAdminRole角色。使用下列程序測試您對其中一個成員帳戶的存取權限:

    1. 選擇切換角色,並提供其中一個成員帳號 ID 和AzureAdFederationAssumeRole角色名稱。 

    2. 切換角色之後,請確定您可以存取名為AzureADFederation / CFNUserSecretAccessKey在 Secrets Manager 中。

Azure AD 系統管理員, Secrets Manager
設定所有成員帳戶的 Azure AD 同盟同步處理。

身為 Azure AD 系統管理員,請先使用AzureAdFederationAdminRole角色。針對每個成員帳戶,請依照下列步驟執行: 

  1. 從管理帳戶中,選擇切換角色,並提供其中一個成員帳號 ID 和AzureAdFederationAssumeRole角色名稱。然後選擇切換角色。 

  2. 在成員帳戶中,存取名為AzureADFederation / CFNUserSecretAccessKey在 Secrets Manager 中。 

  3. 在指定成員帳戶 AWS 企業應用程式中,使用先前取得的 IAM 使用者程式化存取金鑰,在佈建區域中設定 IAM 使用者登入資料、測試連線並啟用佈建。 

  4. 確認所有聯合 IAM 角色都已與指定的 AWS 企業應用程式同步。將角色適當地對應到 Azure AD 使用者。 

為每個成員帳戶重複這些步驟。

Azure AD 系統管理員, Secrets Manager

相關資源