Amazon web services 如何将调用方IAM策略应用于lambda函数执行?
假设有一个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角色的权限运行,无论是谁或
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
,则抛出一个用户未授权错误