如何将调用方IAM策略应用于lambda函数执行



假设有一个lambda函数具有访问s3://my-bucket/users/的IAM策略。此函数由具有对s3://my-bucket/users/bob的IAM策略访问权限的用户Bob调用。有没有办法";合并";或者将Bob用户的策略应用于lambda函数以限制访问?例如,如果Bob传递文件夹名称Alice,则lambda函数在尝试访问s3://my-bucket/users/alice时失败。

有什么想法吗?

否。

Lambda函数将使用与函数本身关联的IAM角色的权限运行,无论是谁或什么触发了该函数。

一种选择是Bob在调用函数时将一组凭据传递给函数(作为将传递给event中函数的参数(,然后让Lambda函数使用这些凭据。然而,这是一件极不寻常的事情

我认为这是一个授权问题,需要自定义授权模块。

解决这个问题的一种方法如下

  1. 只有AWS Lambda可以编程访问S3存储桶s3://my-bucket/users/
  2. 让我们假设用户Bob已通过身份验证,并且具有身份验证令牌
  3. Bob调用带有身份验证令牌的AWS Lambda作为请求的一部分,同时调用他们想要访问的S3文件
  4. AWS Lambda验证身份验证令牌
  5. 应用程序在数据库中维护用户可以完全访问S3桶s3://my-bucket/users/的哪个S3后缀
  6. 假设Bob可以访问以下后缀/bob/admin
  7. 经过身份验证后,AWS Lambda拥有一个授权库,用于查询数据库中的授权前缀
  8. 若Bob试图访问s3://my-bucket/users/bob/personalDetaills.jsons3://my-bucket/users/admin/employeeDetails.json,那个么请求将被批准并获取记录。请求被批准,因为Bob被授权使用/bob/admin后缀
  9. 如果Bob正试图访问s3://my-bucket/users/alice,则会引发用户未授权错误

最新更新