繁体   English   中英

获取临时AWS凭证的推荐方法? AWS.config还是STS?

[英]Recommended way to get temporary AWS credentials? AWS.config or STS?

我正在使用需要临时AWS凭证才能访问AWS服务的第三方SDK。 我将此SDK用作在EC2上运行的应用程序的一部分。 我的应用程序中的所有SDK都需要访问同一角色,该角色已附加到我的EC2实例中。 在下面,我列出了为获得临时凭证而找到的两个选项。 为获取我的第三方SDK的临时凭据,建议使用以下哪个选项?

AWS.config

var AWS = require("aws-sdk");
AWS.config.getCredentials();
var creds = AWS.config.credentials

安全令牌服务(STS)

var sts = new AWS.STS();
var params = {
    RoleArn: "arn:aws:iam::123456789012:role/demo",
    RoleSessionName: "Bob",
};
sts.assumeRole(params, function(err, data) {
    var creds = data.Credentials;
});

在这种情况下应该有点流畅,但是当您启动EC2实例并为其分配实例配置文件时,(某种程度上)临时凭证可作为实例元数据使用 您通过绑定在169.254.169.254上的本地HTTP服务器访问实例元数据

例如 curl http://169.254.169.254/latest/meta-data/ami-id

返回正在运行的实例的AMI-ID。 可以通过这种方式访问​​与分配给实例的实例配置文件关联的AWS凭证。

在实例上运行的任何内容都可以访问此数据,这意味着,如果您尝试将第三方SDK与实例配置文件隔离,则您已经失败了。

但是,听起来这并不是您要尝试的方法。 执行AWS.config.getCredentials(); ,它使用实例元数据(除其他 )来查找凭证。 这是有利的,因为它允许您以多种方式提供凭据,而无需更改查找它们的代码。

STS的使用情况,但是,如果你想给定用户暂时更改为一个特定的角色。 您所请求的用户必须具有sts:AssumeRole权限,并且必须与目标角色具有相同的权限。 这可以用于审核等目的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM