透過允許 AMI 在 Amazon EC2 控制 AMI 的探索及使用 - Amazon Elastic Compute Cloud

透過允許 AMI 在 Amazon EC2 控制 AMI 的探索及使用

若要控制使用者在 AWS 帳戶 對於 Amazon Machine Images (AMI) 的探索及使用,您可以使用允許 AMI 功能。您可指定 AMI 必須符合的條件,才能在您的帳戶中可見且可供使用。在啟用條件之後,啟動執行個體的使用者只會看到並存取符合指定條件的 AMI。例如,您可指定受信任的 AMI 供應商清單作為條件,只有來自這些供應商的 AMI 才可見且可供使用。

在啟用允許 AMI 設定之前,您可啟用稽核模式,以預覽 AMI 是否可見且可供使用。這可讓您根據需要調整條件,確保只有預期的 AMI 可見且可供您帳戶的使用者使用。此外,使用 describe-instance-image-metadata 命令,來尋找使用不符合指定條件的 AMI 啟動的執行個體。此資訊可指導您決定是否更新啟動組態以使用符合規範的 AMI (例如,在啟動範本指定不同 AMI),或調整條件以允許這些 AMI。

您可直接在帳戶或使用宣告式政策,在帳戶層級指定允許 AMI 設定。這些設定必須在您想要控制 AMI 用量的每個 AWS 區域 位置設定。您可使用宣告式政策同時在多個區域及多個帳戶套用設定。使用宣告式政策時,您無法直接在帳戶中修改設定。本主題說明如何直接在帳戶內配置設定。如需使用宣告式政策的相關資訊,請參閱「AWS Organizations 使用者指南」中的宣告式政策

注意

允許 AMI 功能僅可針對公共 AMI 或與您的帳戶共享的 AMI 控制其探索及使用。其不限制您帳戶擁有的 AMI。無論您設定什麼條件,您帳戶建立的 AMI 一律可供您帳戶的使用者探索及使用。

允許 AMI 的主要優點
  • 合規性和安全性:使用者只能探索及使用符合指定條件的 AMI,進而降低以不合規方式使用 AMI 的風險。

  • 高效管理:透過減少允許 AMI 數量可讓管理剩餘的 AMI 變得更簡單、更有效率。

  • 集中帳戶層級實作:直接在帳戶內或使用宣告式政策,在帳戶層級配置允許 AMI 設定。這可提供集中且有效的方式來控制整個帳戶的 AMI 使用情況。

允許 AMI 運作方式

如需控制在帳戶中可探索及使用哪些 AMI,您可定義評估 AMI 的條件集。這些條件由如下圖所示的一個或多個 ImageCriterion 組成。說明性文字遵循圖表。

允許的 AMI ImageCriteria 組態階層。

組態具有三個層級:

  • 1 – 參數值

    • 多值參數:

      • ImageProviders

      • ImageNames

      • MarketplaceProductCodes

        AMI 可比對參數內允許的任何值。

        範例:ImageProviders = amazon OR 帳戶 111122223333 OR 帳戶 444455556666 (圖表中並未顯示參數值的評估邏輯。)

    • 單一值參數:

      • CreationDateCondition

      • DeprecationTimeCondition

  • 2ImageCriterion

    • 透過 AND 邏輯來分組多個參數。

    • AMI 必須比對 ImageCriterion 允許的所有參數。

    • 範例:ImageProviders = amazon AND CreationDateCondition = 300 天或以下

  • 3ImageCriteria

    • 使用 OR 邏輯來分組多個 ImageCriterion

    • AMI 可比對允許的任何 ImageCriterion

    • 構成用於評估 AMI 的完整組態。

允許的 AMI 參數

還可設定以下參數來建立 ImageCriterion

ImageProviders

允許其 AMI 的 AMI 服務提供者。

有效值是由 AWS 和 AWS 帳戶 ID 定義的別名,如下所示:

  • amazon - 此別名可識別由 Amazon 的經驗證的服務提供者建立的 AMI

  • aws-marketplace - 此別名可識別由 AWS Marketplace 的已驗證供應商建立的 AMI

  • aws-backup-vault - 此別名可識別位於邏輯氣隙 AWS 備份保存庫帳戶的備份 AMI。如果您使用 AWS 備份邏輯氣隙隔離保存庫功能,請確保將此別名做為 AMI 供應商納入。

  • AWS 帳戶 ID - 一個或多個 12 位數 AWS 帳戶 ID

  • none - 表示只能探索及使用由您帳戶建立的 AMI。無法探索及使用公用或共用 AMI。指定後不可指定其他條件。

ImageNames

允許的 AMI 名稱,使用完全相符或萬用字元 (?*)。

MarketplaceProductCodes

允許的 AMI 的 AWS Marketplace 產品代碼。

CreationDateCondition

允許的 AMI 的最長存留期。

DeprecationTimeCondition

自允許的 AMI 棄用以來的最長期間。

若要了解每個條件的有效值與約束條件,請參閱 Amazon EC2 API 參考中的 ImageCriterionRequest

允許的 AMI 組態

允許的 AMI 核心組態為 ImageCriteria 組態,其定義允許 AMI 的條件。下面的 JSON 結構顯示可指定的參數:

{ "State": "enabled" | "disabled" | "audit-mode", "ImageCriteria" : [ { "ImageProviders": ["string",...], "MarketplaceProductCodes": ["string",...], "ImageNames":["string",...], "CreationDateCondition" : { "MaximumDaysSinceCreated": integer }, "DeprecationTimeCondition" : { "MaximumDaysSinceDeprecated": integer } }, ... }

ImageCriteria 範例

下面的 ImageCriteria 範例可設定四個 ImageCriterion。若 AMI 與這些 ImageCriterion 中的任何一個相符,則允許該 AMI。若要了解有關如何評估條件的詳細資訊,請參閱 條件評估方式

{ "ImageCriteria": [ // ImageCriterion 1: Allow AWS Marketplace AMIs with product code "abcdefg1234567890" { "MarketplaceProductCodes": [ "abcdefg1234567890" ] }, // ImageCriterion 2: Allow AMIs from providers whose accounts are // "123456789012" OR "123456789013" AND AMI age is less than 300 days { "ImageProviders": [ "123456789012", "123456789013" ], "CreationDateCondition": { "MaximumDaysSinceCreated": 300 } }, // ImageCriterion 3: Allow AMIs from provider whose account is "123456789014" // AND with names following the pattern "golden-ami-*" { "ImageProviders": [ "123456789014" ], "ImageNames": [ "golden-ami-*" ] }, // ImageCriterion 4: Allow AMIs from Amazon or verified providers // AND which aren't deprecated { "ImageProviders": [ "amazon" ], "DeprecationTimeCondition": { "MaximumDaysSinceDeprecated": 0 } } ] }

條件評估方式

下表說明了確定是否允許 AMI 的評估規則,並顯示了 ANDOR 運算子如何在每個層級套用:

評估層級 運算子 需要是允許的 AMI
ImageProvidersImageNamesMarketplaceProductCodes 的參數值 OR AMI 必須與每個參數清單中至少一個值相符
ImageCriterion AND AMI 必須與每個 ImageCriterion 的全部參數相符
ImageCriteria OR AMI 必須與 ImageCriterion 任意一個參數相符

我們使用上述評估規則,來了解如何套用規則至 ImageCriteria 範例

  • ImageCriterion 1:允許具有 AWS Marketplace 產品代碼的 abcdefg1234567890 的 AMI

    OR

  • ImageCriterion 2:允許滿足以下兩項條件的 AMI:

    • 由任一帳戶 123456789012 OR 123456789013 擁有

      • AND

    • 最近 300 天內建立

    OR

  • ImageCriterion 3:允許滿足以下兩項條件的 AMI:

    • 由帳戶 123456789014 擁有

      • AND

    • 以模式 golden-ami-* 命名

    OR

  • ImageCriterion 4:允許滿足以下兩項條件的 AMI:

    • 由 Amazon 或經驗證的服務提供者發布 (由 amazon 別名指定)

      • AND

    • 未棄用 (自棄用以來的最長天數為 0)

限制

ImageCriteria 可包括最多:

  • 10 個 ImageCriterion

每個 ImageCriterion 可包括最多:

  • ImageProviders 的 200 個值

  • ImageNames 的 50 個值

  • MarketplaceProductCodes 的 50 個值

限制範例

使用上述 ImageCriteria 範例

  • 有 4 個 ImageCriterion。最多可新增 6 個至請求,達到上限 10 個。

  • 在第一個 ImageCriterion 中, 有 1 個 MarketplaceProductCodes 的值。最多可新增 49 個至此 ImageCriterion,達到上限 50 個。

  • 在第二個 ImageCriterion 中, 有 2 個 ImageProviders 的值。最多可新增 198 個至此 ImageCriterion,達到上限 200 個。

  • 在第三個 ImageCriterion 中, 有 1 個 ImageNames 的值。最多可新增 49 個至此 ImageCriterion,達到上限 50 個。

允許 AMI 操作

允許的 AMI 功能有三種操作狀態來管理映像條件:已啟用已停用稽核模式。這些模式可讓您啟用或停用映像條件,或根據需要來檢閱這些條件。

已啟用

當啟用允許 AMI 時:

  • 會套用 ImageCriteria

  • 僅可在 EC2 主控台以及透過使用映像的 API (例如,描述、複製、儲存或執行使用映像的其他動作) 來探索允許 AMI。

  • 只能使用允許 AMI 啟動執行個體。

已停用

當停用允許 AMI 時:

  • 不會套用 ImageCriteria

  • AMI 的可探索性或使用方式不受任何限制。

稽核模式

在稽核模式中:

  • 會套用 ImageCriteria,但 AMI 的可探索性或使用方式不受任何限制。

  • 在 EC2 主控台中,對於每個 AMI,允許映像欄位會顯示,以指示啟用允許 AMI 時,帳戶使用者可否探索及使用該 AMI。

  • 在命令列,describe-image 操作的回應包括 "ImageAllowed": true"ImageAllowed": false,以指示當允許 AMI 啟用時,帳戶使用者可否探索及使用 AMI。

  • 在 EC2 主控台,當啟用允許 AMI 時,AMI 目錄會在帳戶使用者無法探索或使用的 AMI 旁邊顯示不允許

實作允許 AMI 的最佳實務

當實作允許 AMI 時,請考慮這些最佳實務,以確保順暢轉換,並將對 AWS 環境的潛在干擾降至最低。

  1. 啟用稽核模式

    從在稽核模式啟用允許 AMI 開始。此狀態可讓您無需實際限制存取,即可查看哪些 AMI 會受到您的條件影響,提供無風險的評估期。

  2. 設定允許 AMI 條件

    仔細確定哪些 AMI 供應商符合您組織的安全性策略、合規性要求和營運需求。

    注意

    若使用 AWS 受管服務,例如 Amazon ECS 或 Amazon EKS,建議指定 amazon 別名,以便允許 AWS 建立的 AMI。這些服務取決於 Amazon 發布的 AMI 來啟動執行個體。

    設定任何 AMI CreationDateCondition 約束條件時要謹慎。若 AMI 並非在指定時間範圍內更新,無論是來自 AWS 還是其他服務提供者,設定太嚴格的日期條件 (例如,AMI 必須少於 5 天) 可能會導致執行個體啟動失敗。

    建議將 ImageNamesImageProviders 配對,以便實現更好的控制與特徵。單獨使用 ImageNames 可能無法唯一識別 AMI。

  3. 檢查對預期業務流程的影響

    您可使用主控台或者 CLI,來確定透過不滿足指定條件的 AMI 來啟動的任何執行個體。此資訊可指導您決定是否更新啟動組態以使用符合規範的 AMI (例如,在啟動範本指定不同 AMI),或調整條件以允許這些 AMI。

    主控台:使用 ec2-instance-launched-with-allowed-ami AWS Config 規則,檢查是否透過滿足允許的 AMI 條件的 AMI 來啟動執行中或已停止的執行個體。若 AMI 不滿足允許的 AMI 條件,則規則為 NON_COMPLIANT;若滿足條件,則規則為 COMPLIANT。僅當允許的 AMI 設定被設為已啟用稽核模式時,規則才能運作。

    CLI:執行 describe-instance-image-metadata 命令並篩選回應,確定使用不符合指定條件的 AMI 啟動的任何執行個體。

    若要了解主控台與 CLI 的說明,請參閱 尋找透過不允許的 AMI 啟動的執行個體

  4. 啟用允許 AMI

    在確認條件不會對預期業務流程產生負面影響之後,請啟用允許 AMI。

  5. 監控執行個體啟動

    繼續跨應用程式和您使用的 AWS 受管服務 (例如 Amazon EMR、Amazon ECR、Amazon EKS 和 AWS Elastic Beanstalk),監控從 AMI 啟動的執行個體。檢查是否有任何意外問題,並對允許 AMI 條件進行必要調整。

  6. 試驗新的 AMI

    如需測試與目前允許的 AMI 設定不相符的第三方 AMI,AWS 建議採用以下方法:

    • 使用單獨的 AWS 帳戶:建立不能存取您的業務關鍵性資源的帳戶。確認在此帳戶中,未啟用允許的 AMI 設定;或者明確允許您想要測試的 AMI,以便測試這些 AMI。

    • 在另一個 AWS 區域 中測試:使用提供第三方 AMI,但尚未啟用允許的 AMI 設定的區域。

    在測試新的 AMI 時,這些方法可協助確保您的業務關鍵性資源保持安全。

所需的 IAM 許可

若要使用允許 AMI 功能,您需要下列 IAM 許可:

  • GetAllowedImagesSettings

  • EnableAllowedImagesSettings

  • DisableAllowedImagesSettings

  • ReplaceImageCriteriaInAllowedImagesSettings