翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Marketplace で使用する AMI 構築のベストプラクティス
このトピックでは、AWS Marketplace で使用するための Amazon マシンイメージ (AMI) を構築するために役立つベストプラクティスとリファレンスについて説明します。AWS Marketplace に構築され、送信された AMI は、すべての AWS Marketplace 製品ポリシーに準拠する必要があります。詳細については、次のセクションを参照してください。
トピック
再販権の確保
AWS が提供する Amazon Linux、RHEL、SUSE を除き、フリーではない Linux ディストリビューションの再販権を確保する責任はお客様にあります。Windows AMI については、再販売権を取得する必要はありません。
AMI の構築
AMI の構築に関する以下のガイドラインを使用してください。
-
AMI がすべての AWS Marketplace ポリシーを満たしていることを確認します。
-
米国東部 (バージニア北部) リージョンで AMI を作成します。
-
AWS Marketplace などの信頼できる評判の高いソースから入手した、明確に定義されたライフサイクルを持つ、Amazon Elastic Block Store (Amazon EBS) にサポートされた、よく管理された既存の AMI から製品を作成します。
-
最新のオペレーティングシステム、パッケージ、およびソフトウェアを使用して AMI を構築します。
-
お使いの AMI が、ハードウェア仮想マシン (HVM) 仮想化および 64 ビットアーキテクチャを使用するパブリック Amazon EC2 AMI に基づいていることを確認してください。
-
AMI の構築、更新、再公開のための繰り返し可能なプロセスを開発します。
-
すべてのバージョンと製品で一貫したオペレーティングシステム (OS) ユーザー名を使用します。推奨されるデフォルトのユーザー名は、Linux およびその他の Unix に類似のシステムの場合は
ec2-user、Windows の場合はAdministratorです。 -
最終的な AMI を AWS Marketplace に公開申請する前に、その AMI からインスタンスを起動してテストし、想定どおりのエンドユーザーエクスペリエンスになっていることを確認してください。このインスタンスですべてのインストール方法、機能、パフォーマンスをテストします。
-
以下のようにポート設定を確認してください。
-
オープンファイアウォール、リバースプロキシ、SSRF の脆弱性に対するベストプラクティスのセキュリティ設定
として、[IMDS サポート] オプションは [IMDSv2] のみに設定する必要があります。次の CLI は、最終ビルドフェーズで新しい AMI を登録するときに使用できます。 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 の作成の詳細については、以下の関連リソースを参照してください。
-
「Amazon EC2 ユーザーガイド」の「Amazon EBS-backed AMI を作成する」
-
「Amazon EC2 ユーザーガイド」の「Windows Sysprep を使用して Amazon EC2 AMI を作成する」
AWS Marketplace 用 AMI の準備と保護
セキュアな AMI を作成するために、次のガイドラインをお勧めします。
-
「Amazon EC2 ユーザーガイド」の「共有 Linux AMI のガイドライン」を使用する
-
攻撃の危険性を減らすため、最低限のインストールとしてデプロイするように AMI を設計します。不要なサービスやプログラムを無効にするか、削除します。
-
可能な限り、ネットワークトラフィックにエンドツーエンドの暗号化を使用します。例えば、Secure Sockets Layer (SSL) を使用して、購入者との間の HTTP セッションを保護します。サービスが有効なかつ最新の証明書のみを使用するようにしてください。
-
AMI 製品を文書化するときは、購入者がインスタンスへの受信トラフィックアクセスを制御できるよう、セキュリティグループの推奨設定を記載してください。レコメンデーションでは、以下を指定する必要があります。
-
サービスが機能するために必要なポートの最小セット。
-
管理アクセスに推奨されるポートと送信元 IP アドレスの範囲。
これらのセキュリティグループの推奨事項は、購入者が適切なアクセスコントロールを実装するのに役立ちます。AMI 製品に新しいバージョンを追加する方法の詳細については、「新しいバージョンを追加する」を参照してください。
-
-
定期的に AWS コンピューティング環境に対するペネトレーションテストを実施すること、あるいはそのようなテストを行うためにサードパーティーを採用することを検討してください。ペネトレーションテストリクエストフォームなど詳細は、「AWS ペネトレーションテスト
」を参照してください。 -
ウェブアプリケーションのトップ 10 の脆弱性に気づき、必要に応じてアプリケーションを構築してください。詳細については、「Open Web Application Security Project (OWASP) - Top 10 Web Application Security Risks
」を参照してください。新しいインターネットの脆弱性が発見された場合は、AMI に同梱されているウェブアプリケーションをすみやかに更新してください。この情報を含むリソースの例として、「SecurityFocus 」および「NIST 全国脆弱性データベース 」があります。
セキュリティの詳細については、以下の関連リソースを参照してください。
公開要件を確認するための AMI のスキャン
AMI を AWS Marketplace カタログに公開するには、AMI スキャンを完了する必要があります。AMI スキャンでは、パッチが適用されていない一般的な脆弱性と露出 (CVE) をチェックし、AMI がセキュリティのベストプラクティスに従っていることを確認します。詳細については、「Preparing and securing your AMI for AWS Marketplace」を参照してください。
AMI スキャンを実行するには、次のいずれかのオプションを選択します。
オプション 1: アセットメニュー
この方法では、製品作成フローの外部で AMI をスキャンできます。AMI 製品を作成せずにアセットをスキャンする必要がある SaaS クイック起動を利用する SaaS 販売者にとっても有用です。
-
AWS Marketplace 管理ポータル
の、[アセット] メニューから [Amazon マシンイメージ] を選択します。 -
スキャンプロセスを開始するには、[AMI を追加] を選択します。
-
AMI のスキャンステータスは、このページに戻ると確認できます。
オプション 2: 変更メニューをリクエストする
このオプションは、AMI 製品を既に作成している販売者が使用できます。詳細については、「AMI ベースの製品の作成」を参照してください。
-
AWS Marketplace 管理ポータル
の [製品] メニューに移動し、[サーバー] を選択します。 -
[サーバー製品] から製品を選択します。これは AMI ベースの製品である必要があります。製品はどの状態でもかまいません。次のステップでは、公開状態である必要はありません。
-
[変更をリクエスト] メニューに移動し、[バージョンを更新] を選択します。
-
[テストバージョンを追加] を選択します。プロンプトに従って、AMI の詳細を含むリクエストを送信します。リクエストが成功すると、AMI がスキャンに合格したことを示します。[新しいバージョンを追加] オプションとは異なり、スキャンが成功した場合に、[テストバージョンを追加] で AMI ベースの製品に新しいバージョンが追加されることはありません。
注記
AMI へのアクセス権を AWS Marketplace に付与する方法については、「AMI への AWS Marketplace アクセスを許可する」を参照してください。
AWS Marketplace AMI でソフトウェアが実行されていることを確認する
ソフトウェアが、AMI 製品から作成された Amazon EC2 インスタンスで実行されていることを、実行時に検証するようを強く推奨します。
Amazon EC2 インスタンスが AMI 製品から作成されていることを確認するには、Amazon EC2 に組み込まれているインスタンスメタデータサービスを使用します。以下のステップでは、この検証を順を追って説明します。メタデータサービスの使用の詳細については、「Amazon Elastic Compute Cloud ユーザーガイド」の「インスタンスメタデータとユーザーデータ」を参照してください。
-
インスタンスアイデンティティドキュメントの取得
実行中の各インスタンスには、インスタンスからアクセス可能な、インスタンス自体に関するデータを提供するアイデンティティドキュメントが用意されています。次の例は、インスタンスから 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" } -
インスタンスアイデンティティドキュメントの検証
署名を使用して、インスタンスアイデンティティが正しいことを確認できます。このプロセスの詳細については、「Amazon Elastic Compute Cloud ユーザーガイド」の「インスタンスアイデンティティドキュメント」を参照してください。
-
製品コードの検証
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 製品のコードと一致する場合、インスタンスは製品から作成されたものです。