En esta página, se muestra cómo usar la verificación de actualidad de las imágenes de la validación continua (CV) de Autorización Binaria para comprobar la actualización de las imágenes asociadas con los Pods que se ejecutan en los clústeres de Google Kubernetes Engine (GKE) donde se habilita la CV. Tareas pendientes esto, el CV verifica cuándo se subió la imagen a ella de registro.
Esta verificación solo admite repositorios de Artifact Registry y Container Registry.
Costos
En esta guía, se usan los siguientes servicios de Google Cloud :
- Autorización Binaria, pero la CV está disponible de forma gratuita durante la etapa de vista previa
- Google Kubernetes Engine
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un Google Cloud proyecto:
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs de Artifact Registry, Autorización Binaria y Google Kubernetes Engine:
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com cloudbuild.googleapis.com container.googleapis.com -
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un Google Cloud proyecto:
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs de Artifact Registry, Autorización Binaria y Google Kubernetes Engine:
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com cloudbuild.googleapis.com container.googleapis.com - Asegúrate de que gcloud CLI esté actualizada a la versión más reciente.
- Instala la herramienta de línea de comandos de
kubectl. - Si tus políticas de autorización binaria y clústeres de GKE están en proyectos diferentes, asegúrate de que la autorización binaria esté habilitada en ambos proyectos.
Roles obligatorios
En esta sección, se muestra cómo configurar las funciones para esta verificación.
Descripción general
Si ejecutas todos los productos mencionados en esta guía en el mismo proyecto, no necesitas establecer ningún permiso. La autorización binaria configura las funciones de forma correcta cuando la habilitas. Si ejecutas los productos en diferentes proyectos, debes establecer las funciones como se describe en esta sección.
Para garantizar que el agente de servicio de Autorización Binaria del proyecto de política tenga los permisos necesarios para evaluar la verificación de actualidad de las imágenes de CV, pídele a tu administrador que otorgue los siguientes roles de IAM al agente de servicio de Autorización Binaria del proyecto de política:
-
Si tu proyecto de clúster es diferente del proyecto de política, usa el
Evaluador de política de Autorización Binaria (
roles/binaryauthorization.policyEvaluator) en el agente de servicio de Autorización Binaria del proyecto del clúster, para que acceda al proyecto de política -
Si tu proyecto de Artifact Registry (el proyecto que almacena tus imágenes) es diferente del proyecto de políticas, sigue estos pasos:
Lector de Artifact Registry (
roles/artifactregistry.reader) en el agente de servicio de Autorización Binaria del proyecto de política, para que acceda al proyecto de certificación -
Si tu proyecto de Artifact Registry es diferente del proyecto de clúster, usa el lector de Artifact Registry (
roles/artifactregistry.reader) en el agente de servicio de Autorización Binaria del proyecto del clúster para que acceda a los metadatos de la imagen en el proyecto de Artifact Registry
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Es posible que tu administrador también pueda otorgar los permisos necesarios al agente de servicio de Autorización Binaria del proyecto de política a través de roles personalizados o de otros roles predefinidos.
Otorga roles mediante gcloud CLI
Para garantizar que el agente de servicio de Autorización Binaria en cada proyecto tenga los permisos necesarios para evaluar esta verificación, otorga al agente de Autorización Binaria en cada uno de los siguientes roles de IAM.
El proyecto del clúster es diferente del proyecto de política
Otorga al agente de servicio de Autorización Binaria en el proyecto del clúster la función
Evaluador de políticas de autorización binaria
(roles/binaryauthorization.policyEvaluator)
en el proyecto de política.
gcloud projects add-iam-policy-bindingPOLICY_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_PROJECT_ID--format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/binaryauthorization.policyEvaluator
Reemplaza lo siguiente:
POLICY_PROJECT_ID: El ID del proyecto que contiene tu política.CLUSTER_PROJECT_ID: El ID del proyecto del clúster.
Proyecto de política diferente del proyecto de artefacto
Otorga al agente de servicio de Autorización Binaria en el proyecto de política la función de
lector de Artifact Registry
(roles/artifactregistry.reader) en el proyecto de artefacto.
gcloud projects add-iam-policy-bindingARTIFACT_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describePOLICY_PROJECT_ID--format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/artifactregistry.reader
Reemplaza ARTIFACT_PROJECT_ID por el ID del proyecto que contiene
tu repositorio de Artifact Registry.
Proyecto de clúster diferente al proyecto de artefacto
Otorga al agente de servicio de autorización binaria en el proyecto del clúster la función de lector de Artifact Registry (roles/artifactregistry.reader) en el proyecto de artefacto.
gcloud projects add-iam-policy-bindingARTIFACT_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_PROJECT_ID--format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/artifactregistry.reader
Reemplaza lo siguiente:
ARTIFACT_PROJECT_ID: El ID del proyecto que contiene tu repositorio de Artifact Registry.CLUSTER_PROJECT_ID: El ID del proyecto que ejecuta tus clústeres de GKE.
Crea una política de plataforma
Para crear una política de plataforma de CV con la verificación de actualidad de las imágenes, haz lo siguiente:
Crea el archivo YAML de la política de plataforma:
cat << EOF > /tmp/my-policy.yaml gkePolicy: checkSets: - checks: - imageFreshnessCheck: maxUploadAgeDays: MAX_UPLOAD_AGE_DAYS displayName: CHECK_DISPLAY_NAME displayName: CHECK_SET_DISPLAY_NAME EOFReemplaza lo siguiente:
MAX_UPLOAD_AGE_DAYS: el tiempo máximo transcurrido desde que se subió la imagen al registro en días.CHECK_SET_DISPLAY_NAME: un nombre visible opcional que elijas para la verificaciónCHECK_DISPLAY_NAME: un nombre visible opcional que elijas para la verificación
Crea la política de plataforma:
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- POLICY_ID: un ID de la política de plataforma que elijas. Si la política se encuentra en otro proyecto, puedes usar el nombre completo del recurso:
projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID. - POLICY_PATH: una ruta de acceso al archivo de política.
- POLICY_PROJECT_ID: el ID del proyecto de políticas.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=POLICY_PATH \ --project=POLICY_PROJECT_ID
Windows (PowerShell)
gcloud beta container binauthz policy create POLICY_ID ` --platform=gke ` --policy-file=POLICY_PATH ` --project=POLICY_PROJECT_ID
Windows (cmd.exe)
gcloud beta container binauthz policy create POLICY_ID ^ --platform=gke ^ --policy-file=POLICY_PATH ^ --project=POLICY_PROJECT_ID
- POLICY_ID: un ID de la política de plataforma que elijas. Si la política se encuentra en otro proyecto, puedes usar el nombre completo del recurso:
Habilita la CV
Puedes crear un clúster nuevo o actualizar uno existente para usar la supervisión de la CV con políticas de plataforma basadas en verificaciones.
Crea un clúster que use la supervisión de la CV
En esta sección, crearás un clúster que solo usará la supervisión de la CV con las políticas de plataforma basadas en verificaciones.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
CLUSTER_NAME: un nombre de clúster.LOCATION: la ubicación, por ejemplo,us-central1oasia-south1.POLICY_PROJECT_ID: El ID del proyecto en el que se almacena la política.POLICY_ID: El ID de la política.CLUSTER_PROJECT_ID: el ID del proyecto del clúster.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta container clusters create CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters create CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters create CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Crea un clúster que use la aplicación y la supervisión de la CV
En esta sección, crearás un clúster que use la aplicación de políticas singleton de proyecto con la supervisión de la CV con políticas de plataforma basadas en verificaciones:
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
CLUSTER_NAME: un nombre de clúster.LOCATION: la ubicación, por ejemplo,us-central1oasia-south1.POLICY_PROJECT_ID: El ID del proyecto en el que se almacena la política.POLICY_ID: El ID de la política.CLUSTER_PROJECT_ID: el ID del proyecto del clúster.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta container clusters create CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters create CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters create CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Actualiza un clúster para usar la supervisión de la CV
En esta sección, actualizarás un clúster para usar la supervisión de la CV solo con las políticas de plataforma basadas en verificaciones. Si el clúster ya tiene la aplicación de la política de singleton de proyecto habilitada, la ejecución de este comando la inhabilita. En su lugar, considera actualizar el clúster con la aplicación y la supervisión de la CV habilitadas.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
CLUSTER_NAME: el nombre del clústerLOCATION: la ubicación, por ejemplo:us-central1oasia-south1POLICY_PROJECT_ID: el ID del proyecto en el que se almacena la políticaPOLICY_ID: el ID de la políticaCLUSTER_PROJECT_ID: Es el ID del proyecto del clúster
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID