AWSのAMIリストに潜む闇
AWSマネジメントコンソールからWindows Serverを構築する時、AMIを選びますよね。
今日も、いつもの感覚で、ウィザードを開きました。
さて、どのAMIを選ぶのが良いのでしょうか。
なんか、上から2番目が良さそうです。
**「Japanese Language」で「Support Include」**と書いてあるので、一見、これが一番良さそうです。
でも、上記のAMIには、他のAMIと違うところがあります。
それは**「provided by Amazon」**とは書いてない点です。
なんか、急に怪しくなってきました。
なんと、1つだけ所有者が違います。
他は、AWSの公式AMIのように見えますが、この1つだけは明らかに違います。
もしや、**公式っぽく見せようとしている罠では・・・**などと考えてしまいますが、それは果たして考えすぎなのでしょうか。。。
怪しいAMIは、今年の春にも存在していた
以下は、今年の4月頃の画面キャプチャーですが、公式に酷似した名前で、野良AMIと思わしきものがウィザードの1ページ目に出現していた様子です。
よく見ないと、間違って選んでしまいそうです。
この時もAMIの一覧画面を見ることで、AMIの怪しさに気づけました。
AMIって誰でも公開できるんだっけ?
AWSでは、次のドキュメントの手順で、誰でもAMIを公開できます。
今回のAMIも、名前を似せてこの手順に沿ってAMIを公開したと思われます。
「AMIを一般公開する」
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/sharingamis-intro.html
AMI を公開した後、コンソールを使用して同じリージョン内でインスタンスを起動すると、
その AMI が [Community AMIs] に表示されます。AMI は、公開してから [Community AMIs] に表示されるまでに、しばらく時間がかかることもあります。また、AMI を非公開にした場合も、[Community AMIs] から削除されるまでにしばらく時間がかかることがあります。
この他には、有償のマーケットプレイスで販売するという手段があります。
結論
AWSのEC2を構築する際には、必ずAMIの所有者を確認した方が良いです。
コミュニティAMIは、その仕様上、一般の方が作成されたAMIもあり、どんなソフトウェアがインストールされているか分かりませんので、トラブル防止の為、所有者がAmazonのものを選ぶようにすべきかと思います。(理由があって意図している場合は別ですが。)
AMI一覧からEC2を構築する手順であれば、所有者欄を見ながら気づけますので、トラブル回避できます。
怪しいAMIは、名前はそっくりですが、ソースと所有者が違うのが分かります。
最初の画面キャプチャーで示すウィザードでは、公式と野良を正確には区別できません。(Descriptionが偽装されていても気づかない)
CloudFormationやTerraformで最新のAMIを選択するコードでは、Amazon公式アカウントのID(12桁)または所有者でAMIを絞り込むコードに変更すべきでしょう。