本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建置 AMI 的最佳做法
本主題提供一些最佳實務和參考資料,以協助您建置與搭配 AWS Marketplace使用的 Amazon 機器映像 (AMI)。建置並提交 AMI AWS Marketplace 必須遵守所有 AWS Marketplace 產品政策。
保護轉售權限
除了 AWS提供的 Amazon Linux、RHEL、SUSE 和視窗 AMI 之外,您有責任保護非自由 Linux 發行版的轉售權利。
建立 AMI
請使用下列準則來建置 AMI:
-
確保您的 AMI 符合所有 AWS Marketplace 策略,包括禁用 root 登錄。
-
在美國東部 (維吉尼亞北部) 區域建立 AMI。
-
使用由 Amazon Elastic Block Store (Amazon EBS) 支援的現有、維護良好的 AMI 建立產品,並由受信譽良好的來源提供明確定義的生命週期,例如。 AWS Marketplace
-
使用大多數 up-to-date 作業系統、套件和軟體來建置 AMI。
-
確定所有 AMI 都必須以使用硬體虛擬機器 (HVM) 虛擬化和 64 位元架構的公用 AMI 啟動。
-
開發一套可重複建置、更新及重新發佈 AMI 的流程。
-
在所有版本和產品中使用一致的作業系統 (OS) 使用者名稱。我們建議使用 ec2 使用者。
-
設定執行中的執行個體,從您的最終 AMI 到您想要的使用者體驗,並在提交至之前測試所有安裝方法、功能和效能 AWS Marketplace。
-
檢查連接埠設定,如下所示:
-
以 Linux 為基礎的 AMI — 確定已開啟有效的安全殼層連接埠。預設的安全殼層連接埠為 22。
-
以視窗為基礎的 AMI — 確定 RDP 連接埠已開啟。預設的 RDP 連接埠是 3389。此外,WINRM 連接埠 (預設為 5985) 必須開啟至 10.0.0/16 和 10.2.0.0/16。
-
如需有關建立 AMI 的詳細資訊,請參閱下列資源:
在 Amazon EC2 用戶指南中創建自己的 AMI
在 Amazon EC2 用戶指南中創建自定義窗口 AMI
如何從 EBS 支持的實例創建 Amazon 機器映像(AMI)?
準備和保護您的 AMI AWS Marketplace
我們建議您遵循下列準則來建立安全 AMI:
-
架構您的 AMI,將其部署為最低安裝,以減少攻擊面。停用或移除不必要的服務和程式。
-
請盡可能對網路流量使用 end-to-end 加密。例如,使用安全通訊端層 (SSL) 來保護您和購買者之間的 HTTP 工作階段。請確定您的服務僅使用有效 up-to-date 憑證。
-
將新版本新增至 AMI 產品時,請設定安全群組以控制執行個體的輸入流量存取權。請確定您的安全群組已設定為僅允許存取為服務提供必要功能所需的最低連接埠集。僅允許管理員存取所需的最低連接埠集和來源 IP 位址範圍。如需如何將新版本新增至 AMI 產品的詳細資訊,請參閱新增新版本。
-
請考慮定期針對您的 AWS 電腦環境執行滲透測試,或考慮聘請第三方代表您進行此類測試。如需詳細資訊,包括滲透測試申請表,請參閱AWS 滲透測試
。 -
請注意 Web 應用程式的前 10 大弱點,並據此建置應用程式。若要深入了解,請參閱開啟 Web 應用程式安全專案 (OWASP)-十大 Web 應用程式安全
威脅。當發現新的互聯網漏洞時,請立即更新 AMI 中附帶的任何 Web 應用程序。包含此資訊的資源範例為 SecurityFocus NIST 國家弱點資料庫 。
如需安全性的相關資訊,請參閱下列資源:
掃描您的 AMI 是否有發佈需求
若要在將 AMI 提交為新產品或版本之前協助驗證您的 AMI,您可以使用自助掃描。自助掃描器將檢查未修補的常見漏洞和暴露 (CVE),並驗證安全性最佳做法是否遵循。如需更多資訊,請參閱準備和保護您的 AMI AWS Marketplace
從「資產」功能表中選擇「Amazon 機器映像」。 AWS Marketplace 管理入口網站選擇添加 AMI 開始掃描過程。您可以返回此頁面來查看 AMI 的掃描狀態。
注意
若要瞭解如何授予 AMI AWS Marketplace 存取權,請參閱授予對 AMI 的 AWS Marketplace 訪問權限。
驗證您的軟件是否在 AWS Marketplace AMI 上運行
您可能希望在執行時期驗證軟體是否在從 AMI 產品建立的 Amazon EC2 執行個體上執行。
若要確認 Amazon EC2 執行個體是從 AMI 產品建立的,請使用 Amazon EC2 內建的執行個體中繼資料服務。以下步驟將引導您完成此驗證。如需使用中繼資料服務的詳細資訊,請參閱 Amazon 彈性運算雲端使用者指南中的執行個體中繼資料和使用者資料。
-
獲取實例身份證明文件
每個執行中的執行個體都有一個可從執行個體存取的身分識別文件,該文件提供執行個體 下列範例示範如何使用執行個體的 curl 擷取執行個體識別文件。
curl http://169.254.169.254/latest/dynamic/instance-identity/document { "accountId" : "0123456789", "architecture" : "x86_64", "availabilityZone" : "us-east-1e", "billingProducts" : null, "devpayProductCodes" : null, "marketplaceProductCodes" : [ "0vg0000000000000000000000" ], "imageId" : "ami-0123456789abcdef1", "instanceId" : "i-0123456789abcdef0", "instanceType" : "t2.medium", "kernelId" : null, "pendingTime" : "2020-02-25T20:23:14Z", "privateIp" : "10.0.0.2", "ramdiskId" : null, "region" : "us-east-1", "version" : "2017-09-30" }
-
驗證實例身份證明文件
您可以使用簽章驗證執行個體身分是否正確。如需此程序的詳細資訊,請參閱 Amazon 彈性運算雲端使用者指南中的執行個體身分識別文件。
-
驗證產品代碼
當您最初提交 AMI 產品進行發佈時,您的產品會依據指派產品代碼 AWS Marketplace。您可以檢查執行個體身分識別文件中的
marketplaceProductCodes
欄位來驗證產品代碼,也可以直接從中繼資料服務取得:curl http://169.254.169.254/latest/meta-data/product-codes 0vg0000000000000000000000
如果產品代碼與 AMI 產品的代碼相符,則該實例是從您的產品創建的。
您也可能希望驗證執行個體身份證明文件中的其他資訊,例如instanceId
和執行個體privateIp
。