

# Control de acceso a las URL de las funciones de Lambda
<a name="urls-auth"></a>

**nota**  
A partir de octubre de 2025, las nuevas URL de función requerirán ambos permisos, `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction`.

Puede controlar el acceso a las URL de funciones de Lambda mediante el parámetro [AuthType](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html#lambda-CreateFunctionUrlConfig-request-AuthType) combinado con [políticas basadas en recursos](access-control-resource-based.md) adjuntas a la función específica. La configuración de estos dos componentes determina quién puede invocar o realizar otras acciones administrativas en la URL de función.

El parámetro `AuthType` determina cómo Lambda autentica o autoriza las solicitudes a la URL de función. Al configurar la URL de función, debe especificar una de las siguientes opciones de `AuthType`:
+ `AWS_IAM`: Lambda utiliza AWS Identity and Access Management (IAM) para autenticar y autorizar solicitudes basadas en la política de identidad de la entidad principal de IAM y la política basada en recursos de la función. Elija esta opción si desea que solo los usuarios y roles autenticados invoquen su función a través de la URL de función.
+ `NONE`: Lambda no realiza ninguna autenticación antes de invocar la función. Sin embargo, la política basada en recursos de la función siempre está vigente y debe conceder acceso público para que la URL de función pueda recibir solicitudes. Elija esta opción para permitir el acceso público y no autenticado a la URL de función.

Para obtener más información sobre la seguridad, puede utilizar AWS Identity and Access Management Access Analyzer para obtener un análisis exhaustivo del acceso externo a la URL de función. IAM Access Analyzer también supervisa los permisos nuevos o actualizados en las funciones de Lambda para ayudarle a identificar los permisos que otorgan acceso público y entre cuentas. Puede utilizar IAM Access Analyzer sin cargo. Para comenzar a utilizar IAM Access Analyzer, consulte [Uso de AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

Esta página contiene ejemplos de políticas basadas en recursos para ambos tipos de autenticación y cómo crear estas políticas mediante la operación de la API [AddPermission](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html) o la consola de Lambda. Para obtener información acerca de cómo invocar la URL de función después de configurar los permisos, consulte [Invocación de URL de funciones de Lambda](urls-invocation.md).

**Topics**
+ [Uso del tipo de autenticación `AWS_IAM`](#urls-auth-iam)
+ [Uso del tipo de autenticación `NONE`](#urls-auth-none)
+ [Gobierno y control de acceso](#urls-governance)

## Uso del tipo de autenticación `AWS_IAM`
<a name="urls-auth-iam"></a>

Si elige el tipo de autenticación `AWS_IAM`, los usuarios que necesiten invocar la URL de función de Lambda deben tener el permiso `lambda:InvokeFunctionUrl` y también el permiso `lambda:InvokeFunction`. Según quién realice la solicitud de invocación, es posible que deba conceder este permiso mediante una [política basada en recursos](access-control-resource-based.md).

Si la entidad principal que realiza la solicitud está en la misma Cuenta de AWS que la URL de función, entonces la entidad principal debe tener **o bien** los permisos `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction` en su [política basada en identidad](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html), **o** permisos concedidos en la política basada en recursos de la función. En otras palabras, una política basada en recursos es opcional si el usuario ya tiene permisos `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction` en su política basada en identidad. La evaluación de políticas sigue las reglas descritas en la [lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html).

Si la entidad principal que realiza la solicitud se encuentra en una cuenta diferente, la entidad principal debe tener **tanto** una política basada en identidad que le otorgue permisos `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction` **como** permisos concedidos en una política basada en recursos sobre la función que intenta invocar. La evaluación de políticas sigue las reglas descritas en [Cómo determinar si una solicitud se permite o se deniega entre cuentas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html#policy-eval-cross-account).

La siguiente política basada en recursos permite al rol `example` en la Cuenta de AWS `444455556666` invocar la URL de función asociada a la función `my-function`. La clave de contexto [lambda:InvokedViaFunctionUrl](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) restringe la acción `lambda:InvokeFunction` a las llamadas de la URL de función. Esto significa que la entidad principal debe usar la URL de función para invocar la función. Si no incluye `lambda:InvokedViaFunctionUrl`, la entidad principal puede invocar su función mediante otros métodos de invocación, además de la URL de función.

**Example : política entre cuentas basada en recursos**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/example"
      },
      "Action": "lambda:InvokeFunctionUrl",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
      "Condition": {
        "StringEquals": {
          "lambda:FunctionUrlAuthType": "AWS_IAM"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/example"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
      "Condition": {
        "Bool": {
          "lambda:InvokedViaFunctionUrl": "true"
        }
      }
    }
  ]
}
```

Puede crear esta política basada en recursos a través de la consola siguiendo estos pasos:

**Para conceder permisos de invocación de URL a otra cuenta (consola)**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija el nombre de la función para la que desea conceder permisos de invocación de la URL.

1. Elija la pestaña **Configuration** (Configuración) y, a continuación, elija **Permissions** (Permisos).

1. En **Resource-based policy** (Política basada en recursos), elija **Add permissions** (Agregar permisos).

1. Elija **Function URL** (URL de función).

1. En **Auth type** (Tipo de autenticación), elija **AWS\$1IAM**.

1. Introduzca un **identificador de estado de cuenta** para su declaración de póliza.

1. En **Entidad principal**, ingrese el ID de cuenta o el nombre de recurso de Amazon (ARN) del usuario o rol al que desea conceder permisos. Por ejemplo: **444455556666**.

1. Seleccione **Save**.

Como alternativa, puede crear esta instrucción de política mediante los comandos [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) AWS Command Line Interface (AWS CLI). Al usar la AWS CLI, debe agregar los estados de cuenta `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction` los estados por separado. Por ejemplo:

```
aws lambda add-permission --function-name my-function \
  --statement-id UrlPolicyInvokeURL \
  --action lambda:InvokeFunctionUrl \
  --principal 444455556666 \
  --function-url-auth-type AWS_IAM
```

```
aws lambda add-permission --function-name my-function \
  --statement-id UrlPolicyInvokeFunction \
  --action lambda:InvokeFunction \
  --principal 444455556666 \
  --invoked-via-function-url
```

## Uso del tipo de autenticación `NONE`
<a name="urls-auth-none"></a>

**importante**  
Cuando el tipo de autenticación de la URL de función es `NONE` y tiene una [política basada en recursos](access-control-resource-based.md) que concede acceso público, cualquier usuario no autenticado con la URL de función puede invocar la función.

En algunos casos, es posible que desee que la URL de función sea pública. Por ejemplo, es posible que desee atender solicitudes realizadas directamente desde un navegador web. Para permitir el acceso público a la URL de función, elija el tipo de autenticación `NONE`.

Si elige el tipo de autenticación `NONE`, Lambda no utilizará IAM para autenticar las solicitudes a la URL de función. Sin embargo, su función debe tener una política basada en recursos que permita `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction`. Al crear una URL de función con tipo de autenticación `NONE` a través de la consola o AWS Serverless Application Model (AWS SAM), Lambda crea automáticamente la política basada en recursos por usted. Si utiliza la AWS CLI, AWS CloudFormation o la API de Lambda directamente, debe [agregar la política usted](#policy-cli).

Le recomendamos que incluya la clave de contexto [lambda:InvokedViaFunctionUrlL](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) en sus políticas basadas en recursos cuando utilice el tipo de autenticación `NONE`. Esta clave de contexto garantiza que la función solo se pueda invocar a través de la URL de función y no a través de otros métodos de invocación.

Tenga en cuenta lo siguientes sobre esta política:
+ Todas las entidades pueden llamar `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction`. Esto significa que cualquier persona que tenga la URL de función puede invocarla.
+ El valor de la clave de condición `lambda:FunctionUrlAuthType` es `NONE`. Esto significa que la instrucción de política solo permite el acceso cuando el tipo de autenticación de la URL de función también es `NONE`.
+ La condición `lambda:InvokedViaFunctionUrl` garantiza que la función solo se pueda invocar a través de la URL de función y no a través de otros métodos de invocación.

**Example : política predeterminada basada en recursos para el tipo de autenticación NONE**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "FunctionURLAllowPublicAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "lambda:InvokeFunctionUrl",
      "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
      "Condition": {
        "StringEquals": {
          "lambda:FunctionUrlAuthType": "NONE"
        }
      }
    },
    {
      "Sid": "FunctionURLInvokeAllowPublicAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
      "Condition": {
        "Bool": {
          "lambda:InvokedViaFunctionUrl": "true"
        }
      }
    }
  ]
}
```

**Crear la política basada en recursos con AWS CLI**  
A menos que utilice la consola o AWS SAM para crear una URL de función con un tipo de autenticación `NONE`, debe agregar usted mismo la política basada en recursos. Utilice los siguientes comandos para crear declaraciones para los permisos `lambda:InvokeFunctionUrl` y `lambda:InvokeFunction`. Cada declaración debe añadirse en un comando independiente.

```
aws lambda add-permission \
  --function-name UrlTestFunction \
  --statement-id UrlPolicyInvokeURL \
  --action lambda:InvokeFunctionUrl \
  --principal * \
  --function-url-auth-type NONE
```

```
aws lambda add-permission \
  --function-name UrlTestFunction \
  --statement-id UrlPolicyInvokeFunction \
  --action lambda:InvokeFunction \
  --principal * \
  --invoked-via-function-url
```

**nota**  
Si elimina una URL de función con el tipo de autenticación `NONE`, Lambda no elimina de forma automática la política basada en recursos asociada. Si desea eliminar esta política, debe hacerlo de forma manual.

Si la política basada en recursos de una función no concede permisos `lambda:invokeFunctionUrl` y `lambda:InvokeFunction`, los usuarios obtendrán un código de error 403 Forbidden (Prohibido) cuando intenten invocar la URL de función, incluso si la URL de función utiliza el tipo de autenticación . Esto ocurrirá incluso si la URL de función utiliza el tipo de autenticación `NONE`.

## Gobierno y control de acceso
<a name="urls-governance"></a>

Además de los permisos de invocación de la URL de función, también puede controlar el acceso a las acciones utilizadas para configurar las URL de funciones. Lambda es compatible con las siguientes acciones de política de IAM para las URL de funciones:
+ `lambda:InvokeFunctionUrl`: invocar una función de Lambda mediante la URL de función.
+ `lambda:CreateFunctionUrlConfig` – crear una URL de función y configurar su `AuthType`.
+ `lambda:UpdateFunctionUrlConfig` – actualizar una configuración de URL de función y su `AuthType`.
+ `lambda:GetFunctionUrlConfig`: ver los detalles de una URL de función.
+ `lambda:ListFunctionUrlConfigs`: enumerar las configuraciones de la URL de función.
+ `lambda:DeleteFunctionUrlConfig`: eliminar una URL de función.

Para permitir o denegar el acceso de otras entidades de AWS a la URL de función, incluya estas acciones en las políticas de IAM. Por ejemplo, la siguiente política concede permisos al rol `example` en la Cuenta de AWS `444455556666` para actualizar la URL de función para la función **my-function** en la cuenta `123456789012`.

**Example política de URL de función entre cuentas**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::444455556666:role/example"
            },
            "Action": "lambda:UpdateFunctionUrlConfig",
            "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function"
        }
    ]
}
```

### Claves de condición
<a name="urls-condition-keys"></a>

Para obtener un control de acceso detallado sobre las URL de funciones, utilice claves de contexto de condición. Lambda es compatible con las siguientes claves de contexto para las URL de funciones.
+ `lambda:FunctionUrlAuthType`: define un valor de enumeración que describe el tipo de autenticación que utiliza la URL de función. El valor puede ser `AWS_IAM` o `NONE`.
+ `lambda:InvokedViaFunctionUrl`: restringe la acción `lambda:InvokeFunction` a las llamadas realizadas a través de la URL de función. Esto garantiza que la función solo se pueda invocar a través de la URL de función y no a través de otros métodos de invocación. Para ver ejemplos de políticas basadas en recursos que utilizan la clave de contexto `lambda:InvokedViaFunctionUrl`, consulte los ejemplos de [Uso del tipo de autenticación `AWS_IAM`](#urls-auth-iam) y [Uso del tipo de autenticación `NONE`](#urls-auth-none).

Puede utilizar estas claves de contexto en las políticas asociadas a la función. Por ejemplo, es posible que desee restringir quién puede realizar cambios de configuración en las URL de funciones. Para denegar todas las solicitudes `UpdateFunctionUrlConfig` a cualquier función con tipo de autenticación de URL `NONE`, puede definir la siguiente política:

**Example política de URL de función con denegación explícita**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action":[
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "NONE"
                }
            }
        }
    ]
}
```

Para conceder permisos al rol `example` en la Cuenta de AWS `444455556666` para hacer solicitudes `CreateFunctionUrlConfig` y `UpdateFunctionUrlConfig` en funciones con tipo de autenticación de URL `AWS_IAM`, puede definir la siguiente política:

**Example política de URL de función con permiso explícito**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::444455556666:role/example"
            },
            "Action":[
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}
```

También puede utilizar esta clave de condición en una [política de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP). Utilice las SCP para administrar los permisos en toda una organización en AWS Organizations. Por ejemplo, para denegar a los usuarios la creación o actualización de URL de funciones que utilicen un tipo de autenticación distinto a `AWS_IAM`, utilice la siguiente política de control de servicios:

**Example SCP de URL de función con denegación explícita**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action":[
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:*:123456789012:function:*",
            "Condition": {
                "StringNotEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}
```