当前位置: 首页 > 知识库问答 >
问题:

使用IAM条件,根据cognito user-sub(userId)分配IAM角色

皇甫智明
2023-03-14

我很难使用Condition元素根据cognito-identity.amazonaws.com:子键为用户分配IAM角色。

当使用AWS Cognito设置标识池时,您可以指定一个通过身份验证的角色,我在其中选择了通过应用程序身份验证的角色。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "eu-central-1:fa078075-9622-4f0d-8789-700105a9e612"
        },
        "StringNotEquals": {
          "cognito-identity.amazonaws.com:sub": "eu-central-1:555540a6-cd49-44b2-bbd8-02cfa73b3510"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

app-authenticated_admin

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "eu-central-1:fa078075-9622-4f0d-8789-700105a9e612",
          "cognito-identity.amazonaws.com:sub": "eu-central-1:555540a6-cd49-44b2-bbd8-02cfa73b3510"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

问题是,无论谁登录,他总是得到app-authenticated的角色,也是一个具有sub ̄555540 a 6-CD49-44b2-bbd8-02 CFA 73 b 3510»(从userPool->users->userdetail->sub)的用户,我希望得到app-authenticated_admin角色。有人期待类似的东西吗?还是我错过了这样一个简单场景的一些基本概念?

共有1个答案

仲孙昊焱
2023-03-14

在未经身份验证的用户中尝试deny而不是allow。您还尝试过用户池中的用户组。

 类似资料:
  • 我正尝试使用IAM角色从spark读取s3桶中的csv文件,但在上获得 我安装了没有hadoop的Spark 2.4.4,安装了hadoop 3.2.1以及hadoop-aws-3.2.1.jar和aws-java-sdk-1.11.655.jar。我必须安装一个没有hadoop的spark版本,因为作为spark构建一部分的hadoop jars是来自2016年的2.7.3版本。 附加到角色的“

  • 我想知道PySpark是否支持使用IAM角色进行S3访问。具体来说,我有一个业务限制,我必须承担AWS角色才能访问给定的存储桶。使用boto时可以这样做(因为它是API的一部分),但我无法找到关于PySpark是否支持开箱即用的明确答案。 理想情况下,我希望能够在本地以独立模式运行时扮演一个角色,并将我的SparkContext指向该s3路径。我发现非IAM呼叫通常会随之而来: 是否存在提供IAM

  • 我正在尝试使用已附加到EC2实例的IAM角色来生成一组AWS SES SMTP凭据。但是,在尝试通过django发送电子邮件时,使用Amazon提供的脚本从IAM角色的密钥生成SMTP密码,并使用IAM角色的访问密钥ID。果心邮件,我收到错误。 这是我发送邮件的方式: 我如何生成密码: SMTP密码生成脚本如下所示:https://docs.aws.amazon.com/ses/latest/De

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?

  • 有很多文档解释如何将GCP中的IAM角色分配给GSuite组织的所有成员,但没有一个文档讨论更细粒度的许可。 是否可以在GSuite中创建一个管理控制台组,然后在GCP中将特定的IAM角色应用于该组的所有成员?

  • IAM

    IAM = Identity and Access Management IAM 是一个基于 Go 语言开发的身份识别与访问管理系统,用于对资源访问进行授权。最新稳定版本为:v1.6.2,建议基于稳定版安装测试。企业级的 Go 语言实战项目(可作为Go项目开发脚手架) 这里需要注意: 如果你是极客时间《Go 语言项目开发实战》专栏的读者,请使用 v1.1.0 版本(tag) 如果你是图书《从零构建