我有一个使用Cognito联合用户的无服务器应用程序。 对于api网关,我使用aws_iam authorizer,并为api网关的每个请求提供aws凭据。
现在,当我的lambda被执行时,我认为将使用分配给我的cognito用户的角色,并且我将有权访问所需的资源。 但似乎lambda执行角色仍然需要拥有执行这些资源的权限。
我是否真的需要拥有相同权限集的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。