Autorizar el acceso con la gestión de identidades y accesos (1.ª gen.)

Puedes usar Gestión de Identidades y Accesos (IAM) para autorizar identidades a realizar acciones administrativas en tus funciones, como crearlas, actualizarlas y eliminarlas. Añade principales (las identidades que quieras habilitar, normalmente un correo de usuario o de cuenta de servicio) a la función y, a continuación, concede a esos principales los roles de gestión de identidades y accesos adecuados. Estos roles incluyen permisos que definen las acciones que pueden realizar.

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

Consola

  1. Ve a la Google Cloud consola:

    Ir a la Google Cloud consola

  2. Marca la casilla situada junto a la función que te interese.

  3. En la parte superior de la pantalla, haz clic en Permisos. Se abrirá el panel Permisos.

  4. Haz clic en Añadir principal.

  5. En el campo Nuevos principales, introduce una o varias identidades que necesiten acceder a tu función. Normalmente, se trata del correo de un usuario o de una cuenta de servicio.

  6. Selecciona uno o varios roles en el menú desplegable Selecciona un rol. Los roles que selecciones aparecerán en el panel con una breve descripción de los permisos que conceden.

    de gestión de identidades y accesos de las funciones de Cloud Run.
  7. Haz clic en Guardar.

gcloud

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 de la entidad principal. Para ver una lista de valores aceptables para ROLE, consulta la página de referencia de roles de IAM de Cloud Run Functions.

Eliminar roles de principales

Consola

  1. Ve a la Google Cloud consola:

    Ir a la Google Cloud consola

  2. Marca la casilla situada junto a la función que te interese.

  3. En la parte superior de la pantalla, haz clic en Permisos. Se abrirá el panel Permisos.

  4. Busca el principal que quieras quitar. Busca en todos los roles que se hayan concedido a la entidad.

  5. Cuando encuentres el principal en el rol que quieras eliminar, haz clic en el icono de papelera situado junto a él. Si quieres quitarle por completo el acceso al principal, hazlo con cada rol que se le haya concedido.

gcloud

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 roles de Cloud IAM de Cloud Run Functions.

Si a la principal se le han concedido varios roles, especifica el que quieras quitar.

Adición de principales en bloque

Consola

  1. Ve a la Google Cloud consola:

    Ir a la Google Cloud consola

  2. Haz clic en las casillas situadas junto a las funciones a las que quieras conceder o restringir el acceso.

  3. En la parte superior de la pantalla, haz clic en Permisos. Se abrirá el panel Permisos.

Para añadir principales, sigue estos pasos:

  1. Haz clic en Añadir principal.

  2. En el campo Nuevos principales, introduce varias identidades que necesiten acceder a tu función.

  3. Selecciona uno o varios roles en el menú desplegable Selecciona un rol. Los roles que selecciones aparecerán en el panel con una breve descripción de los permisos que conceden.

  4. Haz clic en Guardar.

gcloud

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 IAM de Cloud Run Functions.

Ver principales

Consola

  1. Ve a la Google Cloud consola:

    Ir a la Google Cloud consola

  2. Haz clic en el nombre de la función que te interese.

  3. Selecciona la pestaña Permisos. Se abrirá el panel Permisos.

  4. Selecciona la pestaña Ver por principales para ver una lista de todos los principales que tienen permisos en la función seleccionada.

gcloud

Usa el comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Permitir la invocación de funciones HTTP sin autenticar

Desde el 15 de enero del 2020, las funciones HTTP sin la opción Permitir invocaciones sin autenticar habilitada restringen el acceso a los usuarios finales y a las cuentas de servicio que no tienen los permisos adecuados.

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.

En el momento del despliegue

Consola

En la sección Autenticación del panel Activador, selecciona Permitir las invocaciones sin autenticar.

gcloud

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 \
  --no-gen2 \
  --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

Para permitir la invocación sin autenticar de una función, asigna el rol Invocador de Cloud Functions al principal especial allUsers en la función:

Consola

  1. Ve a la Google Cloud consola:

    Ir a la Google Cloud consola

  2. Haga clic en la casilla situada junto a la función de recepción. No hagas clic en la función en sí.

  3. En la parte superior de la pantalla, haz clic en Permisos. Se abrirá el panel Permisos.

  4. Haz clic en Añadir principal.

  5. En el campo Nuevos directores, escribe allUsers.

  6. En el menú desplegable Seleccionar un rol, selecciona el rol Cloud Functions > Cloud Functions Invoker (Funciones de Cloud > Invocador de funciones de Cloud).

  7. En respuesta al cuadro de diálogo, haz clic en Permitir acceso público.

gcloud

Usa el comando gcloud functions add-iam-policy-binding para asignar el rol roles/cloudfunctions.invoker a la cuenta principal especial allUsers en la función:

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

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

Uso compartido restringido al dominio

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. Esta política restringe el uso compartido de datos públicos para reducir el riesgo de que se filtren datos.

Si quieres implementar funciones que permitan invocaciones sin autenticar, te recomendamos que elimines la política de organización de uso compartido restringido al dominio del proyecto. Las políticas de organización se pueden definir a nivel de organización, carpeta o proyecto.

Una vez que hayas creado las funciones que permiten la invocación sin autenticar, puedes volver a habilitar la política de la organización:

  • Las funciones implementadas antes de que se vuelva a habilitar la política de organización seguirán permitiendo invocaciones no autenticadas.
  • Se pueden implementar nuevas versiones de estas funciones sin necesidad de invocar la autenticación.
  • No se pueden implementar nuevas funciones que permitan invocaciones sin autenticar.

Controlar el acceso a todas las funciones de un proyecto

Si quieres asignar roles a todas las funciones de un proyecto, puedes asignar estos roles al proyecto.