

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

# ADDF 安全設定和操作
<a name="secure-setup-and-operation"></a>

自動駕駛資料架構 (ADDF) 應視為自訂軟體，需要組織中的專用 DevOps 和安全團隊進行持續維護和保養。本節說明可協助您在 ADDF 整個生命週期中設定和操作的與安全相關的常見任務。

本節包含下列任務：
+ [定義您的 ADDF 架構](#defining-your-addf-architecture)
+ [初始 設定](#initial-setup)
+ [自訂 ADDF 部署架構程式碼](#customizing-the-addf-deployment-framework-code)
+ [在 ADDF 中編寫自訂模組](#writing-custom-modules-in-addf)
+ [重複發生的 ADDF 部署](#reoccurring-addf-deployments)
+ [重複發生的安全稽核](#reoccurring-security-audits)
+ [ADDF 更新](#addf-updates)
+ [解除委任](#decommissioning)

## 定義您的 ADDF 架構
<a name="defining-your-addf-architecture"></a>

ADDF 執行個體與其部署所在的 AWS 帳戶 環境一樣安全。此 AWS 帳戶 環境的設計必須符合特定使用案例的安全性和操作需求。例如，在概念驗證 (PoC) 環境中設定 ADDF 執行個體的安全和操作相關任務及考量與在生產環境中設定 ADDF 的任務及考量事項不同。

### 在 PoC 環境中執行 ADDF
<a name="running-addf-in-a-poc-environment"></a>

如果您打算在 PoC 環境中使用 ADDF，建議您為 ADDF 建立不包含任何其他工作負載 AWS 帳戶 的專用 。這有助於在您探索 ADDF 及其功能時確保您的帳戶安全。以下是此方法的優點： 
+ 如果發生嚴重的 ADDF 組態錯誤，則不會對其他工作負載造成不利影響。
+ 不存在可能對 ADDF 設定造成不利影響的任何其他工作負載組態錯誤的風險。

即使對於 PoC 環境，我們仍然建議您盡可能遵循 [在生產環境中執行 ADDF](#running-addf-in-a-production-environment) 中列出的最佳實務。

### 在生產環境中執行 ADDF
<a name="running-addf-in-a-production-environment"></a>

如果您打算在企業生產環境中使用 ADDF，我們強烈建議考慮您組織的安全最佳實務並相應地實作 ADDF。除了您組織的安全最佳實務之外，我們建議您實作下列項目：
+ **建立一個長期受認可的 ADDF DevOps 團隊** – ADDF 需要被視為自訂軟體。它需要由專用 DevOps 團隊進行持續的維護和保養。開始在生產環境中執行 ADDF 之前，應定義一個具有足夠規模和能力的 DevOps 團隊，並承諾提供完整的資源，直到 ADDF 部署的生命週期結束。
+ **使用多帳戶架構** – 每個 ADDF 執行個體都應部署在自己的專用 AWS 多帳戶環境中，沒有任何其他不相關的工作負載。如[AWS 帳戶管理和分離](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/aws-account-management-and-separation.html) (AWS Well-Architected Framework) 所定義 AWS 帳戶，根據組織的需求，將資源和工作負載分成多個 是最佳實務。這是因為 AWS 帳戶 充當隔離界限。與單一帳戶架構相比，正確設計的 AWS 多帳戶架構可提供工作負載分類，並減少發生安全漏洞時的影響範圍。使用多帳戶架構還可協助您的帳戶保持在 [AWS 服務 配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)內。視需要將您的 ADDF 模組分佈在盡可能多的 AWS 帳戶 上，以符合您組織的安全和職責分離要求。
+ **部署多個 ADDF 執行個體** – 視需要設定任意多個獨立的 ADDF 執行個體，以根據您組織的軟體開發程序正確開發、測試和部署 ADDF 模組。設定多個 ADDF 執行個體時，您可以使用下列其中一種方法：
  + **不同 AWS 多帳戶環境中的多個 ADDF 執行個體 **– 您可以使用個別 AWS 帳戶 來隔離不同的 ADDF 執行個體。例如，如果您的組織具有專用的開發、測試和生產階段，您可以為每個階段建立獨立的 ADDF 執行個體和專用帳戶。這提供了許多好處，例如降低跨階段傳播任何錯誤的風險、協助您實作核准程序以及限制使用者僅存取特定環境。下列影像顯示部署在個別多帳戶環境中的兩個 ADDF 執行個體。  
![在具有 mult-account 架構的個別 AWS 環境中的兩個 ADDF 執行個體](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/addf-security-and-operations/images/A_multi-addf-multi-account.png)
  + **相同 AWS 多帳戶環境中的多個 ADDF 執行個體 **– 您可以建立共用相同 AWS 多帳戶環境的多個 ADDF 執行個體。這有效地在相同 AWS 帳戶中建立了獨立的分支。例如，如果不同的開發人員平行工作，開發人員可以在相同的 AWS 帳戶中建立專用 ADDF 執行個體。這有助於開發人員在獨立的分支中工作，以進行開發和測試。如果您使用此方法，對於每個 ADDF 執行個體，您的 ADDF 資源必須具有唯一的資源名稱。依預設，ADDF 預先提供的模組支援此功能。只要不超過 [AWS 服務 配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)，您就可以使用此方法。下列影像顯示部署在共用多帳戶環境中的兩個 ADDF 執行個體。  
![在相同 AWS 多帳戶環境中部署的兩個 ADDF 執行個體。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/addf-security-and-operations/images/C_multi-instance-multi-account-shared.png)
  + **相同 AWS 單一帳戶環境中的多個 ADDF 執行個體** - 此架構與上一個範例非常相似。不同之處在於，多個 ADDF 執行個體部署在單一帳戶環境中，而非多帳戶環境中。此架構可以適合非常簡單的 ADDF 使用案例，這些使用案例的範圍非常有限，且多個開發人員同時在不同的分支上工作。  
![在相同 AWS 單一帳戶環境中部署的兩個 ADDF 執行個體。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/addf-security-and-operations/images/B_multi-addf-single-account.png)

  由於 SeedFarmer 是控制 ADDF 執行個體部署的單一工具，因此您可以建置適合您組織的部署策略和 CI/CD 程序的任何環境和帳戶架構。
+ **根據組織的安全需求自訂 AWS Cloud Development Kit (AWS CDK) 引導程序** – 預設會在引導程序期間 AWS CDK 指派 [AdministratorAccess](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator) AWS 受管政策。此政策授予完整管理權限。如果此政策對於您組織的安全要求過於寬鬆，您可以自訂套用的政策。如需詳細資訊，請參閱[AWS CDK 部署角色的自訂最低權限政策](built-in-security-features.md#custom-least-privilege-policy-for-the-aws-cdk-deployment-role)。
+ **在 IAM 中設定存取權時遵循最佳實務** – 建立結構化 AWS Identity and Access Management (IAM) 存取解決方案，以允許使用者存取 ADDF AWS 帳戶。ADDF 架構的設計遵循最低權限原則。您的 IAM 存取模式也應遵循最低權限原則，應符合您組織的要求，並應遵循 [IAM 中的安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (IAM 文件)。
+ **根據您組織的最佳實務設定聯網** – ADDF 包括選用 聯網 AWS CloudFormation 堆疊，用於建立基本的公有或私有虛擬私有雲端 (VPC)。視您組織的組態而定，此 VPC 可能會直接向網際網路公開資源。我們建議您遵循組織的聯絡最佳實務，並建立自訂安全性強化的網路模組。
+ **在 AWS 帳戶 層級部署安全預防、偵測和緩解措施** – AWS 提供各種安全服務，例如 Amazon GuardDuty AWS Security Hub CSPM、Amazon Detective 和 AWS Config。在 ADDF 中啟用這些服務， AWS 帳戶 並整合組織的安全預防、偵測、緩解和事件處理程序。我們建議您遵循[安全、身分與合規的最佳實務](https://aws.amazon.com/architecture/security-identity-compliance/) (AWS 架構中心) 以及該服務文件中包含的任何服務特定的建議。如需詳細資訊，請參閱 [AWS 安全文件](https://docs.aws.amazon.com/security/)。

ADDF 不處理其中任何主題，因為實作和組態詳細資訊在很大程度上取決於組織特定的要求和程序。相反，處理這些主題是您的組織的核心責任。通常，管理您的 [AWS 登陸區域](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-aws-environment/understanding-landing-zones.html)的團隊可協助您規劃和實作 ADDF 環境。

## 初始 設定
<a name="initial-setup"></a>

根據 [ADDF Deployment Guide](https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.md) (GitHub) 設定 ADDF。任何部署的起點是 [autonomous-driving-data-framework](https://github.com/awslabs/autonomous-driving-data-framework) Git Hub 儲存庫中的 `/manifest` 資料夾。`/manifest/example-dev` 資料夾包含用於示範用途的範例部署。使用此範例作為設計您自己的部署的起點。在該目錄中，有一個稱為 **deployment.yaml** 的 ADDF 部署清單檔案。它包含 SeedFarmer 管理、部署或刪除 ADDF 及其在 AWS 雲端中的資源的所有資訊。您可以在專用檔案中建立 ADDF 模組的群組。**core-modules.yaml** 是核心模組群組的範例，它包含 ADDF 提供的所有核心模組。總而言之，**deployment.yaml** 檔案包含將部署至其目標帳戶的群組和模組的所有參考，並指定部署順序。

為了獲得安全且合規的組態，特別是在不用於概念驗證的環境中，我們建議您檢閱要部署的每個模組的原始程式碼。根據安全性強化的最佳實務，您應僅部署預期使用案例所需的模組。

**注意**  
`modules/demo-only/` 資料夾中的 ADDF 模組未經過安全性強化，不應部署在生產環境或任何具有敏感或受保護資料的環境中。包含這些模組是為了展示系統功能，您可以用其作為建立您自己的自訂、安全性強化模組的基礎。

## 自訂 ADDF 部署架構程式碼
<a name="customizing-the-addf-deployment-framework-code"></a>

ADDF 部署架構及其協同運作和部署邏輯可完全自訂，以符合任何需求。但是，我們建議您不要進行自訂或盡量減少變更，原因如下：
+ **保持上游相容性** – 上游相容性可讓您更輕鬆地更新 ADDF 以取得最新功能和安全更新。變更架構會破壞與 SeedFarmer、CodeSeeder 和任何 ADDF 核心模組的原生向後相容性。
+ **安全後果** – 變更 ADDF 部署架構可能是一項複雜任務，可能會產生非預期的安全後果。在最壞的情況下，架構變更可能會造成安全漏洞。

如果可能，建置和自訂您自己的模組程式碼，而不是修改 ADDF 部署架構和 ADDF 核心模組程式碼。

**注意**  
如果您認為 ADDF 部署架構的特定部分需要改進或進一步強化安全性，請透過提取請求將您的變更貢獻給 ADDF 儲存庫。如需詳細資訊，請參閱[開放原始碼安全審查和貢獻](addf-security-review-process.md#open-source-sec-reviews)。

## 在 ADDF 中編寫自訂模組
<a name="writing-custom-modules-in-addf"></a>

建立新的 ADDF 模組或擴充現有的模組是 ADDF 的核心概念。在建立或自訂模組時，我們建議您遵循一般 AWS 安全最佳實務和您組織的安全編碼最佳實務。此外，我們建議您根據您組織的安全要求進行初始和定期的內部或外部技術安全審查，以進一步降低安全問題的風險。

## 重複發生的 ADDF 部署
<a name="reoccurring-addf-deployments"></a>

部署 ADDF 及其模組，如 [ADDF Deployment Guide](https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.md) (GitHub) 所述。為了支援可在目標帳戶中新增、更新或移除資源的重複發生的 ADDF 部署，SeedFarmer 使用儲存在工具鍊和目標帳戶的 Parameter Store 中的 MD5 雜湊，將目前部署的基礎設施與本機程式碼庫的清單檔案中定義的基礎設施進行比較。

此方法遵循 GitOps 範例，其中您的來源儲存庫 (您操作 SeedFarmer 的本機程式碼庫) 是事實來源，其中明確聲明的基礎設施是您的部署的所需結果。如需有關 GitOps 的詳細資訊，請參閱[什麼是 GitOps](https://about.gitlab.com/topics/gitops/) (GitLab 網站)。

## 重複發生的安全稽核
<a name="reoccurring-security-audits"></a>

就像您組織中的任何其他軟體一樣，將 ADDF 和您的自訂 ADDF 模組程式碼整合到安全風險管理、安全審查和安全稽核週期中。

## ADDF 更新
<a name="addf-updates"></a>

ADDF 會定期接收更新，作為持續開發工作的一部分。這包括功能更新以及與安全相關的改進和修正。我們建議您定期檢查是否有新的架構版本，並及時套用更新。如需詳細資訊，請參閱[更新 ADDF 的步驟](https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.md#steps-to-update-addf-deployment-when-there-is-a-new-change-from-addf-team-if-a-new-release-is-published) (ADDF 文件)。

## 解除委任
<a name="decommissioning"></a>

如果不再需要 ADDF，請從您的 AWS 帳戶中刪除 ADDF 及其所有相關資源。任何無人值守和未使用的基礎設施都會產生不必要的成本並帶來潛在的安全風險。如需詳細資訊，請參閱[銷毀 ADDF 的步驟](https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.md#steps-to-destroy-addf) (ADDF 文件)。