Autoriza el acceso con la IAM

Debes usar Identity and Access Management (IAM) a fin de autorizar identidades para que realicen acciones administrativas en tus funciones, como crearlas, actualizarlas y borrarlas. En IAM, otorgas a las principales (las identidades que deseas habilitar, por lo general, un correo electrónico de cuenta de servicio o de usuario) los roles de IAM adecuados en la función o el proyecto. Estos roles incluyen permisos que definen las acciones que la principal pueden realizar.

Antes de comenzar

Para obtener el permiso que necesitas a fin de controlar el acceso a una función específica o a todas las funciones de un proyecto, pídele a tu administrador que te otorgue el rol de IAM Administrador de Cloud Functions (roles/function.admin) en la función o el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

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

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

Consulta Roles de IAM de Cloud Functions para ver la lista completa de los roles de Cloud Functions y los permisos asociados con estos.

Habilita el acceso a una función

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

Agrega principales y otorga roles

Console

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  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 acceso a tu función. Por lo general, es el correo electrónico de una cuenta de usuario o de servicio.

  6. Elige un rol (o roles) del menú desplegable Selecciona un rol. 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 comando 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 el rol.

Para obtener una lista de las 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 la consola de Google Cloud:

    Ir a la consola de Google Cloud

  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 rol que se le haya otorgado.

  5. Cuando encuentres la principal en el rol que deseas borrar, haz clic en el ícono de papelera que se encuentra al lado. Si deseas quitar por completo el acceso de la principal, hazlo para cada rol 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 a la cuenta de servicio, precedida por serviceAccount:, y ROLE es el rol.

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.

Agregación masiva de principales

Consola

  1. Ve a la consola de Google Cloud:

    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.

Para agregar principales, haz lo siguiente:

  1. Haz clic en Agregar principal.

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

  3. Elige un rol (o roles) del menú desplegable Selecciona un rol. Los roles que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.

  4. Haz clic en Guardar.

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 la consola de Google Cloud:

    Ir a la consola de Google Cloud

  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. Selecciona la pestaña Ver por principales para ver una lista de todas las principales con permisos en la función 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

A partir del 15 de enero de 2020, las funciones de HTTP sin permitir invocaciones no autenticadas habilitaron el acceso restringido a los usuarios finales y las cuentas de servicio que no tienen los permisos adecuados.

Para permitir las invocaciones no autenticadas, 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

Consola

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

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 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, incluso si no usas esta marca.

Después de la implementación

Cloud Functions (1st gen):

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 la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en la casilla de verificación junto a la función receptora. (No hagas clic en la función).

  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 un rol.

  7. En el diálogo, haz clic en Permitir el acceso público.

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"

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

Cloud Functions (2nd gen):

Consola

  1. Ve a la consola de Google Cloud:

    Ir a la consola de Google Cloud

  2. Haz clic en el nombre vinculado de la función a la que deseas otorgar acceso.

  3. Haz clic en el vínculo Powered By Cloud Run en la esquina superior derecha de la página de resumen Detalles de la función.

  4. Abre la pestaña Seguridad y en Autenticación, selecciona Permitir invocaciones no autenticadas.

  5. Haz clic en Guardar.

gcloud

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

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

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

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.