共有先の確認が必要な AMI

AMI の起動許可の共有先を確認し、承認済みのアカウントだけがイメージを使用できるようにしてください。

説明

AMI の launch_permissions は、そのイメージからインスタンスを起動できる対象を定めます。複数の承認済みアカウントへの AMI 配布は正当な運用方法ですが、不要なアカウントや公開グループまで許可すると、想定より広い範囲でイメージが使用されます。group_names: ['all'] は公開共有の設定です。

共有するイメージには、パスワード、キー、内部専用のデータを残さないでください。AMI の起動許可と、稼働中のインスタンスへのログイン権限は別のものです。

想定される影響

  • イメージに残った設定情報や機密データが、承認されていない利用者に渡る可能性があります。
  • 想定外のアカウントで使われると、配布先や使用中のイメージのバージョンを管理しにくくなります。

対処方法

  • 公開配布が目的でなければ公開グループを削除し、承認済みアカウントだけを許可してください。複数のアカウントがあるという理由だけで、必要な共有を削除する必要はありません。
  • launch_permissions を変更するときは、許可を維持するすべての対象を指定してください。一部だけを渡すと、ほかの既存の起動許可が削除されることがあります。
  • 共有前にシークレットや内部データを除去し、共有先とイメージのバージョンを定期的に確認してください。

例

実際の AMI と承認済みのアカウント ID に置き換えて使う設定の抜粋です。

変更前

yaml
- name: Update AMI Launch Permissions, making it public
  amazon.aws.ec2_ami:
    image_id: "{{ instance.image_id }}"
    state: present
    launch_permissions:
      group_names: ['all']

公開グループに AMI の起動許可を与えています。内部用イメージには適していません。

変更後

yaml
- name: Allow AMI to be launched by another account
  amazon.aws.ec2_ami:
    image_id: "{{ instance.image_id }}"
    state: present
    launch_permissions:
      user_ids: ['123456789012']

指定したアカウントに共有先を限定します。複数のアカウントへの配布が必要なら、承認済みのアカウントをすべて一覧に含めてください。

参考資料