问题标签 [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 投票
1 回答
878 浏览

amazon-web-services - STS AssumeRole 错误:AWS 访问密钥“我们的记录中不存在”

我正在开发一个基于 API Gateway/Lambda 的项目。请求流程如下:

  • API Gateway 将请求传递给 Authorizer lambda
  • Authorizer lambda 调用sts.assumeRole()并成功生成一个accessKeyIdsecretAccessKey
  • 密钥/秘密通过授权上下文传递给请求处理程序 lambda
  • 请求处理程序 lambda 使用给定accessKeyId/secretAccessKey来尝试访问 S3 存储桶中的项目

除最后一步外,该过程的每一步都在工作(通过控制台日志确认)。当我尝试使用生成的凭据时,我收到以下错误消息:

我知道这强烈暗示我不了解 STS 的某些内容,但我无法弄清楚是什么。(例如,当授权方 lambda 完成运行时,AWS 是否会取消分配生成的角色?)

为什么 AWS 会拒绝新生成的一对凭证并报告此错误消息?

0 投票
0 回答
78 浏览

amazon-web-services - 如何验证 AWS Web Identity Federation 角色中的授权?

我们计划将 AWS WebIdentityFederation 用于单页应用程序。

我创建了 OIDC 提供程序,它是一个外部 ADFS,并创建了一个 WebIdentityFederation 代入角色。我能够通过 ADFS 生成 id_token。在这个 id_token 中,我添加了角色声明,即 AD 组(如果需要,我可以更改为 AWS 角色 ARN),然后从 AWS STS API 生成临时 STS 令牌。

但是,看起来,AWS WebIdentityFederation 角色不会验证 id_token 中的任何角色声明,就像 AWS 对 SAML 联合所做的那样。这会创建一个授权问题,如果用户拥有有效的 id_token,他们可以承担任何 WebIdentityFederation 角色。

例如:如果我有两个 WebIdentityFederation 角色 READONLY 和 ADMIN,那么具有有效 id_token 的用户可以同时承担 READONLY 和 ADMIN,即使在 id_token 中用户具有 READONLY 角色。

有没有办法验证 id_token 中存在的角色或任何其他自定义声明?可以通过信任策略条件来完成吗?

0 投票
2 回答
546 浏览

java - 如何使用 AWS STS 为 s3 中的文件的特定资源创建只读和只写令牌

我必须为 S3 中的文件生成只读和只写令牌。

到目前为止我已经尝试过:

  1. 创建一个对引用中的存储桶具有读写访问权限的 IAM 角色
  2. 创建 STS 客户端
  3. 承担由 STS 客户端在步骤 #1 中创建的 IAM 角色
  4. 使用 sts 客户端生成凭据

这是做什么的

  1. 允许用户使用令牌访问 S3 中的文件
  2. 但这种访问不限于只读或只写
  3. 此外,如果 IAM 角色有权访问更多存储桶,则令牌将访问所有存储桶

创建 STS 客户端

创建代入角色请求

生成令牌请求

生成令牌

创建凭据

创建基本凭据

期待

  1. 能够生成只读和只写令牌
  2. 能够生成特定于路径的令牌
  3. 令牌仅限于引用的资源,而不是 IAM 角色中附加的所有存储桶
0 投票
1 回答
625 浏览

amazon-web-services - 使用 aws sts 假设角色配置 AWS EMR spark

我正在尝试从另一个 AWS 账户中的 s3 存储桶读取文件。

脚步:

  1. aws sts assume-role使用命令生成访问 id、访问密钥和令牌
  2. 设置以下变量:

    /li>
  3. aws s3 ls s3://...

  4. 在spark-shell中读取文件

    /li>

直到第 3 步,它的工作正常。

我无法在 spark-shell 中读取文件。我正在使用火花版本: 2.4.3。请让我知道我错过了什么。任何帮助,将不胜感激。

错误日志:

0 投票
1 回答
117 浏览

amazon-web-services - 无法使用 Lambda 生成的 STS 凭证连接到 IoT 端点

我无法使用 AWS Lambda 生成的 STS 凭证 (AssumeRoleUsingWebIdentity) 连接到 AWS IoT 终端节点。

它向我抛出AMQJS0008I 套接字关闭错误

我尝试使用 STS 凭证 (AssumeRoleUsingWebIdentity) 和通过 AWS CLI 生成的角色连接到同一个端点并且它有效。

但是,不确定为什么这不适用于 Lambda。

0 投票
1 回答
591 浏览

amazon-web-services - 用于创建堆栈的 aws:sts 用户 - aws cli

使用sam deploy,其中sam deploy是 的包装器aws cloudformation deploy,我们从 EC2 运行以下命令来创建堆栈:

aws cloudformation deploy --template-file cfntemplate.yml --stack-name somestack-test --region us-east-1

在堆栈创建过程中,我们看到以下内容(如下所示):

在此处输入图像描述


用户是:arn:aws:sts::${AccountId}:assumed-role/Autodeploy/i-0000000cc4Autodeploy是分配给 EC2 的角色名称。该用户在堆栈创建完成后消失。



assumed-role它的 arn 表明了什么?

Autodeploy/i-0000000cc4它的arn中表明了什么?

什么是aws:sts类型资源?

0 投票
1 回答
287 浏览

bash - 有没有办法用脚本生成 aws mfa 令牌代码?

每次我想获得一个新的 aws 会话时,我都必须打开我的授权设备以获取令牌代码,这样我就可以在我的脚本中使用它并生成 AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

我想知道,是否存在一种自动生成令牌代码的方法。

这将对我的流程自动化有很大帮助。

谢谢您的帮助。

0 投票
0 回答
456 浏览

amazon-web-services - 使用 STS 凭证通过 CloudFront 访问 S3 内容

概括

我有一个在 AWS 中运行的平台,它通过 AWS Lambda 支持的 REST API 公开。该平台将元数据存储在 DynamoDB 中,将内容存储在 S3 中。用户由 Cognito 进行身份验证并存储在用户池中。该平台管理权限以控制哪些用户可以访问(以及他们是否可以修改)哪些元数据(以及相关的内容)。

我可以使用 STS 将用户的 JWT 令牌交换为 STS 令牌(使用 Cognito 身份池),并授予他们读取或写入 S3 中特定对象的权限。创建 STS 令牌由平台处理。这在直接访问 S3 时非常有效,并且似乎是 STS 的完美用例。

两个旁白来解决一些评论:

  • 预签名的 S3 URL 不够安全,因为知道链接的任何人都可以访问内容
  • 我必须直接上传到 S3,因为我没有运行任何服务器,并且由于 Lambda 中的临时空间限制 (512MB) 和请求可以通过 API 网关执行的时间量,Lambda 不适合流式传输我的内容(29 秒)

我想在 S3 存储桶前面添加 CloudFront 以从其 CDN 功能中受益;如果可以从边缘提供内容而不是每次都从 S3 检索,这将降低数据传输成本。这是我遇到问题的地方 - 我不知道如何将 STS 令牌发送到 CloudFront,以便它将它传递给 S3。

问题:当 S3 存储桶位于 CloudFront 前端时,如何使用 STS 凭证从 S3 存储桶中读取/写入?

更多详细信息

我创建了两个可以由 STS 承担的角色。一个有s3:ListBucket,一个有s3:PutObject。然后,我使用 Postman 在我的存储桶上执行GET和请求,从 STS调用PUT中指定访问密钥、密钥和会话令牌。assume-role-with-web-identity

GET直接访问 S3 时,和操作和两者PUT都有效,但在使用 CloudFront 时均无效。有趣的是,我得到不同的错误GETPUT

错误来自GET

错误来自PUT

我已经从回复中删除了一些值,但如果有必要可以提供它们。

0 投票
4 回答
3726 浏览

amazon-web-services - CDK DnsValidatedCertificate:当托管区域是父账户的一部分时,可以在链接的 AWS 账户中创建证书吗?

我正在尝试使用 AWS 的云开发工具包为我网站的某些子域创建 SSL 证书。问题是我正在使用 AWS Organizations 并且相关资源属于不同的 AWS 账户。我的域的托管区域是我们主帐户的一部分,但我正在运行 CDK 以在链接帐户中部署堆栈。这意味着DnsValidatedCertificate 该类能够请求一个新证书(在堆栈回滚后它们仍然在ACM中可见),但是当它尝试创建 DNS 记录以自动验证请求时会引发错误。

这是错误(我的帐号和堆栈名称已编辑):

这是相关的 CDK 代码(同样,HZ 和域已编辑):

那么,是否有任何方法可以配置 CDK 以允许 DNS 验证自动发生?或者我是否需要使用不同的配置文件作为第二步?

编辑:根据迈克尔的建议,我添加了一个名为AWS账户LinkedAccountCertValidatorRole的角色。我附加到角色的托管策略及其信任关系如下所示。不幸的是,我仍然遇到同样的错误。此外,Access Advisor 选项卡表明该角色从未使用过该策略。

0 投票
1 回答
250 浏览

ansible - 执行 MFA 政策后无法担任角色

我创建了一个新策略来强制 IAM 用户使用此链接中的策略设置 MFA https://docs.aws.amazon.com/en_pv/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html

现在 IAM 用户已经AdministratorAccess......所以现在应用此强制 MFA 策略,现在用户附加了 2 个策略。AWS 托管策略AdministratorAccess和我创建的新托管策略Force_MFA

现在,当我尝试运行在附加策略之前通常工作的ansible iwth 模块https://docs.ansible.com/ansible/latest/modules/sts_assume_role_module.htmlForce_MFA现在我收到错误消息,提示我无法承担其他帐户的角色。当我删除该Force_MFA策略时,它会再次起作用。

问题出在哪里。这是政策问题还是ansible问题?这个Force_MFA政策没有按预期工作吗?如果启用了 MFA,它应该让我做其他事情,但在 asnible 中它没有,但在 GUI 中我可以切换角色并且它工作正常。只是那些 ansible 剧本现在失败并抱怨我无法承担角色。

请注意,我已经为这个 IAM 用户启用了 MFA,我可以在仪表板中假设和切换帐户,但是当我尝试在 ansible 中这样做时,我收到 boto 错误,说我无法承担角色

任何帮助将不胜感激。

如果您需要发布任何帮助让我知道,我会发布。