Amazon 的 Security Hub 控制項 ECS - AWS Security Hub

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

Amazon 的 Security Hub 控制項 ECS

這些 Security Hub 控制項會評估 Amazon Elastic Container Service (Amazon ECS) 服務和資源。

這些控制項可能完全無法使用 AWS 區域。如需詳細資訊,請參閱各區域控制項的可用性

【ECS.1】 Amazon ECS任務定義應具有安全聯網模式和使用者定義。

相關要求: NIST.800-53.r5 AC-2(1) NIST.800-53.r5 AC-3、、 NIST.800-53.r5 AC-3(15)、 NIST.800-53.r5 AC-3(7) NIST.800-53.r5 AC-5、、 NIST.800-53.r5 AC-6

類別:保護 > 安全存取管理

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config 規則:ecs-task-definition-user-for-host-mode-check

排程類型:已觸發變更

參數:

  • SkipInactiveTaskDefinitionstrue(不可自訂)

此控制項會檢查具有主機聯網模式的作用中 Amazon ECS任務定義是否有 privilegeduser容器定義。對於主機網路模式和容器定義為 privileged=false、空白和 或空白的任務定義user=root,控制項會失敗。

此控制項只會評估 Amazon ECS任務定義的最新作用中修訂。

此控制的目的是確保在您執行使用主機網路模式的任務時,刻意定義存取。如果任務定義具有提升的權限,是因為您已選擇該組態。當任務定義已啟用主機聯網,而且您未選擇提升的權限時,此控制項會檢查是否有非預期的權限提升。

修補

如需有關如何更新任務定義的資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的更新任務定義

當您更新任務定義時,不會更新從先前任務定義啟動的執行中任務。若要更新執行中的任務,您必須使用新的任務定義重新部署任務。

【ECS.2】 ECS服務不應自動為其指派公有 IP 地址

相關要求: NIST.800-53.r5 AC-21、 NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3(7) NIST.800-53.r5 AC-4、、 NIST.800-53.r5 AC-4(21) NIST.800-53.r5 AC-6、 NIST.800-53.r5 SC-7、 NIST.800-53.r5 SC-7(11)、 NIST.800-53.r5 SC-7(16)、 NIST.800-53.r5 SC-7(20)、 NIST.800-53.r5 SC-7(21)、 NIST.800-53.r5 SC-7(3)、 NIST.800-53.r5 SC-7(4)、 NIST.800-53.r5 SC-7(9)、PCIDSSv4.0.1/1.4.4

類別:保護 > 安全網路組態 > 資源不可公開存取

嚴重性:

資源類型: AWS::ECS::Service

AWS Config rule:ecs-service-assign-public-ip-disabled(自訂 Security Hub 規則)

排程類型:已觸發變更

參數:

此控制項會檢查 Amazon ECS服務是否設定為自動指派公有 IP 地址。如果 AssignPublicIP是 ,則此控制項會失敗ENABLED。如果 AssignPublicIP是 ,則此控制項會通過DISABLED

公有 IP 地址是可從網際網路連線的 IP 地址。如果您使用公有 IP 地址啟動 Amazon ECS執行個體,則可從網際網路存取 Amazon ECS執行個體。Amazon ECS服務不應公開存取,因為這可能會允許意外存取您的容器應用程式伺服器。

修補

首先,您必須為叢集建立使用 awsvpc 網路模式並FARGATE指定 的任務定義requiresCompatibilities。然後,針對運算組態,選擇啟動類型FARGATE。最後,在網路欄位中,關閉公有 IP 以停用服務的自動公有 IP 指派。

【ECS.3】 ECS任務定義不應共用主機的程序命名空間

相關要求: NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-2

類別:識別 > 資源組態

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config規則:ecs-task-definition-pid-mode-check

排程類型:已觸發變更

參數:

此控制項會檢查 Amazon ECS任務定義是否設定為與其容器共用主機的程序命名空間。如果任務定義與其上執行的容器共用主機的程序命名空間,則控制項會失敗。此控制項只會評估 Amazon ECS任務定義的最新作用中修訂。

程序 ID (PID) 命名空間提供程序之間的分隔。它可防止系統程序出現,並允許PIDs重複使用,包括 PID 1。如果主機PID的命名空間與容器共用,則可讓容器查看主機系統上的所有程序。這可減少主機和容器之間程序層級隔離的優勢。這些情況可能導致未經授權存取主機本身上的程序,包括操縱和終止它們的能力。客戶不應將主機的程序命名空間與其上執行的容器共用。

修補

若要在任務定義pidMode上設定 ,請參閱《Amazon Elastic Container Service 開發人員指南》中的任務定義參數

【ECS.4】 ECS容器應執行為非特殊權限

相關要求: NIST.800-53.r5 AC-2(1) NIST.800-53.r5 AC-3、、 NIST.800-53.r5 AC-3(15)、 NIST.800-53.r5 AC-3(7) NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6

類別:保護 > 安全存取管理 > 根使用者存取限制

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config規則:ecs-containers-nonprivileged

排程類型:已觸發變更

參數:

此控制項會檢查 Amazon ECS Task Definitions 容器定義中的 privileged 參數是否設定為 true。如果此參數等於 ,則控制項會失敗true。此控制項只會評估 Amazon ECS任務定義的最新作用中修訂。

我們建議您從ECS任務定義中移除提升的權限。當權限參數為 時true,容器會在主機容器執行個體上獲得提升的權限 (類似根使用者)。

修補

若要在任務定義上設定 privileged 參數,請參閱《Amazon Elastic Container Service 開發人員指南》中的進階容器定義參數

【ECS.5】 ECS容器應限於對根檔案系統的唯讀存取

相關要求: NIST.800-53.r5 AC-2(1) NIST.800-53.r5 AC-3、、 NIST.800-53.r5 AC-3(15)、 NIST.800-53.r5 AC-3(7) NIST.800-53.r5 AC-5、、 NIST.800-53.r5 AC-6

類別:保護 > 安全存取管理

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config規則:ecs-containers-readonly-access

排程類型:已觸發變更

參數:

此控制項會檢查 Amazon ECS容器是否僅限於對掛載根檔案系統的唯讀存取。如果 readonlyRootFilesystem 參數設定為 false或 參數不存在於任務定義中的容器定義中,則控制項會失敗。此控制項只會評估 Amazon ECS任務定義的最新作用中修訂。

啟用此選項可降低安全攻擊向量,因為容器執行個體的檔案系統除非對其檔案系統資料夾和目錄具有明確的讀寫許可,否則無法竄改或寫入。此控制項也遵循最低權限的原則。

修補

將容器定義限制為對根檔案系統的唯讀存取
  1. 在 開啟 Amazon ECS Classic 主控台https://console.aws.amazon.com/ecs/

  2. 在左側導覽窗格中,選擇任務定義

  3. 選取具有需要更新之容器定義的任務定義。對於每個 ,請完成下列步驟:

    • 從下拉式清單中,選擇使用 建立新修訂JSON

    • 新增 readonlyRootFilesystem 參數,並在任務定義true中的容器定義中將其設定為 。

    • 選擇 Create (建立)。

【ECS.8】 不應將秘密做為容器環境變數傳遞

相關要求: NIST.800-53.r5 CA-9(1)、NIST.800-53.r5 CM-2、PCIDSSv4.0.1/8.6.2

類別:保護 > 安全開發 > 非硬式編碼的登入資料

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config規則:ecs-no-environment-secrets

排程類型:已觸發變更

參數:

  • secretKeys = AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA (不可自訂)

此控制項會檢查容器定義 environment 參數中任何變數的索引鍵值是否包含 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA。如果任何容器定義中的單一環境變數等於 AWS_ACCESS_KEY_ID、 或 AWS_SECRET_ACCESS_KEY,則此控制項會失敗ECS_ENGINE_AUTH_DATA。此控制項不包含從 Amazon S3 等其他位置傳入的環境變數。此控制項只會評估 Amazon ECS任務定義的最新作用中修訂。

AWS Systems Manager 參數存放區可協助您改善組織的安全狀態。我們建議您使用 參數存放區來存放秘密和登入資料,而不是直接將秘密和登入資料傳遞到您的容器執行個體,或將它們硬式編碼到您的程式碼。

修補

若要使用 建立參數SSM,請參閱AWS Systems Manager 《 使用者指南》中的建立 Systems Manager 參數。如需建立指定秘密之任務定義的詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的使用 Secrets Manager 指定敏感資料

【ECS.9】 ECS任務定義應該具有記錄組態

相關要求: NIST.800-53.r5 AC-4(26)、 NIST.800-53.r5 AU-10, NIST.800-53.r5 AU-12, NIST.800-53.r5 AU-2, NIST.800-53.r5 AU-3, NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4), NIST.800-53.r5 CA-7、 NIST.800-53.r5 SC-7(9)、NIST.800-53.r5 SI-7(8)

類別:識別 > 記錄日誌

嚴重性:

資源類型: AWS::ECS::TaskDefinition

ruleAWS Config:ecs-task-definition-log-configuration

排程類型:已觸發變更

參數:

此控制項會檢查最新的作用中 Amazon ECS任務定義是否已指定記錄組態。如果任務定義未定義 logConfiguration 屬性,或至少有一個容器定義中的 值logDriver為 null,則控制項會失敗。

記錄可協助您維護 Amazon 的可靠性、可用性和效能ECS。從任務定義收集資料可提供可見性,這可協助您偵錯程序並尋找錯誤的根本原因。如果您使用的是不需要在ECS任務定義中定義的記錄解決方案 (例如第三方記錄解決方案),您可以在確保日誌正確擷取和交付之後停用此控制項。

修補

若要定義 Amazon ECS任務定義的日誌組態,請參閱《Amazon Elastic Container Service 開發人員指南》中的在任務定義中指定日誌組態

【ECS.10】 ECS Fargate 服務應該在最新的 Fargate 平台版本上執行

相關要求:NIST.800-53.r5 SI-2、NIST.800-53.r5 SI-2(2)、NIST.800-53.r5 SI-2(4)、NIST.800-53.r5 SI-2(5)、PCIDSSv4.0.1/6.3.3

類別:識別 > 漏洞、修補程式和版本管理

嚴重性:

資源類型: AWS::ECS::Service

AWS Config規則:ecs-fargate-latest-platform-version

排程類型:已觸發變更

參數:

  • latestLinuxVersion: 1.4.0 (不可自訂)

  • latestWindowsVersion: 1.0.0 (不可自訂)

此控制項會檢查 Amazon ECS Fargate 服務是否正在執行最新的 Fargate 平台版本。如果平台版本不是最新的,則此控制項會失敗。

AWS Fargate 平台版本是指 Fargate 任務基礎設施的特定執行期環境,這是核心和容器執行期版本的組合。隨著執行期環境的演進,新的平台版本也會發佈。例如,可能會針對核心或作業系統更新、新功能、錯誤修正或安全性更新發行新版本。系統會為 Fargate 任務自動部署安全性更新與修補程式。如果發現影響平台版本的安全問題,請 AWS 修補平台版本。

修補

若要更新現有的服務,包括其平台版本,請參閱《Amazon Elastic Container Service 開發人員指南》中的更新服務

【ECS.12】 ECS叢集應使用 Container Insights

相關要求: NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4), NIST.800-53.r5 CA-7NIST.800-53.r5 SI-2

類別:識別 > 記錄日誌

嚴重性:

資源類型: AWS::ECS::Cluster

AWS Config規則:ecs-container-insights-enabled

排程類型:已觸發變更

參數:

此控制項會檢查ECS叢集是否使用 Container Insights。如果未為叢集設定 Container Insights,則此控制項會失敗。

監控是維護 Amazon ECS叢集可靠性、可用性和效能的重要部分。使用 CloudWatch Container Insights 從您的容器化應用程式和微服務收集、彙總和摘要指標和日誌。 CloudWatch 會自動收集許多資源的指標,例如 CPU、記憶體、磁碟和網路。Container Insights 還提供診斷資訊,例如容器重新啟動故障,協助您快速隔離和解決這些故障。您也可以針對 Container Insights 收集的指標設定 CloudWatch 警示。

修補

若要使用 Container Insights,請參閱《Amazon CloudWatch 使用者指南》中的更新服務

【ECS.13】 ECS服務應加上標籤

類別:識別 > 庫存 > 標記

嚴重性:

資源類型: AWS::ECS::Service

AWS Config rule:tagged-ecs-service(自訂 Security Hub 規則)

排程類型:已觸發變更

參數:

參數 Description (描述) Type 允許的自訂值 Security Hub 預設值
requiredTagKeys 評估的資源必須包含的非系統標籤索引鍵清單。標籤鍵會區分大小寫。 StringList 符合AWS 要求的標籤清單 無預設值

此控制項會檢查 Amazon ECS服務是否具有具有參數 中定義之特定金鑰的標籤requiredTagKeys。如果服務沒有任何標籤索引鍵,或它沒有參數 中指定的所有索引鍵,則控制項會失敗requiredTagKeys。如果requiredTagKeys未提供 參數,則控制項只會檢查標籤索引鍵是否存在,如果服務未加上任何索引鍵,則 會失敗。系統標籤會自動套用並以 開頭aws:,因此會遭到忽略。

標籤是您指派給 AWS 資源的標籤,其中包含金鑰和選用值。您可建立標籤,依照用途、擁有者、環境或其他條件分類資源。標籤可協助您識別、整理、搜尋和篩選資源。標記也可協助您追蹤動作和通知的責任資源擁有者。使用標記時,您可以實作屬性型存取控制 (ABAC) 做為授權策略,以根據標籤定義許可。您可以將標籤連接至IAM實體 (使用者或角色) 和 AWS 資源。您可以為IAM委託人建立單一ABAC政策或個別的政策集。您可以設計這些ABAC政策,以便在主體的標籤符合資源標籤時允許操作。如需詳細資訊,請參閱IAM《 使用者指南》中的ABAC適用於什麼 AWS?

注意

請勿在標籤中新增個人識別資訊 (PII) 或其他機密或敏感資訊。許多 都可以存取標籤 AWS 服務,包括 AWS Billing。如需更多標記最佳實務,請參閱 中的標記您的 AWS 資源AWS 一般參考

修補

若要將標籤新增至ECS服務,請參閱《Amazon Elastic Container Service 開發人員指南》中的標記您的 Amazon ECS 資源

【ECS.14】 ECS叢集應加上標籤

類別:識別 > 庫存 > 標記

嚴重性:

資源類型: AWS::ECS::Cluster

AWS Config rule:tagged-ecs-cluster(自訂 Security Hub 規則)

排程類型:已觸發變更

參數:

參數 Description (描述) Type 允許的自訂值 Security Hub 預設值
requiredTagKeys 評估的資源必須包含的非系統標籤索引鍵清單。標籤鍵會區分大小寫。 StringList 符合AWS 要求的標籤清單 無預設值

此控制項會檢查 Amazon ECS叢集是否具有具有參數 中定義之特定金鑰的標籤requiredTagKeys。如果叢集沒有任何標籤索引鍵,或沒有參數 中指定的所有索引鍵,則控制項會失敗requiredTagKeys。如果requiredTagKeys未提供 參數,則控制項只會檢查標籤金鑰是否存在,如果叢集未使用任何金鑰標記,則 會失敗。系統標籤會自動套用並以 開頭aws:,因此會遭到忽略。

標籤是您指派給 AWS 資源的標籤,其中包含金鑰和選用值。您可建立標籤,依照用途、擁有者、環境或其他條件分類資源。標籤可協助您識別、整理、搜尋和篩選資源。標記也可協助您追蹤動作和通知的責任資源擁有者。使用標記時,您可以實作屬性型存取控制 (ABAC) 做為授權策略,以根據標籤定義許可。您可以將標籤連接至IAM實體 (使用者或角色) 和 AWS 資源。您可以為IAM委託人建立單一ABAC政策或個別的政策集。您可以設計這些ABAC政策,以便在主體的標籤符合資源標籤時允許操作。如需詳細資訊,請參閱IAM《 使用者指南》中的ABAC適用於什麼 AWS?

注意

請勿在標籤中新增個人識別資訊 (PII) 或其他機密或敏感資訊。許多 都可以存取標籤 AWS 服務,包括 AWS Billing。如需更多標記最佳實務,請參閱 中的標記您的 AWS 資源AWS 一般參考

修補

若要將標籤新增至ECS叢集,請參閱《Amazon Elastic Container Service 開發人員指南》中的標記您的 Amazon ECS 資源

【ECS.15】 任務ECS定義應加上標籤

類別:識別 > 庫存 > 標記

嚴重性:

資源類型: AWS::ECS::TaskDefinition

AWS Config rule:tagged-ecs-taskdefinition(自訂 Security Hub 規則)

排程類型:已觸發變更

參數:

參數 Description (描述) Type 允許的自訂值 Security Hub 預設值
requiredTagKeys 評估的資源必須包含的非系統標籤索引鍵清單。標籤鍵會區分大小寫。 StringList 符合AWS 要求的標籤清單 無預設值

此控制項會檢查 Amazon ECS任務定義是否具有具有參數 中定義之特定金鑰的標籤requiredTagKeys。如果任務定義沒有任何標籤索引鍵,或沒有參數 中指定的所有索引鍵,則控制項會失敗requiredTagKeys。如果requiredTagKeys未提供 參數,則控制項只會檢查標籤索引鍵是否存在,如果任務定義未標記任何索引鍵,則 會失敗。系統標籤會自動套用並以 開頭aws:,因此會遭到忽略。

標籤是您指派給 AWS 資源的標籤,其中包含金鑰和選用值。您可建立標籤,依照用途、擁有者、環境或其他條件分類資源。標籤可協助您識別、整理、搜尋和篩選資源。標記也可協助您追蹤動作和通知的責任資源擁有者。使用標記時,您可以實作屬性型存取控制 (ABAC) 做為授權策略,以根據標籤定義許可。您可以將標籤連接至IAM實體 (使用者或角色) 和 AWS 資源。您可以為IAM委託人建立單一ABAC政策或個別的政策集。您可以設計這些ABAC政策,以便在主體的標籤符合資源標籤時允許操作。如需詳細資訊,請參閱IAM《 使用者指南》中的什麼ABAC是 AWS?

注意

請勿在標籤中新增個人識別資訊 (PII) 或其他機密或敏感資訊。許多 都可以存取標籤 AWS 服務,包括 AWS Billing。如需更多標記最佳實務,請參閱 中的標記您的 AWS 資源AWS 一般參考

修補

若要將標籤新增至ECS任務定義,請參閱《Amazon Elastic Container Service 開發人員指南》中的標記您的 Amazon ECS 資源

【ECS.16】 ECS任務集不應自動指派公有 IP 地址

相關要求:PCIDSSv4.0.1/1.4.4

類別:保護 > 安全網路組態 > 不可公開存取的資源

嚴重性:

資源類型: AWS::ECS::TaskSet

AWS Config rule:ecs-taskset-assign-public-ip-disabled(自訂 Security Hub 規則)

排程類型:已觸發變更

參數:

此控制項會檢查 Amazon ECS任務集是否設定為自動指派公有 IP 地址。如果 AssignPublicIP設定為 ,則控制項會失敗ENABLED

公有 IP 地址可從網際網路存取。如果您使用公有 IP 地址設定任務集,可以從網際網路連線與任務集相關聯的資源。任務ECS集不應公開存取,因為這可能會允許意外存取您的容器應用程式伺服器。

修補

若要更新ECS任務集,使其不使用公有 IP 地址,請參閱《Amazon Elastic Container Service 開發人員指南》中的使用主控台更新 Amazon ECS任務定義