【问题标题】:Why is my AWS assumed role not authorised to perform cognito-idp:AdminGetUser?为什么我的 AWS 代入角色未被授权执行 cognito-idp:AdminGetUser?
【发布时间】:2021-12-04 08:24:48
【问题描述】:

我的 Laravel 应用程序调用 AdminGetUser 端点。

在本地环境中,成功返回资源。

部署到 Vapor 环境后,失败并显示以下错误消息:

User: arn:aws:sts::xxxx:assumed-role/laravel-vapor-role/xxxx is not authorized to perform: **cognito-idp:AdminGetUser** on resource: arn:aws:cognito-idp:us-east-1:xxxx:userpool/us-east-1_xxxx because no identity-based policy allows the cognito-idp:AdminGetUser action

有什么问题?

【问题讨论】:

  • IAM 角色,laravel vapo 角色的政策是什么?
  • 那个角色允许14个服务,这个api调用需要什么服务?
  • @ErmiyaEskandary 允许CloudWatch,CloudWatch Logs,DynamoDB,EC2,KMS,Lambda,Pinpoint Email,Route 53 Domains,S3,Secrets Manager,SES,SES v2,SQS,Systems Manager。根据您的评论,我得到了想法并添加了 Cognito User Pools 的新服务,从而解决了这个问题。请添加带有解释的答案,以便我接受。谢谢。

标签: aws-lambda amazon-cognito laravel-vapor


【解决方案1】:

laravel-vapor-role 无权执行:cognito-idp:AdminGetUser 在资源上:arn:aws:cognito-idp:us-east-1:xxxx:userpool/us-east-1_xxxx

这意味着laravel-vapor-role 角色没有附加合适的策略来为其提供执行cognito-idp:AdminGetUser 操作的权限。

您可以通过两种方式解决此问题:

  1. 将 AWS 托管的 AmazonCognitoReadOnly 策略分配给角色
  2. 为角色添加内联策略,符合granting least privilege 的安全最佳实践

如果您预计稍后将需要更多只读权限,那么将 AWS 托管的 AmazonCognitoReadOnly 策略分配给角色会更容易更好。

它将提供对您的身份池和用户池的只读访问权限,包括属于cognito-idp:Get*cognito-idp:AdminGetUser 权限(文档here,直接策略链接here):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-identity:Describe*",
                "cognito-identity:Get*",
                "cognito-identity:List*",
                "cognito-idp:Describe*",
                "cognito-idp:AdminGet*",
                "cognito-idp:AdminList*",
                "cognito-idp:List*",
                "cognito-idp:Get*",
                "cognito-sync:Describe*",
                "cognito-sync:Get*",
                "cognito-sync:List*",
                "iam:ListOpenIdConnectProviders",
                "iam:ListRoles",
                "sns:ListPlatformApplications"
            ],
            "Resource": "*"
        }
    ]
}

如果您只需要 cognito-idp:AdminGetUser 的单一权限,则为角色创建并分配内联策略,该策略仅向特定 Cognito 用户池授予该权限。

下面的图片应该是不言自明的:

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 2019-12-12
    • 2018-12-20
    • 2017-02-03
    • 2019-10-28
    • 2016-03-17
    • 2019-04-25
    • 2019-08-01
    • 2019-10-16
    相关资源
    最近更新 更多