Concesión de acceso a las funciones a una organización
Para conceder permisos a todas las cuentas de una organización de AWS Organizations, le recomendamos usar put-resource-policy para crear una política JSON completa con la clave de condición aws:PrincipalOrgID.
importante
El uso de put-resource-policy reemplaza cualquier política basada en recursos existente en el recurso. Si el recurso ya tiene los permisos definidos con add-permission, put-resource-policy los sobrescribe. Use get-resource-policy para recuperar la política existente antes de realizar cambios.
Uso de una política JSON completa (recomendado)
La siguiente política de ejemplo concede acceso de invocación a todas las Cuentas de AWS de una organización o-a1b2c3d4e5f:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }
Guarde la política en un archivo denominado policy.json y aplíquela:
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json
Con una política JSON completa, también puede denegar el acceso a cuentas específicas de una organización:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-org", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } }, { "Sid": "deny-specific-account", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::999888777666:root" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ] } ] }
Uso de add-permission
Para casos de uso sencillos, puede usar add-permission con la opción principal-org-id. Los siguientes ejemplos del comando de la otorga acceso de invocación a todos los usuarios de la organización o-a1b2c3d4e5f:
aws lambda add-permission \ --function-name my-function \ --statement-id org-access \ --action lambda:InvokeFunction \ --principal * \ --principal-org-id o-a1b2c3d4e5f
nota
En este comando, Principal es *. Esto significa que todos los usuarios de la organización o-a1b2c3d4e5fobtener permisos de invocación de funciones. Si especifica una Cuenta de AWS o un rol como Principal, entonces solo esa entidad principal obtiene permisos de invocación de funciones, pero solo si también forman parte de la organización o-a1b2c3d4e5f.
Para obtener más información, consulte aws:PrincipalOrgID en la Guía del usuario de IAM.