创建专门用于SES的AWS IAM用户访问密钥

时间:2018-09-03 00:57:59

标签: amazon-web-services amazon-ses

我正在跟踪如何send an Email Using the AWS SDK for Python (Boto)

在AWS开发人员指南using-credentials页面上,我读到了

  

为获得最佳安全性实践,请使用 AWS身份和访问管理(IAM)用户访问密钥,而不要使用 AWS帐户访问密钥

然后在Managing Access Keys for IAM Users上,我最终被引到section并正确确认使用

aws iam list-access-keys
我刚刚创建的

(以JSON形式):

{
    "AccessKeyMetadata": [
        {
            "UserName": "My_User_Name", 
            "Status": "Active", 
            "CreateDate": "2018-09-03T00:43:37Z", 
            "AccessKeyId": "JRUFKDHUWHE8DD495CHD"
        }
    ]
}

但是我不清楚这个身份是否是我早些时候警告过的“ AWS帐户访问密钥”,不属于“安全最佳实践”。

如何创建用于通过SES和boto发送电子邮件的IAM身份(用户访问权限和密码)(同时消除我暴露整个AWS账户的机会)?

租售(如果有的话,请给AWS员工作家以建设性的建议):特定品牌会有所帮助。在宜家,我可能会订购一个没有意义的名字Fjorstuvstok的椅子或桌子,但我确定要订购我想要的椅子。

2 个答案:

答案 0 :(得分:0)

AWS帐户访问密钥根帐户用户拥有的密钥。要检查这些内容,您需要知道您的root帐户用户名。可以使用aws cli通过AWS根凭证进行检查,或者使用您的根账户凭证登录到AWS控制台,然后单击右上角用户名下的“我的安全凭证”。

假设您使用cli,请确保已在~/.aws/credentials中配置了根凭据。然后运行:

aws iam get-user
{
    "User": {
        "UserName": "my_root_user_name", 
        "PasswordLastUsed": "2018-09-03T06:40:38Z", 
        "CreateDate": "2017-03-01T08:53:36Z", 
        "UserId": "9XXXXXXXXXXX", 
        "Arn": "arn:aws:iam::9XXXXXXXXXXX:root"
    }
}

这将为您提供root用户的详细信息。然后可以使用该用户名查询访问密钥:

aws iam list-access-keys --user-name my_root_user_name

如果此结果中列出的任何键都用于SES,那么这是个坏消息。 AWS建议您使用分配给IAM用户(非root用户)的访问密钥。

答案 1 :(得分:0)

AWS账户访问密钥是指您的AWS账户的Root account访问/秘密密钥。当您使用电子邮件向aws注册自己时,创建的帐户为Root account。有与此相关的密钥,需要将其删除。 (由于这是Root帐户,它提供了对所有AWS服务的不受限制的访问权限。选中AWS Account Root User Credentials vs. IAM User Credentials

警告建议使用IAM用户访问密钥。因此,您可以在aws帐户中创建IAM用户,并创建关联的访问密钥ID和秘密访问密钥,并在运行代码的计算机上进行配置。 (在较高部署环境中,这不是一个好习惯。如果计算机受到威胁,则访问密钥将被公开)

由于尚不清楚您如何运行应用程序代码(来自ECS or EC2 or AWS Lambda),应创建IAM role来授予要从其运行代码的位置访问SES的权限。这样可以避免在您的应用程序代码/计算机中公开IAM access key IdSecret access key