我正在跟踪如何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的椅子或桌子,但我确定要订购我想要的椅子。
答案 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 Id
和Secret access key
。