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

问题描述 投票:1回答:2

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

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

对于安全性最佳实践,请使用AWS Identity and Access Management(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账户访问密钥”并不属于“安全最佳实践”。

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

Ranting(以及对AWS员工作者的建设性建议,如果在这里):具体的品牌推广会有所帮助。在宜家,我可能会订购一张名为Fjorstuvstok的无名椅子或桌子,但我肯定知道我正在订购我想要的椅子。

amazon-web-services amazon-ses
2个回答
0
投票

AWS账户访问密钥是root帐户用户拥有的密钥。要检查这些是什么,您需要知道您的root帐户用户名。可以使用AWS根凭证使用aws cli检查,或使用您的root帐户凭据登录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用户)的访问密钥。


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

© www.soinside.com 2019 - 2024. All rights reserved.