【问题标题】:Provide individual access permissions through Amazon Cognito通过 Amazon Cognito 提供个人访问权限
【发布时间】:2021-10-20 14:44:39
【问题描述】:

我是一家公司的一员,我们向客户发送传感器,这些传感器将数据发送到特定于该客户的 Amazon S3 存储桶或文件夹。我正在尝试在网络上创建一个门户,他们可以通过 Amazon Cognito 登录并查看他们的数据。我跟随User Authentication and Authorization with AWS Cognito创建了一个与我想要的相当接近的系统。

不过,这并不是我想要的。我希望每个用户都能访问不同的数据,但我不想在每次有人新注册帐户时都创建新的 IAM 角色。我正在想象以下流程:

  1. 客户收到传感器(每个传感器都附有传感器 ID)
  2. 客户进入在线门户,并在创建帐户时输入传感器的 ID
  3. 使用给定的传感器 ID,创建一个新的 IAM 角色,让他们只能访问 S3 上允许他们查看的数据。
  4. 每次客户登录时,他们都会代入注册时创建的 IAM 角色。
  5. 如果将更多数据添加到他们有权访问的 S3 中的存储桶或文件夹中,他们将能够看到这些数据。

不完全确定如何使这种设置成为现实,因此任何概念上的帮助都会很棒。谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam


    【解决方案1】:

    根据您列出的内容,听起来Amazon S3: Allows Amazon Cognito users to access objects in their bucket 可能有效,因为您的目标是保护 S3 中的数据?

    或者,您可以查看Attribute-based access control (ABAC),但这需要您能够标记从 Cognito 开始的会话,而且我不是 100% 可以做到这一点(就像您可以使用 SAML 联合)。

    【讨论】:

    • @rowanau 这很漂亮!您知道 ABAC 是否适用于 Amazon S3 标签吗?众所周知,它们很难访问。
    • 经过仔细检查,没有一个有用的 S3 API 调用支持 RequestTag 条件,这将使其成为此特定场景的障碍。
    • 第一个链接看起来真不错!我认为这可能是我正在寻找的......一个问题:它说将“应用程序名称”放入策略(以及用户文件)中。我的“应用程序名称”是什么?那是我的应用客户端名称吗?再次感谢您。
    • 它只是用作对象前缀,所以只要它在两个策略语句中保持一致,你怎么称呼它都没有关系。如果您没有在桶中混合其他任何东西,您可能会完全放弃它。
    • 哦,我想我明白了!我必须为 s3.listBucket() 函数的参数添加一个“前缀”属性。我只是让它等于策略中设置的前缀,现在我很确定它工作得很好!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多