Amazon web services 如何通过SES发送带有临时SES特定凭据的电子邮件?

Amazon web services 如何通过SES发送带有临时SES特定凭据的电子邮件?,amazon-web-services,aws-sdk,amazon-ses,Amazon Web Services,Aws Sdk,Amazon Ses,页面显示如何使用SES发送电子邮件。该示例通过从~/.aws/credentials读取凭据来工作,这些凭据是根(但“共享”?)凭据 文档在不同的地方建议不要使用root凭据 获取临时凭证 提到使用是一个选项,但是没有为SES客户机对象定义假定\u role() 如何通过SES发送带有临时SES特定凭据的电子邮件 更新 我的问题的上下文是在EC2实例上运行的应用程序。两个选项 您可以创建具有适当权限的IAM用户凭据,并将其放入~./aws/credentials文件中。然后,您的应用程序将找到它

页面显示如何使用SES发送电子邮件。该示例通过从
~/.aws/credentials
读取凭据来工作,这些凭据是根(但“共享”?)凭据

文档在不同的地方建议不要使用root凭据

获取临时凭证 提到使用是一个选项,但是没有为SES客户机对象定义
假定\u role()

如何通过SES发送带有临时SES特定凭据的电子邮件

更新

我的问题的上下文是在EC2实例上运行的应用程序。

两个选项

您可以创建具有适当权限的IAM用户凭据,并将其放入
~./aws/credentials
文件中。然后,您的应用程序将找到它们并使用它们与AmazonSES连接

或者,您的应用程序可以使用一组IAM用户凭据来调用
假定角色()
(这是一个IAM命令)。这将返回一组可用于AmazonSES的临时凭证。但是,如果要提供一组用于调用
假定角色()
的凭据,那么您也可以直接在Amazon SE中使用这些凭据


IAM用户可用于人员或应用程序。

这有几点

首先,您需要IAM策略。您可以使用内置策略之一,例如
AmazonSESFullAccess
,也可以创建自己的策略。特定保单持有人将能够访问保单中定义的资源和操作。您可以手动创建此策略,或通过AWS控制台工作,它将引导您完成此策略。IAM-->策略-->创建策略

其次,你需要一个角色。此外,在控制台中也可以轻松完成。IAM-->角色-->创建角色。受信任的实体是AWS服务。突出显示EC2。在下一个屏幕中,选择要与此角色关联的策略。这是您在上面创建的策略。如果您的EC2已经有一个角色,那么您可以将IAM策略添加到此角色。将IAM策略分配给角色就是他们所说的信任策略

现在,在EC2实例上运行的任何代码都将能够向SES服务发送消息。EC2承担分配给它的角色。SES政策是为该角色定义的。这将允许EC2(在幕后)获得临时凭证


背景故事如下。对AWS服务的任何API调用都需要有密钥和密码。当您从本地计算机进行API调用时,您可以使用您的个人密钥和密码(甚至根密钥)。当您需要从另一个服务进行API调用时,您没有该密钥和密码。将凭据存储在EC2上既不安全也不实用。甚至更糟糕的是,在S3桶中。这就是AWS提出
角色
概念的原因。角色可以从名为简单令牌服务(STS)的内部服务请求临时凭据。例如,角色附加到EC2实例。如果将正确的策略附加到该角色,EC2实例可以请求获取临时凭据,以对另一个服务进行API调用。所有这些都发生在幕后。

哪个应用程序将使用SES发送电子邮件?它是EC2实例吗?如果是这样的话,该实例将需要权限才能担任可以在STS中发送电子邮件的角色。@OlivierdeMolder是的,的确如此。我更新了问题。如果您决定回答,是否可以提供相关文档的链接,或多说几句话?您在此处所称的IAM用户身份在AWS文档中也称为命名配置文件;这是正确的,还是文档中给出了两个不同名称的微妙原因?在任何情况下,我都不明白为什么IAM永久访问密钥集合比根访问密钥具有任何显著优势。我问:根访问永远不能被阻止。具有root凭据的任何人都可以完全访问AWS帐户。相反,可以将一部分权限分配给IAM用户,这样个人(或应用程序)只能有限地访问该帐户,例如启动EC2实例但不能更改VPC配置。始终根据需要授予最少的权限,以避免意外或故意损坏服务。奇怪。我已经完成了您描述的步骤(还有很多步骤),但是我错过了关键点——在这里,我将从角色中检索一些访问密钥+密码,并将其传递给EC2实例中的代码。根据你的回答,似乎没有这样的事情。AWS在内部处理访问权限(通过IP或谁知道是什么)。这真的有记录吗?或者他们是否担心披露他们如何实现安全性会给攻击者提供线索?