[アップデート] AMI のパブリック共有機能をアカウントレベルでブロック出来る設定が追加されました

2023.09.14

いわさです。

EC2 の AMI (Amazon Machine Image) は別のアカウントへ共有することが出来ます。
共有の方法は、組織やアカウントなど共有先を指定するプライベート共有と、全 AWS アカウントに共有するパブリック共有の 2 種類があります。

後者の共有方法は広く AMI を配布するためのものとなっており、意図せず共有してしまってセキュリティ上のリスクが生じる場合があります。

本日のアップデートでアカウントに「AMI のパブリック共有を禁止する」ことが出来るようになりました。

有効方法や、既存の AMI への影響点などを実際に確認してみましたので紹介します。

EC2 の設定から

EC2 コンソールのアカウント属性 - Data protection and security から設定が可能です。

Block public access for AMIs が追加されており、こちらから有効化出来ます。
デフォルトでは次のように無効化(=パブリック共有が可能)されています。無効化されている場合は Public access が「New public sharing allowed」という表記になっています。

次のように Manage から Block new public sharing にチェックを入れて有効化します。
最後に API のドキュメントも共有しますが、この設定用に新しい API アクション(EnableImageBlockPublicAccess)が追加されています。IAM ポリシーエディタでは確認出来ませんでしたが、防止有効化解除もコントロール出来そうな気がしますね。

なお、有効化した後に反映まで数分かかります。
ドキュメント上は 10 分ほどと記述がありましたが、私が確認した際には 1 分ほどでした。

有効化されると表示が「New public sharing blocked」となります。

AMI のパブリック共有ができなくなった

これで AMI のパブリック共有が出来なくなっているはずなので、早速プライベート AMI の AMI 許可を編集してみましょう。

おっ、次のように AMI の可用性設定でパブリックが選択できなくなっていますね。

なお、今回の設定ではパブリック共有が防止されているだけで、プライベート共有に関しては引き続き行うことが出来ます。
試しにここでは AMI を別のアカウントへ共有してみました。

次のように別アカウントに AMI が共有されていることが確認出来ました。あくまでもパブリック共有を防ぐためのものであるという認識をしておきましょう。

リージョンごと

なお、こちらの設定はリージョンごとに個別の防止設定を保持しています。
今回は東京リージョンでパブリック共有防止を有効化しましたが、大阪リージョンでは次のようにデフォルト状態で無効化されたままでした。

アカウント全体で防止したい場合は全リージョンで防止設定有効化の対応が必要です。

既存のパブリック AMI には影響なし

既存のパブリック AMI が公開されている場合に防止設定を有効化しても、既存の共有済み AMI は引き続きパブリックに共有されたままです。

次のようにパブリック共有された AMI が存在する状態のアカウントで試してみました。

有効化する際に「Publicly shared AMIs will continue being shared publicly.」と注意書きがされていますね。

パブリック共有防止を有効化しても引き続きパブリック共有されたままであることが確認出来ました。

さいごに

本日は AMI のパブリック共有機能をアカウントレベルでブロック出来る設定が追加されたので試してみました。

これはデフォルトで防止設定を有効化しておきたいケース多いのではないでしょうか。
防止設定の API も今回追加されているのでスクリプトなどで全リージョン一括で有効化したいときにも使えそうです。