Las cuentas de servicio son una cuenta especial de Google que otorgan permisos a máquinas virtuales en lugar de a usuarios finales. Se usan principalmente para garantizar que las conexiones a las APIs y los servicios de Google Cloud sean seguras y estén administradas. Otorgar a acceso a conexiones de confianza y rechazar las que sean maliciosas es una función de seguridad que se debe tener en cualquier proyecto de Google Cloud.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
Crear y administrar cuentas de servicio
Crear una máquina virtual y asociarla con una cuenta de servicio
Usar bibliotecas cliente para acceder a BigQuery desde una cuenta de servicio
Ejecutar una búsqueda en un conjunto de datos públicos de BigQuery desde una instancia de Compute Engine
Configuración y requisitos
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Accede a Qwiklabs desde una ventana de incógnito.
Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
Si usa otras credenciales, se generarán errores o incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación.
Activa Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
Puedes solicitar el nombre de la cuenta activa con este comando:
Una cuenta de servicio es un tipo especial de Cuenta de Google que pertenece a tu aplicación o a una máquina virtual (VM) en lugar de a un usuario final individual. Tu aplicación usa la cuenta de servicio para llamar a la API de Google de un servicio, de modo que los usuarios no están involucrados de manera directa.
Por ejemplo, una VM de Compute Engine puede ejecutarse como una cuenta de servicio y esa cuenta puede obtener permisos para acceder a los recursos que necesita. De esta forma, la cuenta de servicio es la identidad del servicio y los permisos de la cuenta de servicio controlan los recursos a los que tiene acceso.
Una cuenta de servicio se identifica por su dirección de correo electrónico, que es única para la cuenta.
Tipos de cuentas de servicio
Cuentas de servicio administradas por el usuario
Cuando se crea un nuevo proyecto Cloud mediante la consola de Cloud, si la API de Compute Engine está habilitada para tu proyecto, se te creará una cuenta de servicio de Compute Engine de forma predeterminada. Es identificable mediante el correo electrónico:
PROJECT_NUMBER-compute@developer.gserviceaccount.com.
Si tu proyecto contiene una aplicación de App Engine, la cuenta de servicio predeterminada de App Engine se crea en tu proyecto de manera predeterminada. Es identificable mediante el correo electrónico:
PROJECT_ID@appspot.gserviceaccount.com.
Cuentas de servicio administradas por Google
Además de las cuentas de servicio administradas por el usuario, es posible que veas algunas cuentas de servicio adicionales en la política de IAM de tu proyecto o en la consola de Cloud. Estas cuentas de servicio son creación y propiedad de Google. Estas cuentas representan diferentes servicios de Google y a cada una se le otorgan roles de IAM automáticamente para acceder a tu proyecto de Google Cloud.
Cuentas de servicio de la API de Google
Un ejemplo de cuenta de servicio administrada por Google es una cuenta de servicio de la API de Google identificable mediante el correo electrónico:
PROJECT_NUMBER@cloudservices.gserviceaccount.com.
Esta cuenta de servicio está diseñada específicamente para ejecutar procesos internos de Google en tu nombre y no aparece en la sección Cuentas de servicio de la consola de Cloud. De forma predeterminada, la cuenta recibe el rol de editor del proyecto automáticamente y aparece en la sección IAM de la consola de Cloud.
Esta cuenta de servicio solo se borra cuando se borra el proyecto. Los servicios de Google dependen de que la cuenta tenga acceso a tu proyecto. Por este motivo, no deberías quitar ni cambiar el rol de la cuenta de servicio en tu proyecto.
Tarea 1. Crea y administra cuentas de servicio
En esta tarea, crearás y administrarás cuentas de servicio.
De forma predeterminada, puedes crear hasta 100 cuentas de servicio administradas por el usuario en un proyecto. Si esta cuota no satisface tus necesidades, puedes usar la consola de Cloud para solicitar un aumento de cuota.
Nota: Las cuentas de servicio predeterminadas que se describen en esta página no se contabilizan para esta cuota.
Crea una cuenta de servicio
Crear una cuenta de servicio es similar a agregar un miembro a tu proyecto, pero la cuenta de servicio pertenece a tus aplicaciones en lugar de a un usuario final individual.
Para crear una cuenta de servicio, ejecuta el siguiente comando en Cloud Shell:
gcloud iam service-accounts create my-sa-123 --display-name "my service account"
El resultado de este comando es la cuenta de servicio, que será similar a lo siguiente:
Resultado:
Created service account [my-sa-123]
Asigna roles a cuentas de servicio
Cuando se otorgan roles de IAM, puedes tratar a una cuenta de servicio como un recurso o como una identidad.
Tu aplicación usa una cuenta de servicio como identidad para autenticarse en los servicios de Google Cloud. Por ejemplo, si tienes una máquina virtual (VM) de Compute Engine que se ejecuta como una cuenta de servicio, puedes otorgar el rol Editor a la cuenta de servicio (la identidad) para un proyecto (el recurso).
Al mismo tiempo, tal vez quieras también controlar quién puede iniciar la VM. Para ello, debes otorgarle al usuario (la identidad) el rol serviceAccountUser para la cuenta de servicio (el recurso).
Cómo otorgar roles a una cuenta de servicio para recursos específicos
Otorgas roles a una cuenta de servicio para que esta tenga permiso y así realizar acciones específicas en los recursos de tu proyecto de Google Cloud. Por ejemplo, puedes otorgar el rol storage.admin a una cuenta de servicio para que tenga control de los objetos y buckets de Cloud Storage.
Ejecuta lo siguiente en Cloud Shell para otorgarle roles a la cuenta de servicio que acabas de crear:
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear y administrar cuentas de servicio
Comprende los roles
Cuando una identidad llama a una API de Google Cloud, Cloud Identity and Access Management (Cloud IAM) requiere que la identidad tenga los permisos adecuados para usar el recurso. Puedes otorgar permisos si asignas roles a un usuario, a un grupo o a una cuenta de servicio.
Tipos de roles
Existen tres tipos de roles en Cloud IAM:
Roles básicos, que incluyen los de propietario, editor y roles de visualizador que existieron antes de la introducción de Cloud IAM.
Roles predefinidos, que proporcionan acceso detallado a un servicio específico y que Google Cloud administra.
Roles personalizados, que proporcionan acceso detallado según una lista de permisos especificada por el usuario
Para obtener más detalles, consulta la documentación de referencia Roles de IAM.
Tarea 2. Usa las bibliotecas cliente para acceder a BigQuery desde una cuenta de servicio
En esta tarea, buscarás los conjuntos de datos públicos de BigQuery desde una instancia con la ayuda de una cuenta de servicio que tiene los roles necesarios.
Crea una cuenta de servicio
Primero crearás una cuenta de servicio nueva con la consola de Cloud.
En la consola de Cloud, desde el menú de navegación, haz clic en IAM y administración > Cuentas de servicio.
Haz clic en Crear cuenta de servicio.
Especifica el nombre de la cuenta de servicio como bigquery-qwiklab.
Haz clic en Crear y continuar.
Especifica el rol como BigQuery > Visualizador de datos de BigQuery.
Haz clic en Agregar otro rol.
Especifica el otro rol como BigQuery > Usuario de BigQuery.
Haz clic en Continuar.
Tu consola de Cloud debería verse de la siguiente manera.
Haz clic en Listo.
Crea una instancia de VM
En la consola de Cloud, desde el menú de navegación, haz clic en Compute Engine > Instancias de VM, y luego haz clic en Crear instancia.
Crea tu VM con la siguiente información:
Configuración
Valor
Nombre
bigquery-instance
Región
us-central1(Iowa)
Zona
us-central1-a
Serie
E2
Tipo de máquina
e2-standard-2 (2 vCPU)
Disco de arranque
Debian GNU/Linux 11 (bullseye)
Cuenta de servicio
bigquery-qwiklab
Permisos de acceso
Permitir el acceso total a todas las APIs de Cloud
Nota: Si la cuenta de servicio bigquery-qwiklab no figura en la lista desplegable, intenta escribir el nombre desde la sección Filtro.
A continuación, verás las opciones que se agregaron cuando seleccionaste un disco de arranque compatible con VMs protegidas.
En la parte inferior de la página, haz clic en el vínculo Herramientas de redes, discos, seguridad, administración, usuario único.
Haz clic en la pestaña Seguridad. Aparecerán las opciones de VM protegida en la parte superior de la pestaña. Si no hubieras seleccionado un disco de arranque con funciones de VM protegida, estas opciones no habrían aparecido. Algunas de estas opciones se seleccionan de forma predeterminada.
Haz clic en la casilla de verificación Activar el arranque seguro.
Compute Engine no habilita esta opción de forma predeterminada, ya que es posible que los controladores sin firmas y otros software de bajo nivel no sean compatibles. Aun así, si es posible, Google recomienda habilitarlo.
Haz clic en Crear.
Ingresa el código de ejemplo en una instancia de Compute Engine
En la consola de Cloud, ve a Compute Engine > Instancias de VM.
Establece una conexión SSH en bigquery-instance haciendo clic en el botón SSH. Haz clic en Conectar.
En la ventana de SSH, ejecuta los siguientes comandos para instalar las dependencias necesarias:
Con el comando echo, crea query.py. Usarás este archivo, desarrollado en Python, para ejecutar la búsqueda.
echo "
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='YOUR_PROJECT_ID',
credentials=credentials)
print(client.query(query).to_dataframe())
" > query.py
Agrega el ID del proyecto a query.py mediante el siguiente comando:
sed -i -e "s/YOUR_PROJECT_ID/$(gcloud config get-value project)/g" query.py
Ejecuta el siguiente comando para asegurarte de que sed haya cambiado correctamente el ID del proyecto en el archivo:
cat query.py
Resultado de ejemplo (el tuyo será distinto):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='qwiklabs-gcp-186de687ef87f911',
credentials=credentials)
print(client.query(query).to_dataframe())
Agrega el correo electrónico de la cuenta de servicio a query.py con:
sed -i -e "s/YOUR_SERVICE_ACCOUNT/bigquery-qwiklab@$(gcloud config get-value project).iam.gserviceaccount.com/g" query.py
Ejecuta lo siguiente para asegurarte de que el comando sed cambió con éxito el correo electrónico de la cuenta de servicio en el archivo:
cat query.py
Resultado de ejemplo (el tuyo será distinto):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='bigquery-qwiklab@qwiklabs-gcp-186de687ef87f911.iam.gserviceaccount.com')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='qwiklabs-gcp-186de687ef87f911',
credentials=credentials)
print(client.query(query).to_dataframe())
Ahora, la aplicación usará los permisos asociados con esta cuenta de servicio.
Instala la biblioteca pyarrow con este comando:
sudo pip3 install pyarrow==16.1.0
Instala la biblioteca db-dtypes con este comando:
sudo pip3 install db-dtypes
Ejecuta query.py con este comando:
python3 query.py
Deberías obtener un resultado similar al siguiente.
Resultado:
year num_babies
0 2008 4255156
1 2002 4027376
2 2005 4145619
3 2006 4273225
4 2001 4031531
5 2007 4324008
6 2003 4096092
7 2004 4118907
Nota: Es posible que los valores de tus filas no coincidan con los años del resultado anterior. No obstante, asegúrate de que la cantidad de bebés por año coincida.
Realizaste una solicitud a un conjunto de datos públicos de BigQuery con una cuenta de servicio bigquery-qwiklab.
Haz clic en Revisar mi progreso para verificar el objetivo.
Usar las bibliotecas cliente para acceder a BigQuery desde una cuenta de servicio
Felicitaciones
En este lab, aprendiste a hacer lo siguiente:
Crear y administrar cuentas de servicio
Crear una máquina virtual y asociarla con una cuenta de servicio
Usar bibliotecas cliente para acceder a BigQuery desde una cuenta de servicio
Ejecutar una búsqueda en un conjunto de datos públicos de BigQuery desde una instancia de Compute Engine
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
1 estrella = Muy insatisfecho
2 estrellas = Insatisfecho
3 estrellas = Neutral
4 estrellas = Satisfecho
5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
Un lab a la vez
Confirma para finalizar todos los labs existentes y comenzar este
Usa la navegación privada para ejecutar el lab
Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así
evitarás cualquier conflicto entre tu cuenta personal y la cuenta
de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
Configuración, uso y revisión de las cuentas de servicio y los permisos de las VMs
Duración:
0 min de configuración
·
Acceso por 90 min
·
90 min para completar