问题标签 [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.
c# - 亚马逊 AWS 和 GetCallerIdentity
我正在做一个 AWS 项目。我们希望能够颁发具有有限权限的 STS 临时安全凭证,以便访问 AWS 服务。我们正在使用 C# 在 .Net Core 中工作。
我们使用 STS来生成这些凭证AssumeRoleAsync()
,这是 .Net SDK 使用 AWS AssumeRole操作的方法。调用的响应AssumeRoleAsync()
是一个AssumeRoleResponse
对象,它由一个AssumeRoleUser
对象和一个Credentials
对象组成。的属性之一AssumedRoleUser
是AssumedRoleId
,其形式为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 credentials
GetCallerIdentity()
AssumeRoleAsync()
根据在GetCallerIdentity文档和该页面所引用的Principal Table中找到的信息,我希望收到以下项目作为响应GetCallerIdentity()
:
Account
Arn
UserId
(这是本次讨论的重要部分)
UserId
应该是 的形式,与from 调用返回的形式role-id:caller-specified-role-name
完全相同。这将使我能够获得并做我们需要做的事情。AssumedRoleId
AssumeRoleAsync
caller-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
感谢您提供的任何帮助!
德里克
amazon-web-services - AWS 临时凭证 — 过期时间是 UTC 吗?
我想这很有可能,但我没有找到任何明确的信息表明这是真的。
从 AssumeRole 接收 Credentials 对象时,到期时间是 UTC 时间吗?
aws-sts - AWS - STS 如何在全球区域中使用 AWSSecurityTokenServiceClientBuilder
我用
并自动设置了默认区域(全局)。但是此构造函数已弃用,建议使用:
我也希望它使用默认区域。我写:
但我有一个例外:
谢谢!
amazon-web-services - 无法通过 webSocket 在具有临时安全凭证 (STS.assumeRole) 的 aws iot 代理上发布
我无法弄清楚如何限制用户(使用临时安全凭证)仅订阅 aws IOT 上提供的主题。
我可以使用这些临时安全凭证连接到 aws iot,但无法发布或订阅。
以下是我在节点 js 中尝试做的事情。
});
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 小时内有效?
amazon-web-services - 仅适用于移动应用访问的 Amazon 存储桶策略
我在 Amazon S3 中有一个存储桶,我将数据设置为对所有人只读。然而,这不是我想要的。我希望只能从我的移动应用程序访问该数据,并将其限制为通过 url 下载。
那可能吗?如果是这样如何实施这样的桶策略?
python - 为什么 STS 凭证会在 45 分钟内过期?
我在运行 Ansible 剧本的地方有这个设置,它运行一个 ML 脚本,执行大约需要 3-4 小时,一些 AWS 任务在 ML 脚本之后运行。
因此,我正在运行一个后台updatecredentials.py
python 文件,该文件更新/home/ubuntu/.aws/config
我的 AWS 从中获取凭据的文件和文件。该文件每45分钟运行一次。
更新如下:
对于第一个实例的运行,stat
配置文件如下:
对于第二种情况,它是:
所以,它nohup
正在工作。但是,我在.err
nohup 代码文件中得到错误:
当我stat
对creds.err
文件进行处理时,它显示:
这是否意味着我的 STS[/temporary] 凭据在 45 分钟内过期?
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 的策略(不是信任关系):
请让我知道我错过了什么。
提前感谢您的关注。
amazon-web-services - 通过 AWS STS 令牌授予对存储桶中单个文件夹的访问权限
我需要通过提供 STS 令牌来允许匿名用户访问 Amazon S3 存储桶中的单个文件夹。
我找到了有关如何根据策略和策略变量提供对一个存储桶中用户特定文件夹的访问权限的指南。在那里您使用长期用户密钥。是否有可能实现类似的东西,但使用 STS 令牌并且只有一个用户与多个用户各自拥有自己的文件夹?
amazon-web-services - AWS IAM STS:制作临时管理员的正确方法?
我希望能够将基于时间的 api 令牌分配给非管理员 AWS 用户,从而为该用户提供对所有 AWS 服务的临时管理员权限。
我为什么要这个?因为当我在 AWS 上使用我的个人帐户进行开发时,我希望能够拥有对每项服务的管理员访问权限,但我不希望在我的 .aws/credentials 文件中有一对明文不朽的管理员凭据。因此,我希望能够担任 IAM 角色,将用户提升为管理员并使用 STS 分配基于时间的 API 令牌。
在工作中,我们通过 SAML 服务器使用联合,因此无论用户具有什么角色:开发、管理员等,都为用户提供基于时间的访问权限,但我不想为了有时间而设置所有这些 -基于 API 令牌。我已经阅读了 AWS 文档并在 #aws 中对此进行了讨论,到目前为止,我的回应是制定一个硬编码时间结束的 IAM 信任策略:
但我不想每次都手动硬编码和更新此策略,而宁愿使用 STS 分配基于时间的 API 令牌。任何见解将不胜感激。