建置 AMIs 以搭配 使用的最佳實務 AWS Marketplace - AWS Marketplace

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

建置 AMIs 以搭配 使用的最佳實務 AWS Marketplace

本主題提供最佳實務和參考,協助您建置 Amazon Machine Image (AMIs) 以搭配 使用 AWS Marketplace。建置並提交至 AMIs AWS Marketplace 必須遵循所有 AWS Marketplace 產品政策。如需詳細資訊,請參閱下列區段。

保護轉售權利

您有責任保護非免費 Linux 發行版本的轉售權利, AWS但 Amazon Linux、RHEL、SUSE 和 Windows AMIs 除外。

建置 AMI

使用下列準則來建置 AMIs:

  • 確保您的 AMI 符合所有 AWS Marketplace 政策,包括停用根登入。

  • 在美國東部 (維吉尼亞北部) 區域建立您的 AMI。

  • 從由 Amazon Elastic Block Store (Amazon EBS) 支援的現有、維護良好的 AMIs 建立產品,並使用受信任、信譽良好的來源提供明確定義的生命週期,例如 AWS Marketplace。

  • 使用最新的作業系統、套件和軟體來建置 AMI。

  • 確保所有 AMIs 都必須從使用硬體虛擬機器 (HVM) 虛擬化和 64 位元架構的公有 AMI 開始。

  • 開發一套可重複建置、更新及重新發佈 AMI 的流程。

  • 在所有版本和產品中使用一致的作業系統 (OS) 使用者名稱。我們建議 ec2-user

  • 將執行中的執行個體從最終 AMI 設定為您想要的最終使用者體驗,並在提交至 之前測試所有安裝方法、功能和效能 AWS Marketplace。

  • 檢查連接埠設定,如下所示:

    • Linux 型 AMIs – 確定有效的 SSH 連接埠已開啟。預設 SSH 連接埠為 22。

    • Windows 型 AMIs – 確定 RDP 連接埠已開啟。預設 RDP 連接埠為 3389。此外,WinRM 連接埠 (預設為 5985) 必須開放至 10.0.0.0/16 和 10.2.0.0/16。

    • 作為針對開放防火牆、反向代理和 SSRF 漏洞的最佳實務安全組態,IMDS v2 應預設為僅支援 IMDS v2。在最終建置階段註冊新的 AMI 時,可以使用下列 CLI:

      • aws ec2 register-image --name my-image --root-device-name /dev/xvda --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} --architecture x86_64 --imds-support v2.0

如需建立 AMI 的詳細資訊,請參閱下列資源:

準備和保護您的 AMI AWS Marketplace

我們建議建立安全 AMIs的指導方針如下:

  • 使用 Amazon EC2 使用者指南中的共用 Linux AMIs 指導方針 Amazon EC2

  • 建構您的 AMI 以部署為最低安裝,以減少攻擊面。停用或移除不必要的服務和程式。

  • 盡可能使用end-to-end加密。例如,使用 Secure Sockets Layer (SSL) 來保護您和買方之間的 HTTP 工作階段。確保您的服務僅使用有效且up-to-date憑證。

  • 將新版本新增至 AMI 產品時,請設定安全群組以控制執行個體的傳入流量存取。請確定您的安全群組已設定為僅允許存取為服務提供必要功能所需的最低連接埠集。僅允許管理存取必要的一組最低連接埠和來源 IP 地址範圍。如需如何將新版本新增至 AMI 產品的詳細資訊,請參閱新增新版本

  • 請考慮定期對 AWS 運算環境執行滲透測試,或考慮雇用第三方代表您執行此類測試。如需詳細資訊,包括滲透測試申請表,請參閱AWS 滲透測試

  • 請注意 Web 應用程式的前 10 個漏洞,並相應地建置您的應用程式。若要進一步了解,請參閱開放式 Web 應用程式安全專案 (OWASP) - 十大 Web 應用程式安全風險。發現新的網際網路漏洞時,請立即更新 AMI 中運送的任何 Web 應用程式。包含此資訊的資源範例包括 SecurityFocusNIST 國家漏洞資料庫

如需安全性的詳細資訊,請參閱下列資源:

掃描您的 AMI 以取得發佈需求

若要在提交 AMI 做為新產品或版本之前協助驗證 AMI,您可以使用自助式掃描。自助式掃描器將檢查未修補的常見漏洞和暴露 (CVEs),並確認已遵循安全最佳實務。如需詳細資訊,請參閱 準備和保護您的 AMI AWS Marketplace

從 中 AWS Marketplace 管理入口網站,從資產功能表中選擇 Amazon Machine Image。選擇新增 AMI 以開始掃描程序。您可以返回此頁面來查看 AMIs的掃描狀態。

注意

若要了解如何授予 AMI AWS Marketplace 存取權,請參閱 授予 的 AWS Marketplace 存取權 AMI

驗證您的軟體是否在 AMI 上執行 AWS Marketplace

您可能希望讓軟體在執行時間驗證其是否在從 AMI 產品建立的 Amazon EC2 執行個體上執行。

若要驗證 Amazon EC2 執行個體是從 AMI 產品建立的,請使用內建於 Amazon EC2 的執行個體中繼資料服務。下列步驟會引導您完成此驗證。如需使用中繼資料服務的詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的執行個體中繼資料和使用者資料

  1. 取得執行個體身分文件

    每個執行中的執行個體都有可從執行個體存取的身分文件,可提供執行個體本身的資料。下列範例顯示使用 curl 從執行個體擷取執行個體身分文件。

    IMDSv2:(建議)

    TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" 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" }

    IMDSv1:

    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" }
  2. 驗證執行個體身分文件

    您可以使用簽章來驗證執行個體身分是否正確。如需此程序的詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的執行個體身分文件

  3. 驗證產品程式碼

    當您最初提交您的 AMI 產品進行發佈時,您的產品會獲指派一個產品代碼 AWS Marketplace。您可以檢查執行個體身分文件中marketplaceProductCodes的欄位來驗證產品代碼,也可以直接從中繼資料服務取得:

    IMDSv2:

    TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/product-codes

    如果產品程式碼符合 AMI 產品的程式碼,則執行個體是從產品建立的。

您也可以驗證執行個體身分文件中的其他資訊,例如 instanceId和執行個體 privateIp