lambda执行角色vs aws_iam

时间:2018-05-17 12:24:35

标签: lambda serverless cognito aws-iam

我有一个使用Cognito联合用户的无服务器应用程序。 对于api网关,我使用aws_iam authorizer,并为api网关的每个请求提供aws凭据。

现在,当我的lambda被执行时,我认为将使用分配给我的cognito用户的角色,并且我将有权访问所需的资源。 但似乎lambda执行角色仍然需要拥有执行这些资源的权限。

我是否真的需要拥有相同权限集的2个角色? 如果是这样,认知角色的重点是什么?

2 个答案:

答案 0 :(得分:2)

您传递给API网关的IAM凭据将在API网关级别进行评估(如果您向IAM角色添加权限,授予对特定端点的访问权限,则将在 aws_iam_authorizer 处对其进行评估)。

但是,假定的Cognito IAM角色和Lambda执行权限之间存在断开连接。

Lambda是使用附加到Lambda函数的角色的权限执行的,而不是Cognito Identity IAM角色,该角色被假定为调用API。

答案 1 :(得分:0)

对此我也有类似的问题。我有一个无服务器应用程序,其中有管理员用户和普通用户。

一个lambda函数,我查询Dynamo。 API网关正在传入用户令牌,我可以从中检索凭证(id,机密,令牌),并使用调用该API的用户(即管理员或普通用户)的凭证相应地调用Dynamo。我的普通用户具有一个策略角色,该策略仅允许他们使用“ dynamodb:LeadingKeys”条件访问其数据。管理员用户可以查询表中的任何内容。

在这种情况下-如果我始终将令牌中的这些凭据用于发电机调用,那么Lambda 执行角色是否仍需要发电机权限?如果是这样,则在进行发电机调用时,实际上正在使用什么凭据? Lambda执行角色还是令牌中的凭证?

如果我要从令牌中检索凭据,并使用这些凭据查询发电机,那么我不确定为什么我的Lambda执行角色需要发电机privs。