En esta página se explica cómo usar la comprobación de vulnerabilidades de la validación continua (VC) de la autorización binaria para monitorizar las vulnerabilidades asociadas a los pods que se ejecutan en clústeres de Google Kubernetes Engine (GKE) con la VC habilitada.
Costes
En esta guía se utilizan los siguientes servicios de Google Cloud :
- Artifact Analysis
- Autorización binaria, pero CV está disponible sin coste económico durante la fase de vista previa
- GKE
Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Analysis, Binary Authorization, Google Kubernetes Engine APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Analysis, Binary Authorization, Google Kubernetes Engine APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com - Asegúrate de que la CLI de gcloud esté actualizada a la última versión.
- Instala la herramienta de línea de comandos
kubectl. - Si tus políticas de autorización binaria y tus clústeres de GKE están en proyectos diferentes, asegúrate de que la autorización binaria esté habilitada en ambos proyectos.
-
Si el proyecto del clúster es diferente del proyecto de la política, haz lo siguiente:
Evaluador de políticas de autorización binaria (
roles/binaryauthorization.policyEvaluator) en el agente de servicio de autorización binaria del proyecto del clúster para que pueda acceder al proyecto de la política. -
Si el proyecto de artefacto es diferente del proyecto de política, haz lo siguiente:
Lector de repeticiones de Container Analysis (
roles/containeranalysis.occurrences.viewer) en el agente de servicio de Binary Authorization del proyecto de política para que pueda acceder a la información sobre vulnerabilidades. Si el proyecto en el que ejecutas el clúster es diferente del proyecto en el que reside la política, debes conceder permiso al agente de servicio de Autorización Binaria del proyecto del clúster para acceder a la política en el proyecto de la política.
Obtén el agente de servicio de autorización binaria del proyecto del clúster:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Sustituye
CLUSTER_PROJECT_IDpor el ID del proyecto del clúster.Permite que CV evalúe la política en el clúster:
gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \ --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \ --role='roles/binaryauthorization.policyEvaluator'Sustituye
POLICY_PROJECT_IDpor el ID del proyecto que contiene tu política.
Si tu proyecto de análisis de artefactos es diferente del proyecto de política de autorización binaria, haz lo siguiente:
Obtén el agente de servicio de autorización binaria del proyecto de la política:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:POLICY_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Sustituye
POLICY_PROJECT_IDpor el ID del proyecto que contiene tu política.Asigna el rol:
gcloud projects add-iam-policy-binding VULNERABILITY_PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role='roles/containeranalysis.occurrences.viewer'Sustituye
VULNERABILITY_PROJECT_IDpor el ID del proyecto en el que ejecutas Artifact Analysis.
Crea el archivo YAML de la política de la plataforma:
cat > /tmp/my-policy.yaml <<EOF gkePolicy: checkSets: - checks: - vulnerabilityCheck: maximumFixableSeverity: MEDIUM maximumUnfixableSeverity: HIGH allowedCves: - CVE_ALLOWED blockedCves: - CVE_BLOCKED containerAnalysisVulnerabilityProjects:
Roles obligatorios
En esta sección se explica cómo asignar roles a esta comprobación.
Información general
Si ejecutas todos los productos que se mencionan en esta guía en el mismo proyecto, no tienes que definir ningún permiso. Autorización binaria configura los roles correctamente cuando la habilitas. Si ejecuta los productos en proyectos diferentes, debe asignar roles tal como se describe en esta sección.
Para asegurarte de que el agente de servicio de autorización binaria de cada proyecto tiene los permisos necesarios para evaluar la comprobación de vulnerabilidades de CV, pide a tu administrador que conceda al agente de servicio de autorización binaria de cada proyecto los siguientes roles de gestión de identidades y accesos:
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
Es posible que tu administrador también pueda conceder los permisos necesarios al agente de servicio de Autorización Binaria en cada proyecto a través de roles personalizados u otros roles predefinidos.
Otorgar roles con la CLI de gcloud
Para asegurarte de que las cuentas de servicio de cada proyecto tengan los permisos necesarios para evaluar esta comprobación, otorga a las cuentas de servicio de cada proyecto los siguientes roles de gestión de identidades y accesos:
Crear una política de la plataforma
Para crear una política de plataforma de CV con una comprobación de vulnerabilidades, haz lo siguiente: