説明
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']
指定したアカウントに共有先を限定します。複数のアカウントへの配布が必要なら、承認済みのアカウントをすべて一覧に含めてください。