【问题标题】:Unable to create a signed url using AWS and with IRSA enabled on kubernetes pods无法使用 AWS 创建签名 url 并且在 kubernetes pod 上启用了 IRSA
【发布时间】:2021-02-05 18:31:00
【问题描述】:

我正在寻找一个签名的 url,以便我可以创建一个 MQTT 客户端。 为此,我需要一个秘密访问密钥、访问密钥 ID 和会话令牌。由于我的 pod 使用 IRSA,理想情况下,我希望使用我使用 aws sdk 检索的临时凭证来执行此操作。

我尝试了很多东西,这是最新的

import v4 from 'aws-signature-v4';


const role = await sts
    .assumeRole({
        RoleArn: 'arn:aws:iam::my-acc:role/my-role',
        RoleSessionName: 'some-random-session-name',
        DurationSeconds: 900,
    })
    .promise();        

const url = v4.createPresignedURL(
'GET',
awsConfig.iotDataEndpoint.toLowerCase(),
'/mqtt',
'iotdevicegateway',
'',
{
    key: role.Credentials.AccessKeyId,
    secret: role.Credentials.SecretAccessKey,
    sessionToken: role.Credentials.SessionToken,
    protocol: 'wss',
    expires: 900,
    region: awsConfig.region,
})

抛出

User: arn:aws:sts::my-acc:assumed-role/my-role/token-file-web-identity is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::my-acc:role/my-role

我确保arn:aws:sts::my-acc:assumed-role/my-role 有权执行sts:AssumeRole 并且与资源存在信任关系。

有什么想法吗?

【问题讨论】:

  • 您已包含客户端代码,但未包含 my-role 的 Policy JSON,因此没有人可以猜测您的设置有什么问题
  • 抱歉,添加了答案。最后是 AssumeRole 政策问题

标签: node.js amazon-web-services kubernetes amazon-iam aws-sdk-nodejs


【解决方案1】:

事实证明,您在 IRSA 中使用的角色也需要拥有自己的权限。

sts:AssumeRole 权限添加到arn:aws:iam::my-acc:role/my-rolearn:aws:iam::my-acc:role/my-role 修复了它

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2020-02-10
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    相关资源
    最近更新 更多