问题标签 [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.
amazon-dynamodb - 来自 aws dynamodb-.net core sdk 的安全令牌无效异常
我正在尝试使用 AWS .NET 核心 SDK 在 dynamodb 中插入记录,但出现以下异常:
请求中包含的安全令牌无效。
请在下面找到我为连接它所做的步骤:
- 在 IAM 中创建了一个新的访问密钥。
- 在本地下载访问密钥和密钥。
- 在 C:/users//.aws/ 中创建了文件名凭据
在文件中添加了以下代码(出于安全目的删除了凭据)
[default] aws_access_key_id = xxxxxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在 appsettings.json 文件中添加了以下代码:
"AWS":{ "Region": "ap-south-1", "Profile": "default"}
在 startup.cs 的 ConfigureServices 方法中,我添加了以下代码:
services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonDynamoDB>();
当我使用以下代码执行我的代码时,我收到异常“请求中包含的安全令牌无效”
我也尝试过从 appsettings.json 获取访问密钥和密钥
"AWS": { "Region": "ap-south-1", "AccessKey": "xxxxxxxxxxxxxxxxxxxx", "SecretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
并在 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>();
- 我仍然遇到同样的异常,请在下面找到堆栈跟踪:
在 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__9
1.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CredentialsRetriever.d__71.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__10
1.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__9
1.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Amazon .Runtime.Internal.CallbackHandler.d__91.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__5
1.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.TaskAwaiter
1.GetResult() 在 D:.Net Projects\TrainerExchange\proj\TXApi\DataAccess\Implementation\TrainerAccess.cs:line 47 中的 DataAccess.Implementation.TrainerAccess.d__6.MoveNext()
有人可以帮我解决这个问题吗?
如果我在这里遗漏任何东西,请告诉我。
amazon-web-services - 联合用户的 Amazon S3 存储桶策略
我正在尝试让联合用户 (ADFS + SAML + STS) 访问 Amazon S3 存储桶。我试图给校长作为
和
但我似乎无法获得正确的访问权限。对此的任何指示
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
使用持续一个多小时的临时凭证?
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:
amazon-web-services - 生成可供任何客户使用的临时 AWS 凭据
我有一个用例,我需要任意客户端来接收我生成并传递给它的 AWS 凭证(密钥和秘密)。凭据应在几分钟后过期。客户需要发布到 s3 存储桶。
客户端将不是任何 AWS 账户的一部分,也不能使用任何多因素身份验证。这似乎阻止我使用 IAM 角色。
似乎安全令牌服务是亚马逊为类似用例提供的服务,但我无法对其进行按摩以从中获得我需要的东西。我需要一个角色 ARN,或者将会话令牌传递给客户端以在他们的请求中使用。客户端可以没有会话令牌的概念 - 只有 AWS 密钥/秘密。
简而言之,我希望能够生成不需要多因素身份验证或会话令牌的临时 AWS 密钥/秘密对。
这可能吗?谢谢!
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 正确返回了所有内容,所以我一定是错误配置了一些东西。
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 角色,我可以做到这一点并且它可以正常工作,这使得这更加令人困惑。
提前感谢任何可以提供帮助的人!
php - AWS 使用 StsClient 限制对临时凭证 getSessionToken 的访问
商业年鉴
有多个办事处拥有自己的 AWS S3 存储桶。一个办公室的任何用户都无法访问另一个办公室的 S3 存储桶。
因此,对于每个办公室,都有一个S3 Bucket
和一个IAM user
。每个 IAM 用户只有一个存储桶的权限。由于办公室不经常增长,IAM 用户创建和分配权限是通过手动完成的AWS Console
。
应用场景
浏览器 (Javascript) 要求服务器 (PHP API) 提供临时凭证以将文件上传到AWS S3
. PHP API 获取Access key ID
和Secret access key
从数据库(基于登录的办公室)。然后使用AWS PHP SDK
,调用StsClient
和使用getSessionToken()
方法来获取临时凭证并将其传递给Javascript。
PHP 代码
问题
目前,IAM 用户拥有对相应存储桶的完全访问权限。我想将临时凭证访问限制为仅某些授权。像只允许上传,不能删除文件或列出所有文件。
我可以将其他参数传递给StsClient
可以限制对存储桶的权限的位置吗?
编辑 1
通过策略为用户分配权限。以下是添加到策略的权限。
我的解决方案基于 Accepted Answer 建议的答案。
根据回答中的建议,添加了权限
现在我的 PHP 代码是
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 中一样?
amazon-web-services - aws sts 最大并发令牌数
我想知道通过 STS 为特定 IAM 角色生成的并发临时安全凭证是否有最大限制。即,第一个用户获得这些临时凭证 12 小时,第二个用户也是如此,这种方法对于x
用户数量的可扩展性如何?是否存在 AWS 文档中未提及的总体限制?
最好的