Autoriza el acceso a través de IAM

Usa la Identity and Access Management (IAM) para autorizar identidades a fin de realizar acciones administrativas en tus funciones, como crearlas, actualizarlas y borrarlas. Debes agregar principales (las identidades que deseas habilitar, por lo general, un correo electrónico de cuenta de servicio o usuario) a la función y, luego, otorga a esas principales la IAM adecuadafunciones. Estas funciones incluyen permisos que definen las acciones que pueden realizar.

Habilita el acceso a una función

Para controlar acciones en una función, puedes asignar o restringir las funciones de las identidades individuales a través de IAM.

Agrega principales y otorga funciones

Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

  2. Haz clic en la casilla de verificación junto a la función que te interesa.

  3. Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.

  4. Haz clic en Agregar principal.

  5. En el campo Principales nuevas, ingresa una o más identidades que necesiten acceder a tu función. Por lo general, es un correo electrónico de una cuenta de usuario o de servicio.

  6. Elige una función (o funciones) del menú desplegable Selecciona una función. Las funciones que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.

  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

En el ejemplo anterior, FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es el identificador de la principal, por lo general, un correo electrónico, y ROLE es la función.

Para obtener una lista de fuentes que pueden proporcionar un PRINCIPAL_ID, consulta la página de conceptos de IAM. A fin de obtener una lista de valores aceptables para ROLE, consulta la página de referencia de funciones IAM de Cloud Functions.

Quita funciones de las principales

Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

  2. Haz clic en la casilla de verificación junto a la función que te interesa.

  3. Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.

  4. Busca la principal que deseas quitar. Revisa cada función que se le haya otorgado.

  5. Cuando encuentres la principal en la función que deseas borrar, haz clic en el ícono de la papelera que se encuentra al lado. Si deseas quitar por completo el acceso de la principal, hazlo para cada función que se le haya otorgado.

GCloud

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

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

En el comando anterior, FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es la dirección de correo electrónico que identifica la cuenta de servicio, precedida por serviceAccount:, y ROLE es la función.

Para obtener una lista de valores aceptables para PRINCIPAL_ID, consulta la página de conceptos de IAM. A fin de obtener una lista de valores aceptables para ROLE, consulta la página de referencia de funciones IAM de Cloud Functions.

Si a la principal se le otorgaron varias funciones, asegúrate de especificar la que deseas quitar.

Agrega o quita principales de forma masiva

Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

  2. Haz clic en las casillas de verificación junto a las funciones a las que deseas asignar o restringir el acceso.

  3. Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.

Si deseas agregar principales, haz lo siguiente:

  1. Haz clic en Agregar principal.

  2. En Principales nuevas, ingresa varias identidades que requieran acceso a tu función.

  3. Elige una función (o funciones) del menú desplegable Selecciona una función. Las funciones que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.

  4. Haz clic en Guardar.

Si deseas quitar las principales, sigue estos pasos:

  1. Busca la principal que deseas quitar o expande una función que tenga el principal.

  2. Cuando encuentres la principal que deseas borrar, haz clic en el ícono de la papelera al lado. Si deseas quitar por completo el acceso de la principal, hazlo para cada función que se le haya otorgado.

GCloud

Crea una política de IAM con el nombre policy.json, por ejemplo:

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

Usa el comando gcloud functions set-iam-policy:

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Para obtener una lista de valores aceptables para PRINCIPAL_ID, consulta la página de conceptos de IAM. A fin de obtener una lista de valores aceptables para ROLE, consulta la página de referencia de funciones IAM de Cloud Functions.

Visualiza las principales

Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

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

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

  4. Asegúrate de que la pestaña Principales esté seleccionada.

GCloud

Usa el comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Permite la invocación de funciones de HTTP no autenticadas

Desde el 15 de enero de 2020, todas las funciones de HTTP requieren, de forma predeterminada, que la mayoría de los invocadores se autentiquen. Para permitir la invocación no autenticada, debes especificar esto en la implementación o después.

Usa una variante especial del enfoque descrito antes para otorgar a los invocadores no autenticados la capacidad de invocar una función de HTTP.

.

Durante la implementación

Console

Selecciona Permitir invocaciones no autenticadas en la sección Autenticación del panel Configuración.

GCloud

El comando gcloud functions deploy incluye un mensaje para ayudarte a configurar permisos de invocación durante la creación de la función. También incluye 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, incluso si no usas esta marca.

Después de la implementación

Para permitir la invocación no autenticada de una función, otorga la función de Invocador de Cloud Functions a la principal allUsers especial en la función:

Console

  1. Ve a Google Cloud Console:

    Ir a Google Cloud Console

  2. Haz clic en la casilla de verificación junto a la función a la que deseas asignarle acceso.

  3. Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.

  4. Haz clic en Agregar principal.

  5. En el campo Principales nuevas, escribe allUsers.

  6. Selecciona Cloud Functions > Invocador de Cloud Functions en el menú desplegable Seleccionar una función.

  7. Haz clic en Guardar.

GCloud

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

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

Uso compartido restringido al dominio

Si desarrollas funciones en un proyecto que está sujeto a la política de la 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 robo de datos.

Si deseas implementar funciones que permitan la invocación no autenticada, recomendamos que borres la política de la organización de uso compartido restringido al dominio en el proyecto. Las políticas de la organización se pueden establecer a nivel de la organización, la carpeta o el proyecto.

Una vez que hayas creado tus funciones que permiten la invocación no autenticada, puedes volver a habilitar la política de la organización:

  • Las funciones implementadas antes de que se haya vuelto a habilitar la política de la organización continuarán permitiendo la invocación no autenticada.
  • Las nuevas versiones de estas funciones existentes se pueden implementar sin necesidad de invocación autenticada.
  • No se pueden implementar funciones nuevas que permitan invocaciones no autenticadas.

Controla el acceso en todas las funciones de un proyecto

Si deseas otorgar funciones en todas las funciones de un proyecto, puedes otorgarlas en el proyecto.