Autorizar el acceso con la gestión de identidades y accesos

Puedes usar Gestión de Identidades y Accesos (IAM) para autorizar identidades a realizar acciones administrativas en funciones creadas con la API Cloud Functions v2, por ejemplo, con gcloud functions, la API REST o Terraform. Entre las acciones de administración se incluyen la creación, la actualización y la eliminación de funciones. Para obtener información sobre el acceso de gestión de identidades y accesos a las funciones creadas con Cloud Run, consulta el artículo sobre el control de acceso con gestión de identidades y accesos.

En IAM, asignas a los principales (las identidades que quieres habilitar, normalmente el correo de un usuario o de una cuenta de servicio) los roles de IAM adecuados en la función o el proyecto. Estos roles incluyen permisos que definen las acciones que puede realizar la entidad principal.

Antes de empezar

Para obtener el permiso que necesitas para controlar el acceso a una función específica o a todas las funciones de un proyecto, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Cloud Functions (roles/roles/cloudfunctions.admin) en la función o en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso cloudfunctions.functions.setIamPolicy , que es necesario para controlar el acceso a una función específica o a todas las funciones de un proyecto.

También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Consulta la lista completa de roles de gestión de identidades y accesos de Cloud Functions y sus permisos asociados.

Habilitar el acceso a una función

Puedes controlar las acciones de una función asignando o restringiendo roles a identidades concretas mediante Gestión de Identidades y Accesos.

Añadir principales y asignar roles

Usa el comando gcloud functions add-iam-policy-binding:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE
 

donde FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es el identificador de la entidad principal (normalmente, un correo electrónico) y ROLE es el rol.

Para ver una lista de las fuentes que pueden proporcionar un PRINCIPAL_ID, consulta Identificadores principales. Para ver una lista de los valores aceptables de ROLE, consulta la página de referencia de roles de gestión de identidades y accesos.

Eliminar roles de principales

Usa el comando gcloud functions remove-iam-policy-binding:

gcloud functions remove-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE

donde FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es la dirección de correo que identifica la cuenta de servicio, precedida por serviceAccount:, y ROLE es el rol.

Para ver una lista de las fuentes aceptables de PRINCIPAL_ID, consulta Identificadores de la entidad principal. Para ver una lista de los valores posibles de ROLE, consulta la página de referencia de los roles de gestión de identidades y accesos.

Si se han asignado varios roles a la principal, asegúrate de especificar el que quieras quitar.

Adición de principales en bloque

Crea una política de gestión de identidades y accesos llamada, por ejemplo, policy.json:

  {
    "bindings": [
      {
        "role": ROLE,
        "members": [
        PRINCIPAL_ID
        ]
      }
    ]
  }

Usa el comando gcloud functions set-iam-policy:

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Para ver una lista de las fuentes aceptables de PRINCIPAL_ID, consulta Identificadores de la entidad principal. Para ver una lista de valores aceptables para ROLE, consulta la página de referencia de roles de gestión de identidades y accesos.

Ver principales

Para ver las entidades, usa el comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Permitir la invocación de funciones HTTP sin autenticar

Para permitir las invocaciones sin autenticar, debes especificarlo durante o después de la implementación.

Utilizas una variante especial del método descrito anteriormente para conceder a los invocadores no autenticados la capacidad de invocar una función HTTP.

Si desarrollas funciones en un proyecto que está sujeto a la política de organización de uso compartido restringido al dominio, no podrás permitir la invocación no autenticada de una función.

En el momento del despliegue

El comando gcloud functions deploy incluye una petición para ayudarte a configurar los permisos de invocación durante la creación de la función. También puede incluir la marca --allow-unauthenticated:

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
  --allow-unauthenticated \
  ...

Las implementaciones posteriores de la misma función no cambian su estado, aunque no uses esta marca.

Después de la implementación

Usa el comando gcloud run services add-iam-policy-binding para asignar el rol roles/run.invoker a la función específica:

gcloud run services add-iam-policy-binding FUNCTION_NAME \
  --member="allUsers" \
  --role="roles/run.invoker"

Para obtener más información sobre estos campos, consulta la referencia de gcloud run add-iam-policy-binding.