gpt4 book ai didi

aws-cloudformation - 限制AWS身份池仅访问单个Lambda

转载 作者:行者123 更新时间:2023-12-03 07:27:34 24 4
gpt4 key购买 nike

我有一个 Web UI,可以通过 AWS Javascript SDK 和 AWS 身份池授予对 AWS Translate 未经身份验证的访问权限(目前只是一个原型(prototype),我很快就会添加身份验证)。

身份池的 Cloudformation 如下所示 -

---
AWSTemplateFormatVersion: 2010-09-09
Parameters:
AppName:
Type: String
Outputs:
IdentityPoolId:
Value: !Ref IdentityPool # returns id
Resources:
IdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
AllowUnauthenticatedIdentities: true
IdentityPoolName: !Sub ${AppName}-identity
UnauthRole:
Properties:
AssumeRolePolicyDocument:
Statement:
- Action:
- sts:AssumeRoleWithWebIdentity
Condition:
"ForAnyValue:StringLike":
"cognito-identity.amazonaws.com:amr": unauthenticated
StringEquals:
"cognito-identity.amazonaws.com:aud": !Ref IdentityPool
Effect: Allow
Principal:
Federated: cognito-identity.amazonaws.com
Version: 2012-10-17
ManagedPolicyArns:
- arn:aws:iam::aws:policy/TranslateFullAccess
Path: /
Type: AWS::IAM::Role
RoleMapping:
Properties:
IdentityPoolId: !Ref IdentityPool
Roles:
unauthenticated: !GetAtt UnauthRole.Arn
Type: AWS::Cognito::IdentityPoolRoleAttachment

一切正常。

现在我想在网页和翻译之间插入一些逻辑。因此,我设置了一个 Lambda 来拦截请求,通过 boto3 调用 Translate,添加我的新逻辑并返回增强的翻译。

我还将上述托管策略从 TranslateFullAccess 更改为 AWSLambdaReadOnlyAccess

现在我看到 Javascript SDK 有一个方法可以调用给定 ARN 的 Lambda 函数 -

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property

但我有点担心这可能会被知道我的身份池 ID 的人滥用,因此理论上可以调用任何我的 Lambda(如果他们知道 ARN)。

那么,身份池 Cloudformation 代码中是否有任何方法可以限制仅访问单个 Lambda?如果有人通过身份池向 Lambda 提供未经身份验证的访问权限,应如何限制该访问的范围?或者我是否过于偏执了(别人怎么会知道我的 ARN?)

非常感谢。

最佳答案

您的应用程序用户存在于用户池中。您已将相关用户池添加到身份池,因此您将能够向应用程序用户授予对某些 AWS 服务的访问权限。

执行此操作的方法是为此身份池创建 IAM 角色。在此 IAM 角色中,通过操作 'execute-api:Invoke',您可以指定相关资源,该资源将是 lambda 的 API 网关路径。

请记住,通过这样做,与此身份池关联的用户池中的所有用户都将能够使用此 lambda。

示例(来源:IAM Policy Examples for API Execution Permissions):

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:us-east-1:*:a123456789/test/POST/mydemoresource/*"
]
}
]
}

关于aws-cloudformation - 限制AWS身份池仅访问单个Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60799325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com