Modify the constraint

Revisar mi progreso

/ 100

Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.

GSP1021

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, aprenderás sobre el comando gcloud beta terraform vet, al que se hará referencia como Validar en el resto del lab. Validar es una herramienta para aplicar el cumplimiento de políticas como parte de una canalización de CI/CD de infraestructura. Puedes usar Validar para detectar incumplimientos de políticas y proporcionar advertencias o detener las implementaciones antes de que alcancen la etapa de producción.

En este lab, se explica cómo implementar una limitación que aplique una restricción de dominio. Probarás esa restricción y arrojarás un error de forma intencional. Luego, modificarás la restricción para que pase tu dominio.

Objetivos

En este lab, aprenderás a hacer lo siguiente:

  • Implementar una restricción que aplique una limitación de dominio
  • Probar una restricción para generar un error de validación de forma intencional
  • Modificar la restricción para que pase la validación

Requisitos previos

Para este lab, debes tener experiencia en el uso de Terraform. Consulta el curso Crea una infraestructura con Terraform en Google Cloud para obtener más práctica con este producto.

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.

Cómo iniciar tu lab y acceder a la consola de Google Cloud

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:

    • El botón Abrir la consola de Google Cloud
    • Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
    • Otra información para completar el lab (si es necesaria)

    Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.

  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia los recursos y abre otra pestaña, en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Configuración del lab y acceso.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haz clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar. Ícono del menú de navegación y campo de búsqueda

Activa Cloud Shell

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. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. Haz clic para avanzar por las siguientes ventanas:

    • Continúa en la ventana de información de Cloud Shell.
    • Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.

Tarea 1: Valida una restricción

Para ver cómo se implementa una restricción, copiarás una existente, proporcionarás un caso de prueba que no pasa la validación y, luego, modificarás la restricción para que la pase.

Copia la restricción

  1. Abre una nueva ventana de Cloud Shell y ejecuta el siguiente comando para clonar el repositorio de la biblioteca de políticas.
git clone https://github.com/GoogleCloudPlatform/policy-library.git
  1. En el símbolo del sistema, ingresa lo siguiente para copiar la restricción de limitación de dominio de IAM de muestra:
cd policy-library/ cp samples/iam_service_accounts_only.yaml policies/constraints
  1. Para examinar la restricción que copiaste, puedes imprimirla en la terminal.
cat policies/constraints/iam_service_accounts_only.yaml

La salida obtenida se verá así:

# This constraint checks that all IAM policy members are in the # "gserviceaccount.com" domain. apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: name: service_accounts_only annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. spec: severity: high match: target: # {"$ref":"#/definitions/io.k8s.cli.setters.target"} - "organizations/**" parameters: domains: - gserviceaccount.com

Observa la sección destacada en la parte inferior. Esto especifica que solo los miembros del dominio gserviceaccount.com pueden estar presentes en una política de IAM.

Prueba la restricción

  1. Para verificar que la política funcione como se espera, crearás un archivo de Terraform en el directorio actual.
touch main.tf
  1. En la barra de herramientas de Cloud Shell, haz clic en Abrir editor. Para pasar de Cloud Shell al editor de código, haz clic en Abrir editor o Abrir terminal según sea necesario, o bien haz clic en Abrir en una nueva ventana para dejar el editor abierto en una pestaña distinta.

  2. Abre el archivo policy-library/main.tf y copia el siguiente código en él:

terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.84" } } } resource "google_project_iam_binding" "sample_iam_binding" { project = "<YOUR PROJECT ID>" role = "roles/viewer" members = [ "user:<USER>" ] }
  1. Reemplaza <YOUR PROJECT ID> por .

  2. Reemplaza <USER> por .

  3. Luego, vuelve a la terminal y ejecuta el siguiente comando para inicializar Terraform:

terraform init
  1. Ejecuta el siguiente comando para exportar el plan de Terraform. Si se te solicita, haz clic en Autorizar.
terraform plan -out=test.tfplan
  1. Convierte el plan de Terraform a JSON.
terraform show -json ./test.tfplan > ./tfplan.json
  1. Instala el componente Terraform Tools:
sudo apt-get install google-cloud-sdk-terraform-tools
  1. Ejecuta el siguiente comando para validar que tu plan de Terraform cumpla con tus políticas.
gcloud beta terraform vet tfplan.json --policy-library=. Nota: Puedes ignorar las advertencias sobre la recuperación de tu ID del proyecto.

Debido a que la dirección de correo electrónico que proporcionaste en la vinculación de la política de IAM no pertenece a una cuenta de servicio, el plan infringe la restricción que configuraste. El resultado debería ser similar al siguiente:

constraint: GCPIAMAllowedPolicyMemberDomainsConstraintV2.service_accounts_only constraint_config: api_version: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml name: service-accounts-only spec: match: target: - organizations/** parameters: domains: - gserviceaccount.com severity: high message: 'IAM policy for //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d contains member from unexpected domain: user:student-02-0edcb8aed69f@qwiklabs.net' metadata: ancestry_path: organizations/616463121992/folders/365352270458/folders/474147567761/folders/125430737939/projects/qwiklabs-gcp-02-ec89de7c9f9d constraint: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml labels: {} parameters: domains: - gserviceaccount.com details: member: user:student-02-0edcb8aed69f@qwiklabs.net resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d severity: high Solución de problemas: Si recibes el siguiente error, "Error 403: El emisor no tiene permiso, prohibido", entonces no reemplazaste el argumento project_id en policy-library/main.tf o no tienes los permisos necesarios en el proyecto que especificaste.

Tarea 2: Modifica la restricción

La restricción funciona según lo previsto, pero supongamos que quieres modificarla para permitir que se agreguen otras direcciones de correo electrónico en tu dominio.

  1. Desde el Editor, navega al archivo policy-library/policies/constraints/iam_service_accounts_only.yaml.

  2. En la sección domains, agrega el dominio de correo electrónico qwiklabs.net a la lista de dominios permitidos:

apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV1 metadata: name: service_accounts_only spec: severity: high match: target: ["organizations/**"] parameters: domains: - gserviceaccount.com - qwiklabs.net
  1. Vuelve a la ventana de Cloud Shell y exporta un nuevo plan de Terraform en JSON.
terraform plan -out=test.tfplan
  1. Ahora, vuelve a validar tu plan de Terraform. Esto no debería generar incumplimientos.
gcloud beta terraform vet tfplan.json --policy-library=.

Resultado:

Validating resources...done.
  1. Por último, aplica el plan de Terraform para que la política de IAM otorgue un rol al miembro.
terraform apply test.tfplan

Haz clic en Revisar mi progreso para verificar el objetivo. Modificar la restricción

¡Felicitaciones!

En este lab, implementaste una restricción que aplica una limitación de dominio. Probaste esa restricción, que arrojó un error. Luego, modificaste la restricción para que los dominios que definas puedan pasar la validación.

Próximos pasos y más información

Asegúrate de consultar los siguientes recursos para adquirir más práctica con Validator y Terraform:

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Actualización más reciente del manual: 29 de noviembre de 2024

Prueba más reciente del lab: 29 de noviembre de 2024

Copyright 2026 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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. 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.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. 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

Usar una ventana de incógnito o de navegación privada es la mejor forma de ejecutar este 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.