У меня есть веб-интерфейс, которому предоставляется неаутентифицированный доступ к AWS Перевести через AWS Javascript SDK и AWS Identity Pool (на данный момент это всего лишь прототип, я скоро добавлю аутентификацию) .
Облачная информация для пула удостоверений выглядит следующим образом -
---
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
и все работает нормально.
Теперь, однако, я хочу вставить некоторые логики c между веб-страница и перевод. Поэтому я установил лямбду, которая перехватывает запрос, вызывает Translate через boto3
, добавляет мой новый logi c и возвращает расширенный перевод.
Я также изменил управляемую политику в приведенном выше: TranslateFullAccess
до AWSLambdaReadOnlyAccess
.
Теперь я вижу, что в Javascript SDK есть метод для вызова лямбда-функции с учетом ARN -
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke -property
но я немного обеспокоен, что это может быть использовано кем-то, кто знает мой идентификатор пула удостоверений и, следовательно, теоретически может назвать любой моих лямбд, если они знают ARN.
Итак, есть ли способ в коде облачной информации Identity Pool ограничить доступ только к одной лямбде? Если кто-то предоставляет неавторизованный доступ к Lambdas через пул удостоверений, как должен быть ограничен объем этого доступа? Или я здесь излишне параноидален (как кто-нибудь узнает мои ARN?)
Большое спасибо.