gpt4 book ai didi

node.js - 如何启用对 AWS STS AssumeRole 的访问

转载 作者:IT老高 更新时间:2023-10-28 23:02:44 28 4
gpt4 key购买 nike

调用 STS 的 assume role 方法时出现错误。它表示用户无权对资源 xxx 执行 sts:AsumeRole

我做了以下事情:

  1. 我创建了一个角色来访问 S3 存储桶。
  2. 我对策略模拟器进行了测试,效果很好
  3. 我创建了一个新组,并在其中创建了一个新策略在所有资源上启用所有 sts 操作。
  4. 我用策略模拟器进行了测试,让 sts 承担角色,指向到在第一步创建的角色的 ARN;而且效果很好
  5. 我创建了一个新用户,并将其放入第 3 步创建的组中
  6. 使用新用户的凭据,我尝试获取新凭据使用 sts asume 角色,但给我一个错误,说我的用户不是授权执行 sts:AssumeRole

我做错了什么?

集团政策

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "some-large-id",
"Effect": "Allow",
"Action": [
"sts:*"
],
"Resource": [
"*"
]
}
]
}

角色政策

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "another-large-id",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::my-bucket-name/*"
]
}
]
}

最后这样调用

let policy = {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "new-custom-id",
"Effect": "Allow",
"Action": ["s3:PutObject"],
"Resource": ["arn:aws:s3:::my-bucket-name/*"]
}
]
};

let params = {
DurationSeconds: 3600,
ExternalId: 'some-value',
Policy: JSON.stringify(policy),
RoleArn: "arn:aws:iam::NUMBER:role/ROLE-NAME", //Cheked, role is the same that step one
RoleSessionName: this.makeNewSessionId()
};
let sts = new AWS.STS({ apiVersion: '2012-08-10' });

sts.assumeRole(params, (err, data) => {
if(err) console.log(err);
else console.log(data);
});

最佳答案

缺少一个步骤:在第一步中创建的角色上设置信任关系。无论用户有什么权限,如果没有设置信任关系,STS都会拒绝该请求。

Troubleshooting IAM Roles解释它是如何工作的。

关于node.js - 如何启用对 AWS STS AssumeRole 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337079/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com