View a markdown version of this page

Conceder a outras contas acesso à função do Lambda - AWS Lambda

Conceder a outras contas acesso à função do Lambda

Para compartilhar uma função com outra Conta da AWS, adicione uma instrução de permissões entre contas à política baseada no recurso da função. Recomendamos usar put-resource-policy para criar uma política JSON completa. Com put-resource-policy, você pode especificar várias entidades principais, adicionar condições e criar instruções de negação. Você também pode usar add-permission para casos de uso simples.

Importante

O uso de put-resource-policy substitui qualquer política existente baseada em recursos no recurso. Se o recurso já tiver as permissões definidas com add-permission, put-resource-policy as substituirá. Use get-resource-policy para recuperar a política existente antes de fazer alterações.

Uso de uma política JSON completa (recomendado)

O exemplo de política a seguir concede a duas Contas da AWS permissões para invocar uma função, sendo uma delas restrita a um perfil do IAM específico:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-invoke", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:role/cross-account-role" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Salve a política em um arquivo chamado policy.json e aplique-a. O resource-arn pode especificar uma função, versão ou alias:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json

Você também pode restringir o acesso entre contas a versões específicas usando um alias. A política a seguir concede acesso de invocação somente por meio do alias prod:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-prod-alias", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function:prod" } ] }

Salve essa política em um arquivo chamado alias-policy.json e aplique-a ao alias:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function:prod \ --policy file://alias-policy.json

A política baseada em recursos concede permissão para a outra conta acessar a função, mas não permite que os usuários nessa conta excedam suas permissões. Os usuários na outra conta devem ter as permissões de usuário correspondentes para usar a API do Lambda.

Conceda acesso entre contas para a maioria das ações de API que operam em uma função existente. Por exemplo, é possível conceder acesso a lambda:ListAliases para obter uma lista de aliases ou a lambda:GetFunction para permitir que eles façam download do código da função.

Para conceder permissão a outras contas para várias funções ou para ações que não operem em uma função, recomendamos usar as funções do IAM.

Uso de add-permission

Para casos de uso simples, você pode usar add-permission para adicionar instruções individuais. O exemplo a seguir concede permissão à conta 111122223333 para invocar my-function com o alias prod:

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --output text

A seguinte saída deverá ser mostrada:

{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
nota

Se você chamar add-permission depois de put-resource-policy, a nova instrução será vinculada à política JSON existente.

Para limitar o acesso a um usuário ou função em outra conta, especifique o ARN completo da identidade como o principal. Por exemplo, arn:aws:iam::123456789012:user/developer.