【问题标题】:Control role permission in AWS控制 AWS 中的角色权限
【发布时间】:2021-02-21 06:37:39
【问题描述】:

我是 AWS 新手。我正在使用 Spring Boot 开发应用程序。我使用AWS cognito 进行登录和注册。我在 cognito 中创建了一个名为 ROLE_ADMIN 的组,并与我创建的 IAM 角色 连接为 ROLE_ADMIN_IAM

我正在使用AWS Api gateway(HTTP API,但类似的 REST API)与 API 进行通信。 然后将 Cognito jwt 授权器集成到 Api 网关中。

一切正常。我现在面临的问题是,当用户登录时,我需要根据他在认知组中的角色来阻止少数 API。所以我尝试将策略附加到 IAM 角色(ROLE_ADMIN_IAM 已创建),但它不起作用。 这是我附加到ROLE_ADMIN_IAM

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "apigateway:GET"
            ],
            "Resource": [
                "arn:aws:apigateway:ap-south-1::/apis/09bccr0"
            ]
        }
    ]
}

我也尝试限制所有资源。但是不行

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

我担心我尝试的方式是错误的还是正确的?我已经工作了好几天了。但找不到任何解决方案。请任何人给我一个解决方案。提前致谢。

更新 1。

由于这不起作用,我创建了一个身份池并使用它附加了用户池 ID 和客户端 ID。它自动为认证用户和未认证用户创建两个角色。然后我去Api网关,把授权人改成IAM。文档本身说,当我们使用 IAM 作为授权人时,我们需要使用 Signature 4 版本。 (我从 cognito jwt 切换到 IAM,因为我没有找到任何文档或文章说我可以使用 cognito jwt用于定义角色的身份池)。

在反应应用程序中,我使用放大。当我配置身份池时,它会在成功登录后提供临时的 Accesskey 和 SecretKey。我尝试将它与邮递员 -> 授权 -> AWS 签名一起使用,它总是给出{"message":"Forbidden"}

【问题讨论】:

  • 尝试创建另一个角色并授予该用户所需的特定权限。您不能在同一组中混合使用多个策略。为具有不同权限的用户使用不同的组和角色
  • 我没有混合任何策略。我在删除一个后都尝试了。
  • 您的身份池是否配置为使用令牌中的角色?如果不是,它将始终从池中发挥作用。
  • @AleksanderWons 我没有,在您发表评论后,我创建了。但它失败了。 Oncw 我创建了身份池,它创建了两个角色。一个用于 Auth,另一个用于 Unauth。然后我将该角色附加到用户池组中。但似乎不起作用。我需要任何特定的配置吗?
  • 您需要缩小范围。很难说你做了什么,怎么错了,哪里错了。

标签: amazon-web-services aws-api-gateway amazon-cognito amazon-iam


【解决方案1】:

当您在 Cognito 用户池中创建组时,您需要将适当的 IAM 角色附加到该组。允许实际 API 调用的 IAM 政策应如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:*:a123456789/test/POST/mydemoresource/*"
      ]
    }
  ]
}

您只需将演示字符串替换为您的 API Gateway ARN、方法和端点。注意“execute-api:Invoke”动作。

权限“apigateway:GET”不允许您调用 API,但可以获取有关 API 的服务信息。 “apigateway:*”权限允许您进行管理 AWS API 调用而不是实际的 API 调用。

有关更多信息,请查看以下文章:

Management calls

Execution calls

【讨论】:

    猜你喜欢
    • 2022-08-18
    • 2017-03-23
    • 2023-04-06
    • 2021-01-03
    • 2014-01-25
    • 1970-01-01
    • 2017-08-30
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多