Configura la aplicación de la política de Autorización Binaria

La autorización binaria para GKE en VMware es una función de Google Cloud que extiende la aplicación alojada y en el momento de la implementación de la autorización binaria a los clústeres de usuario locales. El caso de uso principal para la autorización binaria en GKE on VMware es proteger las cargas de trabajo en los clústeres de usuario. Sigue los pasos de esta guía para aplicar las reglas de aplicación de una política de autorización binaria configurada en tu proyecto de Google Cloud a los clústeres de usuario. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.

Requisitos previos

Antes de habilitar la aplicación de la política de Autorización binaria para un clúster de usuario, asegúrate de que cumples con los siguientes criterios de requisitos previos:

  • Registra el clúster con una flota:En el caso de un clúster creado con gkectl, el clúster se registra en el proyecto de Google Cloud que especificas en el campo gkeConnect.projectID del archivo de configuración de clústeres. Este proyecto se denomina proyecto host de la flota. Para obtener más información sobre las flotas, incluidos los casos de uso, prácticas recomendadas y ejemplos, consulta la documentación sobre Administración de flotas.

  • Habilita la API de Binary Authorization en tu proyecto de Google Cloud: Habilita el servicio de Autorización binaria en el proyecto host de la flota.

  • Agrega el rol Evaluador de políticas de autorización binaria al proyecto host de la flota: Para otorgar el rol Evaluador de políticas de autorización binaria (roles/binaryauthorization.policyEvaluator) a la cuenta de servicio de Kubernetes en el proyecto host de la flota, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Si el clúster se ejecuta detrás de un servidor proxy, asegúrate de que este permita conexiones a la API de autorización binaria (binaryauthorization.googleapis.com). Esta API proporciona validación de implementación basada en políticas y control para las imágenes implementadas en tu clúster. Para obtener más información, consulta Proxy de reglas de firewall y proxy.

Una vez que cumplas con los requisitos previos, puedes habilitar (o inhabilitar) la política de autorización binaria cuando crees un clúster nuevo o actualices uno existente.

Habilita la política de autorización binaria durante la creación del clúster

Puedes habilitar la aplicación de la política de Autorización Binaria con gkectl o gcloud CLI.

gkectl

Para habilitar la autorización binaria cuando creas un clúster con gkectl, haz lo siguiente:

  1. Antes de crear el clúster, agrega binaryAuthorization.evaluationMode al archivo de configuración del clúster de usuario como se muestra en el siguiente ejemplo:

    ...
    binaryAuthorization:
      evaluationMode: "project_singleton_policy_enforce"
    ...
    

    Los valores permitidos para evaluationMode son los siguientes:

    • project_singleton_policy_enforce: Aplica las reglas especificadas en la política de autorización binaria, también conocida como política de proyecto singleton, en tu proyecto de Google Cloud para regular la implementación de imágenes de contenedor en el clúster.

    • disabled: Inhabilita el uso de Autorización Binaria para tu clúster. Este es el valor predeterminado. Si omites binaryAuthorization, se inhabilita la función.

  2. Realiza cualquier otro cambio necesario en el archivo de configuración del clúster y, luego, ejecuta el comando gkectl create cluster.

Para obtener más información sobre la creación de clústeres, consulta la descripción general de la instalación de GKE en VMware.

Habilita o inhabilita la política de Autorización Binaria para un clúster existente

Si tienes un clúster existente de la versión 1.28 o superior, puedes habilitar o inhabilitar la autorización binaria en cualquier momento mediante gkectl o gcloud CLI.

gkectl

  • Para habilitar la función, sigue estos pasos:

    1. Edita el archivo de configuración del clúster para agregar los campos binaryAuthorization:

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. Actualiza el clúster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

      Reemplaza lo siguiente:

      • ADMIN_CLUSTER_KUBECONFIG: Es la ruta de acceso del archivo kubeconfig del clúster de administrador.
      • USER_CLUSTER_CONFIG_FILE: Es la ruta de acceso del archivo de configuración del clúster de usuario.
    3. Espera a que la Deployment llamada binauthz-module-deployment en el espacio de nombres binauthz-system esté lista.

      Cuando la implementación está lista, la autorización binaria aplica las reglas especificadas en la política de la autorización binaria, también conocida como política de project-singleton. Esta política se asocia a tu proyecto de Google Cloud y especifica las reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de gkectl para actualizar un clúster, consulta Actualiza clústeres. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.

  • Para ello, sigue estos pasos:

    1. Edita el archivo de configuración del clúster y quita la sección binaryAuthorization o establece evaluationMode en disabled.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. Actualiza el clúster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

    Después de realizar este cambio, espera unos minutos hasta que se quite el Deployment llamado binauthz-module-deployment en el espacio de nombres binauthz-system.

Soluciona problemas

Si no completas todos los requisitos previos, es posible que veas un mensaje como el siguiente que indique que hay un problema con la configuración de la autorización binaria:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator