透過允許 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 組成。說明性文字遵循圖表。
組態具有三個層級:
-
1 – 參數值
-
多值參數:
-
ImageProviders -
ImageNames -
MarketplaceProductCodesAMI 可比對參數內允許的任何值。
範例:
ImageProviders=amazonOR 帳戶111122223333OR 帳戶444455556666(圖表中並未顯示參數值的評估邏輯。)
-
-
單一值參數:
-
CreationDateCondition -
DeprecationTimeCondition
-
-
-
2 –
ImageCriterion-
透過 AND 邏輯來分組多個參數。
-
AMI 必須比對
ImageCriterion允許的所有參數。 -
範例:
ImageProviders=amazonANDCreationDateCondition= 300 天或以下
-
-
3 –
ImageCriteria-
使用 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 的評估規則,並顯示了 AND 或 OR 運算子如何在每個層級套用:
| 評估層級 | 運算子 | 需要是允許的 AMI |
|---|---|---|
ImageProviders、ImageNames 及 MarketplaceProductCodes 的參數值 |
OR |
AMI 必須與每個參數清單中至少一個值相符 |
ImageCriterion |
AND |
AMI 必須與每個 ImageCriterion 的全部參數相符 |
ImageCriteria |
OR |
AMI 必須與 ImageCriterion 任意一個參數相符 |
我們使用上述評估規則,來了解如何套用規則至 ImageCriteria 範例:
-
ImageCriterion1:允許具有 AWS Marketplace 產品代碼的abcdefg1234567890的 AMIOR -
ImageCriterion2:允許滿足以下兩項條件的 AMI:-
由任一帳戶
123456789012OR123456789013擁有-
AND
-
-
最近 300 天內建立
OR -
-
ImageCriterion3:允許滿足以下兩項條件的 AMI:-
由帳戶
123456789014擁有-
AND
-
-
以模式
golden-ami-*命名
OR -
-
ImageCriterion4:允許滿足以下兩項條件的 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 環境的潛在干擾降至最低。
-
啟用稽核模式
從在稽核模式啟用允許 AMI 開始。此狀態可讓您無需實際限制存取,即可查看哪些 AMI 會受到您的條件影響,提供無風險的評估期。
-
設定允許 AMI 條件
仔細確定哪些 AMI 供應商符合您組織的安全性策略、合規性要求和營運需求。
注意
若使用 AWS 受管服務,例如 Amazon ECS 或 Amazon EKS,建議指定
amazon別名,以便允許 AWS 建立的 AMI。這些服務取決於 Amazon 發布的 AMI 來啟動執行個體。設定任何 AMI
CreationDateCondition約束條件時要謹慎。若 AMI 並非在指定時間範圍內更新,無論是來自 AWS 還是其他服務提供者,設定太嚴格的日期條件 (例如,AMI 必須少於 5 天) 可能會導致執行個體啟動失敗。建議將
ImageNames與ImageProviders配對,以便實現更好的控制與特徵。單獨使用ImageNames可能無法唯一識別 AMI。 -
檢查對預期業務流程的影響
您可使用主控台或者 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 啟動的執行個體。
-
啟用允許 AMI
在確認條件不會對預期業務流程產生負面影響之後,請啟用允許 AMI。
-
監控執行個體啟動
繼續跨應用程式和您使用的 AWS 受管服務 (例如 Amazon EMR、Amazon ECR、Amazon EKS 和 AWS Elastic Beanstalk),監控從 AMI 啟動的執行個體。檢查是否有任何意外問題,並對允許 AMI 條件進行必要調整。
-
試驗新的 AMI
如需測試與目前允許的 AMI 設定不相符的第三方 AMI,AWS 建議採用以下方法:
-
使用單獨的 AWS 帳戶:建立不能存取您的業務關鍵性資源的帳戶。確認在此帳戶中,未啟用允許的 AMI 設定;或者明確允許您想要測試的 AMI,以便測試這些 AMI。
-
在另一個 AWS 區域 中測試:使用提供第三方 AMI,但尚未啟用允許的 AMI 設定的區域。
在測試新的 AMI 時,這些方法可協助確保您的業務關鍵性資源保持安全。
-
所需的 IAM 許可
若要使用允許 AMI 功能,您需要下列 IAM 許可:
-
GetAllowedImagesSettings -
EnableAllowedImagesSettings -
DisableAllowedImagesSettings -
ReplaceImageCriteriaInAllowedImagesSettings