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

Amazon web services 如何将调用方IAM策略应用于lambda函数执行?,amazon-web-services,amazon-s3,aws-lambda,amazon-iam,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Iam,假设有一个lambda函数具有访问s3://my bucket/users/的IAM策略。此函数由用户Bob调用,该用户具有对s3://my bucket/users/Bob的IAM策略访问权限。是否有方法“合并”或将Bob用户的策略应用于lambda函数以限制访问?例如,如果Bob传递文件夹名Alicelambda,则尝试访问s3://my bucket/users/Alice时,lambda函数失败 有什么想法吗?没有 Lambda函数将使用与函数本身相关联的IAM角色的权限运行,无论是谁或

假设有一个lambda函数具有访问
s3://my bucket/users/
的IAM策略。此函数由用户Bob调用,该用户具有对
s3://my bucket/users/Bob
的IAM策略访问权限。是否有方法“合并”或将Bob用户的策略应用于lambda函数以限制访问?例如,如果Bob传递文件夹名
Alice
lambda,则尝试访问
s3://my bucket/users/Alice
时,lambda函数失败

有什么想法吗?

没有

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


一个选项是Bob在调用函数时将一组凭据传递给函数(作为参数,将在
事件中传递给函数),然后让Lambda函数使用这些凭据。但是,这是一件非常不寻常的事情。

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

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

  • 只有AWS Lambda具有对S3存储桶的编程访问权限
    S3://my bucket/users/
  • 让我们假设用户Bob已通过身份验证,并且具有身份验证令牌
  • Bob调用带有身份验证令牌的AWS Lambda作为请求的一部分,以及他们想要访问的S3文件
  • AWS Lambda验证身份验证令牌
  • 应用程序维护S3 bucket的哪个S3后缀
    S3://my bucket/users/
    可由数据库中的用户完全访问
  • 假设Bob可以访问以下后缀
    /Bob
    /admin
  • 认证后,AWS Lambda有一个授权库,用于查询数据库中的授权前缀
  • 如果Bob试图访问
    s3://my bucket/users/Bob/personaldails.json
    s3://my bucket/users/admin/employeeDetails.json
    ,则请求被批准并获取记录。请求被批准,因为Bob被授权使用
    /Bob
    /admin
    后缀
  • 如果Bob试图访问
    s3://my bucket/users/alice
    ,则抛出一个用户未授权错误