我计划在一个网页上为使用特定AMI的用户创建实例。是否有任何AWS方法允许用户批准我的Web应用程序使用其凭据执行此操作? (即获得具有特定权限的秘密令牌)
类似于当您让Facebook应用程序访问您的个人资料的某些信息时。我正在寻找一种方法来从登录的用户获取令牌,以便我可以为他们创建一个实例。
我想避免用户做到IAM的所有手动步骤,创建新用户,获取令牌然后将其上传到我的网站的痛苦。
我查看了AWS Cognito,但这似乎不是我想要的。
答案 0 :(得分:2)
类似于当您让Facebook应用程序访问您的个人资料的某些信息时。
AWS和Facebook在任何意义上都不相似。 Facebook是一个Web应用程序。 AWS完全不同的东西。
Facebook拥有用户,但AWS拥有帐户,后者又拥有用户......但在AWS中,不需要用户的权限来处理资源 - 您实际需要的是帐户对其资源执行操作的权限,因为资源与帐户相关联,而不是与用户相关联。
我正在寻找一种方法从登录的用户那里获取令牌,以便我可以为他们创建一个实例。
用户登录AWS控制台。在此之后,没有用户允许外部应用程序在“登录”用户主持下进行操作的概念。
用户必须具有足够的权限才能创建具有足够权限的临时IAM凭据(例如使用来自IAM API的GetSessionToken或AssumeRole)并将其交给您,或者创建具有足够权限的IAM用户并交出密钥对于该用户而言......或者您向他们提供您的 IAM用户之一的ARN,并且您的客户授予您的用户执行操作或承担客户帐户中的角色的权限,为此目的而创建。
我想避免用户在执行IAM的所有手动步骤,创建新用户,获取令牌然后将其上传到我的网站时感到很痛苦。
这是无法避免的,无论如何......而且,无论如何,无论你究竟在计划什么,你的模型似乎都有缺陷:它只会是一个天真的用户,允许你这样做。我有允许同时启动数百个实例的帐户。我是否允许第三方获得可能为我支付巨额账单的凭证是否有意义? (如果AWS信任一组凭据来启动实例,那么它会信任它们启动实例 - 一直到帐户的实例限制。)
如果您希望用户能够从您的AMI启动实例,您只需在AWS Marketplace上列出,或者share the AMI with the user's account,或者只是make the AMI public。