我对AWS Marketplace AMI有三个问题:
为什么?我想确保人们无法在我的AMI中复制软件并在我的AMI之外使用它。我想如果我的软件可以查询有关当前实例的AMI的元数据,并且元数据包含将AMI绑定给我的不可信息的信息,那么这是不可能的。
答案 0 :(得分:1)
每个EC2实例都有Instance Identity Document,提供有关实例的信息,包括其实例ID,展示位置等。此文档由AWS签名,以便您可以使用公钥对其进行验证。
它包含AMI ID,甚至似乎提供了您的product id,但文档中不清楚"billingProducts"
是否引用了这个或其他内容。
由于各种原因,这并非完全万无一失,包括您必须在代码中嵌入公钥以验证签名,如果我有您的代码副本 - - 并且我已经充分确定了 - 然后我可以使用我自己的密钥覆盖该部分,然后伪造身份证明文件......但是当你允许我访问你的代码副本时,你总是会冒同样的风险。这不是AWS提供的固有限制,而是一个问题,即我的服务器上运行的任何东西都不能完全免除我的篡改......但这似乎足以让诚实的人保持诚实,我会建议除此之外什么都不可能。
如果您一般熟悉EC2实例元数据,则无疑会识别http://169.254.169.254/
。如果不是:这是一个特殊的(链接本地)地址,它为EC2元数据服务提供端点。它是一个奇怪的地址,但每个EC2实例在访问该端点时都会看到自己的视图。 IP地址不会在实例,可用区,区域,帐户等之间发生变化,服务由EC2基础架构提供,而不是由实例本身上运行的任何内容提供。
实例所有者is not billed for http requests to this endpoint因此您的代码可以经常检查它,看起来是合理的。