问题标签 [aws-sts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1097 浏览

c# - 亚马逊 AWS 和 GetCallerIdentity

我正在做一个 AWS 项目。我们希望能够颁发具有有限权限的 STS 临时安全凭证,以便访问 AWS 服务。我们正在使用 C# 在 .Net Core 中工作。

我们使用 STS来生成这些凭证AssumeRoleAsync(),这是 .Net SDK 使用 AWS AssumeRole操作的方法。调用的响应AssumeRoleAsync()是一个AssumeRoleResponse对象,它由一个AssumeRoleUser对象和一个Credentials对象组成。的属性之一AssumedRoleUserAssumedRoleId,其形式为role-id:role-session-name

我们有一个Lambda 函数,它以 JSON 对象的形式处理调用AssumeRoleAsync和返回生成的凭证。该 Lambda 函数通过API Gateway方法调用。

所有这些工作正常。以上只是为了布景。

我们希望能够做的下一件事是使用 STS 临时凭证对 AWS 服务进行其他调用。发生这种情况时,我们希望能够使用GetCallerIdentity()来检索AssumedRoleId向其颁发凭据的人。尤其role-session-name是我们感兴趣的。

因此,为了实现这一点,我在另一个 API Gateway 方法后面创建了另一个 Lambda 函数。我将此 API Gateway 方法设置为在其方法请求配置中使用AWS_IAM授权。在其集成请求中,我将其配置为. Lambda 函数只接受传入的请求并调用并返回结果。我在请求的授权标头中使用了上一次调用返回的凭据。Invoke with caller credentialsGetCallerIdentity()AssumeRoleAsync()

根据在GetCallerIdentity文档和该页面所引用的Principal Table中找到的信息,我希望收到以下项目作为响应GetCallerIdentity()

  • Account
  • Arn
  • UserId(这是本次讨论的重要部分)

UserId应该是 的形式,与from 调用返回的形式role-id:caller-specified-role-name完全相同。这将使我能够获得并做我们需要做的事情。AssumedRoleIdAssumeRoleAsynccaller-specified-role-name

但这不是UserId来自 的响应的属性中返回的内容GetCallerIdentity()

相反,该UserId属性包含的只是role-id- 它完全省略了 essential caller-specified-role-name

有没有其他人看到过这种行为?我忽略了一些简单的事情吗?这可能是响应中的错误GetCallerIdentity吗?

我正在使用以下 Amazon SDK 组件和版本进行这些不同的调用:

  • 亚马逊.Lambda.Core/1.0.0
  • Amazon.Lambda.Serialization.Json/1.1.0
  • AWSSDK.Core/3.3.14
  • AWSSDK.Lambda/3.3.6.2
  • AWSSDK.SecurityToken/3.3.1.9

感谢您提供的任何帮助!

德里克

0 投票
3 回答
1367 浏览

amazon-web-services - AWS 临时凭证 — 过期时间是 UTC 吗?

我想这很有可能,但我没有找到任何明确的信息表明这是真的。

从 AssumeRole 接收 Credentials 对象时,到期时间是 UTC 时间吗?

0 投票
1 回答
4532 浏览

aws-sts - AWS - STS 如何在全球区域中使用 AWSSecurityTokenServiceClientBuilder

我用

并自动设置了默认区域(全局)。但是此构造函数已弃用,建议使用:

我也希望它使用默认区域。我写:

但我有一个例外:

谢谢!

0 投票
0 回答
177 浏览

amazon-web-services - 无法通过 webSocket 在具有临时安全凭证 (STS.assumeRole) 的 aws iot 代理上发布

我无法弄清楚如何限制用户(使用临时安全凭证)仅订阅 aws IOT 上提供的主题。

我可以使用这些临时安全凭证连接到 aws iot,但无法发布或订阅。

以下是我在节点 js 中尝试做的事情。

});

0 投票
1 回答
1952 浏览

amazon-web-services - 如何将 STS 凭证有效期从一小时延长?

我正在浏览这个关于临时凭证的 AWS 文档,我遇到了这个,关于它们的持续时间:

必须使用 AWS 账户或 IAM 用户的长期 AWS 安全凭证调用 GetSessionToken 操作。

IAM 用户创建的凭证在您指定的持续时间内有效,从 900 秒(15 分钟)到最长 129600 秒(36 小时),默认为 43200 秒(12 小时);使用帐户凭据创建的凭据的范围可以从 900 秒(15 分钟)到最长 3600 秒(1 小时),默认为 1 小时。

那么,created by IAM users和 和有什么不一样created by using account credentials

我正在通过 boto3 使用 STS 创建我的临时凭据,它们将在一小时内过期。如何通过 boto3 使它们在此处提到的 36 小时内有效?

0 投票
2 回答
4036 浏览

amazon-web-services - 仅适用于移动应用访问的 Amazon 存储桶策略

我在 Amazon S3 中有一个存储桶,我将数据设置为对所有人只读。然而,这不是我想要的。我希望只能从我的移动应用程序访问该数据,并将其限制为通过 url 下载。

那可能吗?如果是这样如何实施这样的桶策略?

0 投票
0 回答
786 浏览

python - 为什么 STS 凭证会在 45 分钟内过期?

我在运行 Ansible 剧本的地方有这个设置,它运行一个 ML 脚本,执行大约需要 3-4 小时,一些 AWS 任务在 ML 脚本之后运行。

因此,我正在运行一个后台updatecredentials.pypython 文件,该文件更新/home/ubuntu/.aws/config我的 AWS 从中获取凭据的文件和文件。该文件每45分钟运行一次。

更新如下:

对于第一个实例的运行,stat配置文件如下:

对于第二种情况,它是:

所以,它nohup正在工作。但是,我在.errnohup 代码文件中得到错误:

当我statcreds.err文件进行处理时,它显示:

这是否意味着我的 STS[/temporary] 凭据在 45 分钟内过期?

0 投票
1 回答
197 浏览

amazon-web-services - 将角色重新分配给联合用户时出现错误“CustomRoleARN:xxxxxx 不可用于此令牌”

我正在尝试执行以下操作:i)通过 Cognito 联合身份验证用户(映射到 CognitoPool)。角色 R1 被分配作为此过程的一部分。ii) A 想为这个令牌分配一个新的角色 R2。在分配角色 R2 时,我收到以下错误:“CustomRoleARN:arn:aws:iam::123456789012:role/R2 is not assumable for this token”

我必须这样做,因为我可能必须根据某些条件创建 R2 运行时。

R2 信任关系:

附加到 R1 的策略(不是信任关系):

请让我知道我错过了什么。

提前感谢您的关注。

0 投票
1 回答
792 浏览

amazon-web-services - 通过 AWS STS 令牌授予对存储桶中单个文件夹的访问权限

我需要通过提供 STS 令牌来允许匿名用户访问 Amazon S3 存储桶中的单个文件夹。

我找到了有关如何根据策略和策略变量提供对一个存储桶中用户特定文件夹的访问权限的指南。在那里您使用长期用户密钥。是否有可能实现类似的东西,但使用 STS 令牌并且只有一个用户与多个用户各自拥有自己的文件夹?

0 投票
2 回答
678 浏览

amazon-web-services - AWS IAM STS:制作临时管理员的正确方法?

我希望能够将基于时间的 api 令牌分配给非管理员 AWS 用户,从而为该用户提供对所有 AWS 服务的临时管理员权限。

我为什么要这个?因为当我在 AWS 上使用我的个人帐户进行开发时,我希望能够拥有对每项服务的管理员访问权限,但我不希望在我的 .aws/credentials 文件中有一对明文不朽的管理员凭据。因此,我希望能够担任 IAM 角色,将用户提升为管理员并使用 STS 分配基于时间的 API 令牌。

在工作中,我们通过 SAML 服务器使用联合,因此无论用户具有什么角色:开发、管理员等,都为用户提供基于时间的访问权限,但我不想为了有时间而设置所有这些 -基于 API 令牌。我已经阅读了 AWS 文档并在 #aws 中对此进行了讨论,到目前为止,我的回应是制定一个硬编码时间结束的 IAM 信任策略:

但我不想每次都手动硬编码和更新此策略,而宁愿使用 STS 分配基于时间的 API 令牌。任何见解将不胜感激。