ADDF 內建安全功能 - AWS 方案指引

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

ADDF 內建安全功能

自動駕駛資料架構 (ADDF) 具有各種內建安全功能。依預設,這些功能旨在協助您設定安全架構,並協助您的組織符合常見企業安全要求。

以下是內建安全功能:

ADDF 模組程式碼的最低權限

最低權限是授予執行任務所需的最低許可的安全最佳實務。如需詳細資訊,請參閱套用最低權限許可。ADDF 提供的模組在其程式碼和部署的資源中嚴格遵循最低權限原則,如下所示:

  • 為 ADDF 模組產生的所有 AWS Identity and Access Management (IAM) 政策具有使用案例所需的最低許可。 

  • AWS 服務 根據最低權限原則設定和部署。ADDF 提供的模組僅使用特定使用案例所需的服務和服務功能。

基礎設施即程式碼

ADDF 作為架構,旨在將 ADDF 模組部署為基礎設施即程式碼 (IaC)。IaC 消除了手動部署程序,有助於防止手動程序可能導致的錯誤和組態錯誤。 

ADDF 旨在使用任何常見的 IaC 架構來協調和部署模組。這包括但不限於: 

您可以使用不同的 IaC 架構編寫不同的模組,然後使用 ADDF 進行部署。

ADDF 模組使用的預設 IaC 架構為 AWS CDK。 AWS CDK 是高階物件導向抽象,可讓您以必要方式定義 AWS 資源。 預設情況下, AWS CDK 已針對各種服務和案例強制執行安全最佳實務。使用 AWS CDK可降低安全錯誤設定的風險。

IaC 的自動安全檢查

開放原始碼 cdk-nag 公用程式 (GitHub) 已整合到 ADDF。此公用程式會自動檢查以 為基礎的 ADDF 模組, AWS CDK 以遵守一般和安全最佳實務。cdk-nag 公用程式使用規則和規則套件來偵測和報告違反最佳實務的程式碼。如需有關規則和完整清單的詳細資訊,請參閱 cdk-nag 規則 (GitHub)。

AWS CDK 部署角色的自訂最低權限政策

ADDF 廣泛使用 AWS CDK v2。您必須將所有 ADDF 引導 AWS 帳戶 至 AWS CDK。如需詳細資訊,請參閱引導 (AWS CDK 文件)。

根據預設, 會將寬鬆 AdministratorAccess AWS 受管政策 AWS CDK 指派給在引導帳戶中建立的 AWS CDK 部署角色。此角色的完整名稱為 cdk-[CDK_QUALIFIER]-cfn-exec-role-[AWS_ACCOUNT_ID]-[REGION]。 AWS CDK 使用此角色將資源部署到 AWS 帳戶 作為部署程序一部分的引導中 AWS CDK 。

根據您組織的安全要求,AdministratorAccess 政策可能過於寬鬆。作為 AWS CDK 引導程序的的一部分,您可以根據自己的需要自訂政策和許可。您可以透過使用 --cloudformation-execution-policies 參數並使用新定義的政策重新引導帳戶來變更政策。如需詳細資訊,請參閱自訂引導 (AWS CDK 文件)。

注意

雖然此安全功能不是 ADDF 特定的,但本節中列出了它,因為它可以提高 ADDF 部署的整體安全性。

模組 deployspec 檔案的最低權限政策

每個模組都包含稱為 deployspec.yaml 的部署規格檔案。此檔案定義了模組的部署指示。CodeSeeder 使用它來部署目標帳戶中定義的模組 AWS CodeBuild。CodeSeeder 會將預設服務角色指派給 CodeBuild 以部署資源,如部署規格檔案中指示。此服務角色根據最低權限原則設計。它包含部署 AWS CDK 應用程式所需的所有必要許可,因為所有 ADDF 提供的模組都是建立為 AWS CDK 應用程式。

不過,如果您需要在 之外執行任何階段命令 AWS CDK,則需要建立自訂 IAM 政策,而不是使用 CodeBuild 的預設服務角色。例如,如果您使用 Terraform AWS CDK等以外的 IaC 部署架構,則需要建立 IAM 政策,以授予該特定架構足夠的許可來運作。另一個需要專用 IAM 政策的案例是當您在 installbuild、 或 post_build階段命令 AWS 服務 中包含對其他 的 direct AWS Command Line Interface (AWS CLI) pre_build呼叫時。例如,如果您的模組包含用於將檔案上傳至 S3 儲存貯體的 Amazon Simple Storage Service (Amazon S3) 命令,則您需要自訂政策。自訂 IAM 政策可為 AWS CDK 部署外的任何 AWS 命令提供精細的控制。如需自訂 IAM 政策範例,請參閱 ModuleStack (SeedFarmer 文件)。為 ADDF 模組建立自訂 IAM 政策時,確保套用最低權限許可。

資料加密

ADDF 會儲存和處理潛在的敏感資料。為了協助保護此資料,SeedFarmer、CodeSeeder 和 ADDF 提供的模組會針對所有使用的模組加密靜態和傳輸中的資料 AWS 服務 (除非demo-only資料夾的模組另有明確說明)。

使用 Secrets Manager 的憑證儲存

ADDF 會處理不同服務的各種機密,例如 Docker Hub、JupyterHub 和 Amazon Redshift。ADDF 使用 AWS Secrets Manager 儲存任何與 ADDF 相關的機密。這有助於您透過原始程式碼移除敏感資料。

Secrets Manager 機密僅儲存在目標帳戶中,以便該帳戶正常運作。依預設,工具鏈帳戶不包含任何機密。

SeedFarmer 和 CodeSeeder 的安全審查

SeedFarmerCodeSeeder (GitHub 儲存庫) 用於部署 ADDF 及其 ADDF 模組。這些開放原始碼專案會進行與 ADDF 相同的定期 AWS 內部安全審查程序,如中所述ADDF 安全審查程序

CodeSeeder AWS CodeBuild 角色的許可界限支援

IAM 許可界限界是一種常見安全機制,用於定義身分型政策可以授予 IAM 實體的許可上限。SeedFarmer 和 CodeSeeder 支援每個目標帳戶的 IAM 許可界限連接。許可界限限制 CodeSeeder 部署模組時 CodeBuild 使用的任何服務角色的許可上限。IAM 許可界限必須由安全團隊在 ADDF 外部建立。IAM 許可界限政策連接被接受為 ADDF 部署清單檔案 deployment.yaml 內的屬性。如需詳細資訊,請參閱許可界限支援 (SeedFarmer 文件)。

工作流程如下所示:

  1. 您的安全團隊根據您的安全要求定義並建立 IAM 許可界限。IAM 許可界限必須在每個 ADDF 中個別建立 AWS 帳戶。輸出是許可界限政策 Amazon Resource Name (ARN) 清單。

  2. 安全團隊會與您的 ADDF 開發人員團隊共用政策 ARN 清單。

  3. ADDF 開發人員團隊會將政策 ARN 清單整合到清單檔案中。如需此整合的範例,請參閱 sample-permissionboundary.yaml (GitHub) 和部署清單檔案 (SeedFarmer 文件)。

  4. 成功部署後,許可界限將附接至 CodeBuild 用於部署模組的所有服務角色。

  5. 安全團隊監控是否視需要已套用許可界限。

AWS 多帳戶架構

如 AWS Well-Architected Framework 的安全支柱所定義,根據組織的需求 AWS 帳戶,將資源和工作負載分成多個是最佳實務。這是因為 AWS 帳戶 充當隔離界限。如需詳細資訊,請參閱 AWS 帳戶 管理和區隔。此概念的實作稱為多帳戶架構。與單一帳戶架構相比,正確設計的 AWS 多帳戶架構可提供工作負載分類,並減少發生安全漏洞時的影響範圍。

ADDF 原生支援 AWS 多帳戶架構。您可以 AWS 帳戶 視需要將 ADDF 模組分散到組織的安全和separation-of-duties要求。您可以將 ADDF 部署到單一 AWS 帳戶中,結合工具鏈和目標帳戶功能。或者,您可以為 ADDF 模組或模組群組建立個別目標帳戶。

您需要考慮的唯一限制是 ADDF 模組代表每個模組部署的最小單位 AWS 帳戶。

對於生產環境,建議您使用由一個工具鏈帳戶和至少一個目標帳戶組成的多帳戶架構。如需詳細資訊,請參閱ADDF 架構

多帳戶部署的最低權限許可

如果您使用多帳戶架構,SeedFarmer 需要存取目標帳戶來執行下列三個動作:

  1. 將 ADDF 模組中繼資料寫入工具鏈帳戶和目標帳戶。

  2. 從工具鏈帳戶和目標帳戶讀取目前 ADDF 模組中繼資料。

  3. 在目標帳戶中啟動 AWS CodeBuild 任務,以部署或更新模組。

下圖顯示跨帳戶關係,包括擔任 ADDF 特定 AWS Identity and Access Management (IAM) 角色的操作。

AWS 多帳戶架構中的 IAM 角色,具有工具鏈帳戶和目標帳戶。

這些跨帳戶操作透過使用明確定義的 assume-role 操作來實現。

  • ADDF 工具鏈 IAM 角色部署在工具鏈帳戶中。SeedFarmer 擔任此角色。此角色有權執行 iam:AssumeRole 動作,且可以在每個目標帳戶中擔任 ADDF 部署 IAM 角色。此外,ADDF 工具鏈 IAM 角色可以執行本機 AWS Systems Manager 參數存放區操作。

  • ADDF 部署 IAM 角色會部署在每個目標帳戶中。只能透過使用 ADDF 工具鏈 IAM 角色從工具鏈帳戶擔任此角色。此角色具有執行本機 AWS Systems Manager 參數存放區操作的許可,並具有透過 CodeSeeder 啟動和描述 CodeBuild 任務的執行 AWS CodeBuild 動作的許可。 CodeSeeder

這些 ADDF 特定的 IAM 角色是作為 ADDF 引導程序的一部分建立的。如需詳細資訊,請參閱 ADDF 部署指南 AWS 帳戶(GitHub) 中的 Bootstrap(s)。 GitHub

所有跨帳戶許可都根據最低權限原則設定。如果一個目標帳戶遭入侵,對其他 ADDF AWS 帳戶的影響很小或沒有影響。

若是 ADDF 的單一帳戶架構,角色關係保持不變。其只是折疊成單一 AWS 帳戶。