问题标签 [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 回答
785 浏览

amazon-dynamodb - 来自 aws dynamodb-.net core sdk 的安全令牌无效异常

我正在尝试使用 AWS .NET 核心 SDK 在 dynamodb 中插入记录,但出现以下异常:

请求中包含的安全令牌无效。

请在下面找到我为连接它所做的步骤:

  1. 在 IAM 中创建了一个新的访问密钥。
  2. 在本地下载访问密钥和密钥。
  3. 在 C:/users//.aws/ 中创建了文件名凭据
  4. 在文件中添加了以下代码(出于安全目的删除了凭据)

    [default] aws_access_key_id = xxxxxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  5. 在 appsettings.json 文件中添加了以下代码:

    "AWS":{ "Region": "ap-south-1", "Profile": "default"}

  6. 在 startup.cs 的 ConfigureServices 方法中,我添加了以下代码: services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonDynamoDB>();

  7. 当我使用以下代码执行我的代码时,我收到异常“请求中包含的安全令牌无效”

  8. 我也尝试过从 appsettings.json 获取访问密钥和密钥 "AWS": { "Region": "ap-south-1", "AccessKey": "xxxxxxxxxxxxxxxxxxxx", "SecretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }

  9. 并在 startup.cs 文件的环境变量中设置这些凭据

services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddMvc(); Environment.SetEnvironmentVariable("AWS_ACCESS_KEY_ID", Configuration["AWS:AccessKey"]); Environment.SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", Configuration["AWS:SecretKey"]); Environment.SetEnvironmentVariable("AWS_REGION", Configuration["AWS:Region"]); services.AddAWSService<IAmazonDynamoDB>();

  1. 我仍然遇到同样的异常,请在下面找到堆栈跟踪:

在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 中的 Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException 异常) 60 在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs 中的 Amazon.Runtime.Internal.ErrorHandler.ProcessException(IExecutionContext executionContext, Exception exception): Amazon.Runtime.Internal.ErrorHandler.d__5 的第 212 行1.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 104 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__91.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CredentialsRetriever.d__7 1.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CredentialsRetriever.cs:line 98 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.RetryHandler.<InvokeAsync>d__101.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 Amazon.Runtime.Internal.RetryHandler 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() .d__101.MoveNext() in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 153 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__91.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CallbackHandler.d__9 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Amazon.Runtime.Internal.ErrorCallbackHandler.<InvokeAsync>d__51.MoveNext() 在 E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\ErrorCallbackHandler.cs:line 58 ---从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Amazon.Runtime.Internal.MetricsHandler.d__1 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 在 D:.Net Projects\TrainerExchange\proj\TXApi\DataAccess\Implementation\TrainerAccess.cs:line 47 中的 DataAccess.Implementation.TrainerAccess.d__6.MoveNext()

有人可以帮我解决这个问题吗?

如果我在这里遗漏任何东西,请告诉我。

0 投票
2 回答
1666 浏览

amazon-web-services - 联合用户的 Amazon S3 存储桶策略

我正在尝试让联合用户 (ADFS + SAML + STS) 访问 Amazon S3 存储桶。我试图给校长作为

但我似乎无法获得正确的访问权限。对此的任何指示

0 投票
1 回答
6625 浏览

amazon-web-services - 具有持续超过一小时的凭证的 AWS 承担角色

我正在将我们的 AWS 设置为拥有多个账户,我们的 IAM 用户在一个账户中定义,我们的资源在一个或多个其他账户中定义,并设置了策略以允许用户在生产和暂存账户中担任角色。我使用这篇Coinbase 博客文章作为指南。简而言之,方法是调用aws sts get-session-token以获取临时凭据(如果使用 MFA,则必须这样做),然后使用这些凭据调用assume-role所需的角色。

但是,使用临时凭据的持续时间似乎不能assume-role超过一小时。当我运行这个:

aws sts assume-role --role-arn arn:aws:iam::<REDACTED>:role/power-user --role-session-name my_session --duration <DURATION> 如果我使用的持续时间超过一小时,我会收到此错误: An error occurred (ValidationError) when calling the AssumeRole operation: The requested DurationSeconds exceeds the 1 hour session limit for roles assumed by role chaining.

如果他们必须每小时输入一次 MFA 代币,这对我的开发团队来说将是一个艰难的卖点。有没有办法assume-role使用持续一个多小时的临时凭证?

0 投票
1 回答
10568 浏览

amazon-web-services - AWSSecurityTokenServiceException:接受被拒绝。用户无权执行 sts:AssumeRole

我是aws的新手。我想为 aws 调用生成临时凭证。为此,我使用了Making Requests Using IAM User Temporary Credentials - AWS SDK for Java中的示例

我经过的地方

当尝试扮演角色时

得到一个错误

com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException:用户:arn:aws:iam:::user/ 无权执行:

拒绝访问; 请求 ID:)

我有一个认知角色。我认为角色信任关系设置中的问题。它看起来像这样:

用户政策(此用户政策也附加到此角色):

用户策略有两个警告:

在此处输入图像描述 我做错了什么?

UPD 我改变了角色信任关系,只需删除条件

现在Access denied错误发生在另一行代码上:

收到错误响应:com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: ), S3 Extended Request ID:

0 投票
1 回答
86 浏览

amazon-web-services - 生成可供任何客户使用的临时 AWS 凭据

我有一个用例,我需要任意客户端来接收我生成并传递给它的 AWS 凭证(密钥和秘密)。凭据应在几分钟后过期。客户需要发布到 s3 存储桶。

客户端将不是任何 AWS 账户的一部分,也不能使用任何多因素身份验证。这似乎阻止我使用 IAM 角色。

似乎安全令牌服务是亚马逊为类似用例提供的服务,但我无法对其进行按摩以从中获得我需要的东西。我需要一个角色 ARN,或者将会话令牌传递给客户端以在他们的请求中使用。客户端可以没有会话令牌的概念 - 只有 AWS 密钥/秘密。

简而言之,我希望能够生成不需要多因素身份验证或会话令牌的临时 AWS 密钥/秘密对。

这可能吗?谢谢!

0 投票
1 回答
501 浏览

amazon-web-services - 具有动态策略的 AWS STS Tem 凭证

我正在尝试在 lambda 函数中运行一些代码,该函数将发出一个签名 URL,该 URL 使用一组具有自定义策略的临时凭据进行签名。

基本思想是签名允许用户连接到 AWS IOT,但只能使用特定的客户端 ID,并且对订阅主题和接收的消息有限制。

如果我使用本机分配给 Lambda 函数的凭证执行签名(即,在 Lambda 函数假定它们之前,代码有效)。但是,在 Lambda 函数内部运行它会生成一个假定角色并生成一组临时凭证,但生成的签名不会与 AWS IOT 端点建立连接。

基本代码是:

我试图承担的角色websocket_signer本身没有分配任何策略,但与arn:aws:sts::xxxxxxxxx:assumed-role/lambda_role/lambda_function_name.

分配给 Lambda 函数的角色(在其假定之前)具有以下信任关系:

为了消除策略的任何潜在问题,我将以下策略动态传递给假定的角色(应该与现有的角色策略合并,这没什么):

我最终应该得到一个签名的 URL,它可以使用任何客户端 ID 连接到任何主题并接收任何消息。函数中没有例外,AWS 正确返回了所有内容,所以我一定是错误配置了一些东西。

0 投票
1 回答
1870 浏览

amazon-web-services - 关于 Java 的 AWS 文档假设 STS 客户端不起作用?

作为先决条件,请参阅页面。

所以我可以创建一个小应用程序,它实际上是他们提供的代码的复制粘贴。它确实为给定的用户运行,我已将全局变量更改为正确的值,并且我可以通过 AWS CLI 承担我想要的 STS 角色。但是,此代码仍不会承担适当的角色。

我将代码导出为可执行 jar,将其放到我的 EC2 实例(基本 AWS linux 实例)上,然后运行它。我确实让它从 STS 凭证中输出正确且正确的密钥,但是一旦它到达 S3 客户端,我就会被拒绝访问(403)。

我的角色如下:

  • EC2没有角色,但在凭证文件中有一个用户访问信息(我们称他为MyUser)
  • MyUser 能够承担 STS 角色和 IAM 功能(IAM 功能不是必需的,仅用于测试目的)
  • STS 角色只能由 MyUser 承担,并允许在帐户内完全访问 S3

AWS 文档有时会受到打击或错过,但我找不到其他人遇到此代码问题。就像我说的,如果我通过 CLI 执行相同的过程来承担 STS 角色,我可以做到这一点并且它可以正常工作,这使得这更加令人困惑。

提前感谢任何可以提供帮助的人!

0 投票
1 回答
893 浏览

php - AWS 使用 StsClient 限制对临时凭证 getSessionToken 的访问

商业年鉴

有多个办事处拥有自己的 AWS S3 存储桶。一个办公室的任何用户都无法访问另一个办公室的 S3 存储桶。

因此,对于每个办公室,都有一个S3 Bucket和一个IAM user。每个 IAM 用户只有一个存储桶的权限。由于办公室不经常增长,IAM 用户创建和分配权限是通过手动完成的AWS Console

应用场景

浏览器 (Javascript) 要求服务器 (PHP API) 提供临时凭证以将文件上传到AWS S3. PHP API 获取Access key IDSecret access key从数据库(基于登录的办公室)。然后使用AWS PHP SDK,调用StsClient和使用getSessionToken()方法来获取临时凭证并将其传递给Javascript。

PHP 代码

问题

目前,IAM 用户拥有对相应存储桶的完全访问权限。我想将临时凭证访问限制为仅某些授权。像只允许上传,不能删除文件或列出所有文件。

我可以将其他参数传递给StsClient可以限制对存储桶的权限的位置吗?

编辑 1

通过策略为用户分配权限。以下是添加到策略的权限。

我的解决方案基于 Accepted Answer 建议的答案。

根据回答中的建议,添加了权限

现在我的 PHP 代码是

0 投票
1 回答
1052 浏览

amazon-s3 - 相当于 Amazon STS 的 Google Cloud

Amazon STS提供获取 IAM 令牌并创建该令牌功能的有限子集以供其他用途的能力。能力子集可以按时间(N 小时后到期)和允许的操作(例如读取一个 S3 存储桶但不是原始令牌可以读取的所有 S3 存储桶)。

因为这是使用支持 S3 密钥名称中的通配符的S3 ARN 格式完成的,这意味着可以创建一个可以读取 S3 存储桶的一部分的子令牌。

查看 Google Cloud Storage 的访问控制文档,我在 GCS 中找不到与此功能等效的功能。

更具体地说,我想用这四个对象创建一个桶:

并给定一个有权无限期访问所有文件的令牌,生成一个有限的令牌子集,该子集有权在N 小时内仅查看/folder2/*(so/folder2/file3和) 中的对象。/folder2/file4

这在 GCS 中是否可能像在 S3/STS 中一样?

0 投票
1 回答
1619 浏览

amazon-web-services - aws sts 最大并发令牌数

我想知道通过 STS 为特定 IAM 角色生成的并发临时安全凭证是否有最大限制。即,第一个用户获得这些临时凭证 12 小时,第二个用户也是如此,这种方法对于x用户数量的可扩展性如何?是否存在 AWS 文档中未提及的总体限制?

最好的