Identidad de las funciones

Cuenta de servicio del entorno de ejecución

Durante la ejecución de la función, Cloud Functions utiliza la cuenta de servicio PROJECT_ID@appspot.gserviceaccount.com como su identidad. Por ejemplo, cuando se realizan solicitudes a los servicios de Google Cloud Platform con las bibliotecas cliente de Google Cloud , Cloud Functions puede obtener y usar tokens automáticamente a fin de autorizar los servicios que esa identidad tiene permisos para usar.

Cambia los permisos predeterminados

De forma predeterminada, la cuenta del servicio del entorno de ejecución tiene la función Editor, que le permite acceder a muchos servicios de GCP. Si bien esta es la manera más rápida de desarrollar funciones, es probable que sea demasiado permisiva para lo que tu función necesita en producción. Por ello, te recomendamos que la configures con el acceso menos privilegiado.

Console

  1. Ve a Google Cloud Platform Console:

    Ir a Google Cloud Platform Console

  2. Selecciona la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com) en la tabla.

  3. Haz clic en el lápiz en el lado derecho de la fila para ver la pestaña Editar permisos.

  4. Agrega funciones al menú desplegable función o quítalas para proporcionar el acceso con menos privilegios.

  5. Haz clic en Guardar.

GCloud

Elimina la función Editor, y, luego, usa el comando gcloud projects add-iam-policy-binding para agregar una función nueva:

# Remove the Editor role
gcloud projects remove-iam-policy-binding PROJECT_ID \
  --member="PROJECT_ID@appspot.gserviceaccount.com"
  --role="roles/editor"

# Add the desired role
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="PROJECT_ID@appspot.gserviceaccount.com"
  --role="ROLE"

donde PROJECT_ID es el ID del proyecto que estás utilizando y ROLE es la función nueva que se asignará a la cuenta de servicio del entorno de ejecución.

Identidad por función

Si tienes varias funciones que acceden a diferentes recursos, te recomendamos que otorgues a cada función su propia identidad. Puedes hacerlo mediante la implementación de la función con una cuenta de servicio con nombre que tenga el rol correcto. La cuenta de servicio que se implemente debe haberse creado en el mismo proyecto al que se adjunta la función.

Permisos necesarios para las identidades no predeterminadas

Para implementar una función con una cuenta de servicio no predeterminada, el implementador debe tener el permiso iam.serviceAccounts.actAs en la cuenta de servicio en que se realizará la implementación.

Si un usuario crea una cuenta de servicio, ese usuario recibe este permiso automáticamente; de lo contrario, un usuario con los permisos correctos debe otorgarle este permiso sobre la cuenta de servicio al implementador para que este realice la implementación.

Implementa una función nueva con una identidad no predeterminada

Para implementar una función con una identidad nueva, asegúrate de que la cuenta de servicio que quieras usar ya esté creada. Si no es así, aprende cómo crear y administrar cuentas de servicio.

Console

  1. Ve a Google Cloud Platform Console:

    Ir a Google Cloud Platform Console

  2. Configura la función como quieras.

  3. Haz clic en Más para expandir “Opciones avanzadas”.

  4. Haz clic en el menú desplegable Cuenta de servicio y selecciona la cuenta de servicio deseada.

  5. Haz clic en Crear.

GCloud

Cuando implementas una función con gcloud functions deploy, agrega el marcador --service-account. Por ejemplo:

gcloud functions deploy FUNCTION_NAME --service-account SERVICE_ACCOUNT_EMAIL

donde FUNCTION_NAME es el nombre de la función, y SERVICE_ACCOUNT_EMAIL es la cuenta de servicio asociada con la identidad nueva.

Actualiza la identidad de una función existente

También puedes actualizar funciones existentes para tener una cuenta de servicio del entorno de ejecución nueva.

Console

  1. Ve a Google Cloud Platform Console:

    Ir a Google Cloud Platform Console

  2. Haz clic en el nombre de la función deseada para ir a su página de detalles.

  3. Haz clic en el lápiz de EDITAR en la parte superior de la página de detalles para editar la función.

  4. Haz clic en Más para expandir “Opciones avanzadas”.

  5. Haz clic en el menú desplegable Cuenta de servicio y selecciona la cuenta de servicio deseada.

  6. Haz clic en Guardar.

GCloud

Cuando implementas una función con gcloud functions deploy, agrega el marcador --service-account:

gcloud functions deploy FUNCTION_NAME --service-account SERVICE_ACCOUNT_EMAIL

donde FUNCTION_NAME es el nombre de la función, y SERVICE_ACCOUNT_EMAIL es la cuenta de servicio asociada con la identidad nueva.

Recupera los tokens de identidad y acceso

Puedes usar el servidor de metadatos de Compute para obtener tokens de identidad y tokens de acceso. No puedes consultar el servidor de metadatos directamente desde tu computadora local.

Tokens de identidad

Debes usar tokens de identidad cuando llamas a otras funciones de Cloud Functions o a cualquier otro servicio que pueda validar un token de identidad.

Puedes usar el servidor de metadatos de Compute para obtener tokens de identidad con un público específico de la siguiente manera:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \
  -H "Metadata-Flavor: Google"

Donde AUDIENCE es el JWT Audience solicitado, por ejemplo, la URL de un servicio que estás invocando, como https://service.domain.com, o el ID de cliente de OAuth de un recurso protegido por IAP, como 1234567890.apps.googleusercontent.com.

Tokens de acceso

Debes usar tokens de acceso cuando llamas a las API de Google.

De forma predeterminada, los tokens de acceso tienen el alcance cloud-platform, que permite el acceso a todas las API de Google Cloud Platform, suponiendo que IAM también permita el acceso. Para acceder a otras API de Google o Google Cloud, deberás obtener un token de acceso con el alcance adecuado.

Puedes usar el servidor de metadatos de Compute para obtener tokens de acceso.

Si necesitas un token de acceso con un alcance específico, puedes generar uno de la siguiente manera:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?scopes=SCOPES" \
  -H "Metadata-Flavor: Google"

donde SCOPES es una lista separada por comas de los alcances de OAuth solicitados, por ejemplo: https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets.

Consulta la lista completa de alcances de Google OAuth para buscar los alcances que necesitas.

Próximos pasos

Aprende cómo administrar el acceso para los desarrolladores, las funciones y los usuarios finales, o cómo autenticarlos de forma segura.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Functions