Могу ли я связать метаданные с AMI AWS Marketplace?

#amazon-web-services #metadata #amazon-ami

#amazon-веб-сервисы #метаданные #amazon-ami

Вопрос:

У меня есть три вопроса, касающиеся AMI AWS Marketplace:

  1. Могу ли я связать метаданные с AMI, который я предлагаю в AWS Marketplace?
  2. Могу ли я прочитать эти метаданные изнутри экземпляра, созданного с помощью этого AMI?
  3. Могу ли я гарантировать, что эти метаданные не могут быть подделаны? Например. Я мог бы подписать их содержимое закрытым ключом.

Почему?Я хочу убедиться, что люди не смогут скопировать программное обеспечение из моего AMI и использовать его за пределами моего AMI. Я полагаю, что если бы мое программное обеспечение могло запрашивать метаданные об AMI текущего экземпляра и эти метаданные содержали неподтверждаемую информацию, привязывающую AMI ко мне, то это было бы невозможно.

Ответ №1:

У каждого экземпляра EC2 есть документ, удостоверяющий личность экземпляра, который предоставляет информацию об экземпляре, включая его идентификатор экземпляра, размещение и т.д. Этот документ подписан AWS, чтобы вы могли подтвердить его с помощью открытого ключа.

Он включает идентификатор AMI и даже, похоже, предоставляет ваш идентификатор продукта, хотя из документации неясно, "billingProducts" относится ли это к нему или к чему-то другому.

Это не совсем надежно по ряду причин, включая тот факт, что вам обязательно нужно будет внедрить открытый ключ в свой код, чтобы подтвердить подпись, и если у меня есть копия вашего кода — и я достаточно решителен — тогда я мог бы перезаписать эту часть своим собственным ключом, а затем подделать документ, удостоверяющий личность… но тогда каждый раз, когда вы предоставляете мне доступ к копии вашего кода, вы всегда подвергаетесь тому же риску. Это не внутреннее ограничение того, что предоставляет AWS, а скорее проблема, которая заключается в том, что ничто, запущенное на моем сервере, не защищено от моего вмешательства… но этого кажется достаточным, чтобы честные люди были честны, и я бы предположил, что ничего сверх этого невозможно.

Если вы знакомы с метаданными экземпляра EC2 в целом, вы, несомненно, узнаете http://169.254.169.254/ . Если нет: это специальный (локальный по ссылке) адрес, который предоставляет конечную точку службе метаданных EC2. Это странно выглядящий адрес, но каждый экземпляр EC2 видит свое собственное представление при доступе к этой конечной точке. IP-адрес не меняется в зависимости от инстансов, зон доступности, регионов, учетных записей и т.д., И сервис предоставляется инфраструктурой EC2, а не чем-либо, запущенным на самом инстансе.

Владельцу экземпляра не выставляется счет за http-запросы к этой конечной точке, поэтому ваш код может проверять его так часто, как кажется разумным.