2016-08-23 1 views
1

J'ai créé une fonction lambda dans AWS dans le but d'accéder à des ressources basées sur une recherche. Par exemple: Je souhaite interroger une table dynamoDB FOO_BAR pour un client FOO via la passerelle API.Comment pouvez-vous accorder dynamiquement des autorisations à une fonction AWS Lambda pour accéder aux ressources?

La requête arrive, j'identifie sa table FOO qui est requise et je veux pouvoir appliquer une politique à ma fonction/session lambda actuelle qui donnera accès à la table FOO_BAR. Mon problème est le suivant: pour que la fonction lambda puisse interroger la table FOO_BAR, le rôle d'exécution configuré lors de la création de la fonction lambda doit avoir un accès en lecture et je ne veux accorder aucun accès générique à ce rôle.

L'API utilisée passe par un autorisateur personnalisé et j'ai appliqué une stratégie pour accéder aux API; J'espérais aussi que ma fonction lambda hériterait de la politique générée par l'Authorizer.

Pouvez-vous accorder dynamiquement des autorisations à une fonction lambda pour accéder aux ressources?

Merci!

Répondre

0

Votre fonction Lambda ne peut pas hériter des autorisations de votre autorisateur personnalisé.

Vous pouvez accorder des autorisations ou générer de nouvelles informations d'identification IAM dans votre fonction Lambda et les utiliser pour l'appel DynamoDB via une instance de client distincte. Je ne suis pas sûr si votre approche offre des avantages de sécurité par rapport aux caractères génériques. La fonction qui accorde des autorisations à elle-même a exactement le même niveau de sécurité.

+1

Merci kixorz, j'en suis arrivé aux mêmes conclusions. Dans mon cas, il s'avère trop coûteux en temps pour accéder à la ressource via API, donc j'ai implémenté [STS] (http://docs.aws.amazon.com/STS/latest/APIReference/Welcome .html) et permettant un accès direct aux ressources en fonction d'une politique générée. Ceci coupe le temps de pullup/teardown dans la fonction Lambda. Cela fonctionne beaucoup mieux pour l'accès à des ressources comme SQS. L'utilisateur 1 obtient un jeton via sts via notre API et ce jeton ne donne accès qu'à sa ressource. – Brian

+0

Très belle solution! – kixorz