Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

284
Visualizações
AWS Lambda: asigne a Lambda el mismo rol que el usuario que inició sesión

Estoy creando una aplicación sin servidor utilizando las siguientes tecnologías de AWS:

  • Cognito de AWS
  • AWSLambda
  • Puerta de enlace de la API de AWS
  • IAM de AWS

Todas las solicitudes del cliente (programadas en Angular2) pasan por la puerta de enlace API.

Creé un rol de IAM para usuarios registrados: Cognito_MyApp_Auth . Utilizo un Cognito User Pool Authorizer para asegurarme de que todas las llamadas a mi API provengan de usuarios registrados válidos.

Pregunta: ¿Cómo puedo otorgar a la función Lambda el mismo permiso que el usuario que inició sesión?

Caso de uso: un usuario que haya iniciado sesión solo puede crear, editar o eliminar en su propio depósito de S3, por lo que otorgar permiso completo de Lambda a S3 no es una opción.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Cognito_MyApp_Auth no establece diferentes permisos de usuario a usuario. Solo define los permisos para cualquier usuario firmado. Por lo tanto, debe permitir el acceso a todos los depósitos en la política de este rol. (Sin embargo, limitaría este acceso a depósitos que comiencen con un prefijo específico).

Afortunadamente, cuando Lambda se invoca a través de Cognito SDK, utilizando las credenciales proporcionadas por Cognito, el objeto de contexto que se pasa al controlador lleva la identidad de Cognito utilizada para invocar a Lambda.

Para Node.js puede ver cómo obtener esta información:

http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html#nodejs-prog-model-context-example

 if (typeof context.identity !== 'undefined') { console.log('Cognito identity ID =', context.identity.cognitoIdentityId); }

Una vez que tenga la identificación de identidad, puede configurar su propia lógica para limitar el acceso del usuario a su propio depósito.

Este fue el caso cuando llamó a Lambda directamente desde la aplicación utilizando Cognito SDK. Si usa API Gateway, hay una buena publicación de un empleado de AWS: https://forums.aws.amazon.com/thread.jspa?messageID=717379

about 4 years ago · Santiago Trujillo Relatório

0

No existe una forma directa de otorgar a la función Lambda los mismos permisos que el usuario que inició sesión; sin embargo, debería poder implementar su caso de uso utilizando grupos de identidades y políticas de Cognito utilizando la variable de contexto de identidad de cognito.

Para este enfoque, no utilizará grupos de usuarios de Cognito ni el autorizador de grupos de usuarios de Cognito. En su lugar, utiliza un grupo de identidades de Cognito para la identidad federada. Establezca la autorización en sus métodos API como AWS_IAM. No use Lambda como integración, sino use el proxy de AWS para integrarse directamente en S3. Configure la solicitud de integración para usar la identidad de la persona que llama.

Para llamar a la API, deberá usar Cognito para obtener credenciales temporales y luego firmar su solicitud de API con ellas.

Con este enfoque, la llamada de S3 se realiza con el contexto de identidad de Cognito, por lo que puede adjuntar una política que utilice variables de identidad de cognito al rol de IAM asociado con usuarios autenticados en su grupo de identidades de Cognito.

Por ejemplo:

 { "Effect": "Allow", "Action": [ "s3:PutObject" ] "Resource": [ "arn:aws:s3:::BUCKET_FOR_USER_${cognito-identity.amazonaws.com:sub}/*" ] }

Vea esta publicación para un caso de uso similar.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda