Configurar la implementación obligatoria de la política de autorización binaria

La autorización binaria para Google Distributed Cloud es una Google Cloud función que amplía la aplicación en tiempo de implementación alojada de autorización binaria a tus clústeres locales. El principal caso de uso de la autorización binaria en Google Distributed Cloud es proteger las cargas de trabajo, pero la autorización binaria funciona con todos los tipos de clústeres. Sigue los pasos que se indican en esta guía para aplicar las reglas de cumplimiento de una política de Autorización Binaria configurada en tu proyecto a tus clústeres. Google Cloud Para obtener más información sobre las políticas y las reglas de autorización binaria, consulta la descripción general de la autorización binaria.

Requisitos previos

Antes de habilitar la aplicación de la política de autorización binaria en un clúster, asegúrate de que cumples los siguientes requisitos:

  • Registra el clúster en una flota: si has creado un clúster con bmctl, se registrará en el proyecto Google Cloud que especifiques en el campo gkeConnect.projectID del archivo de configuración del clúster. Este proyecto se denomina proyecto host de la flota. Para obtener más información sobre las flotas, incluidos casos prácticos, prácticas recomendadas y ejemplos, consulta la documentación sobre gestión de flotas.

  • Habilita la API de autorización binaria en tu proyecto Google Cloud : habilita el servicio de autorización binaria en tu proyecto host de la flota.

  • Añade el rol Evaluador de políticas de autorización binaria a tu proyecto host de la flota: para asignar el rol Evaluador de políticas de autorización binaria (roles/binaryauthorization.policyEvaluator) a la cuenta de servicio de Kubernetes en tu 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 tu clúster se ejecuta detrás de un servidor proxy, asegúrate de que el servidor proxy permita las conexiones a la API de autorización binaria (binaryauthorization.googleapis.com). Esta API proporciona validación y control de despliegue basados en políticas para las imágenes desplegadas en tu clúster. Para obtener más información sobre cómo usar una configuración de proxy, consulta Instalar detrás de un proxy.

Una vez que cumplas los requisitos previos, podrás habilitar (o inhabilitar) la política de Autorización Binaria al crear un clúster o actualizar uno que ya tengas.

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

Puedes habilitar la implementación obligatoria de la política de autorización binaria con bmctl o con la CLI de gcloud.

bmctl

Para habilitar la autorización binaria al crear un clúster con bmctl, sigue estos pasos:

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

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      binaryAuthorization:
        evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
    

    Los valores permitidos de evaluationMode son:

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

    • DISABLE: inhabilita el uso de la autorización binaria en tu clúster. Este es el valor predeterminado. Si omites binaryAuthorization, la función se inhabilitará.

  2. Haz los cambios necesarios en el archivo de configuración del clúster y, a continuación, ejecuta el comando bmctl create cluster.

Para obtener más información sobre cómo crear clústeres, consulta la descripción general de la creación de clústeres.

CLI de gcloud

  • Para crear un clúster de usuarios y habilitar la autorización binaria, añade la marca --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE al ejecutar el comando gcloud container bare-metal clusters create.

    De esta forma, se crea un clúster de usuario que aplica las reglas especificadas en la política de autorización binaria, también conocida como política de un solo proyecto. Esta política está asociada a tu proyecto de Google Cloud y especifica reglas para controlar el despliegue de imágenes de contenedor. Para obtener más información sobre cómo usar la CLI de gcloud para crear un clúster de usuarios, consulta Crear un clúster de usuarios con clientes de la API de GKE On-Prem. Para obtener más información sobre las políticas y las reglas de Autorización binaria, consulta la descripción general de Autorización binaria.

Habilitar o inhabilitar la política de autorización binaria en un clúster

Si tienes un clúster con la versión 1.16 o una posterior, puedes habilitar o inhabilitar la autorización binaria en cualquier momento mediante bmctl o la CLI de gcloud.

bmctl

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

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

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. Actualiza el clúster:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Haz los cambios siguientes:

      • CLUSTER_NAME: el nombre del clúster que se va a actualizar.
      • CLUSTER_KUBECONFIG: la ruta al archivo kubeconfig del clúster.
    3. Espera a que la implementación llamada binauthz-module-deployment en el espacio de nombres binauthz-system esté lista.

      Cuando el despliegue está listo, la autorización binaria aplica las reglas especificadas en la política de autorización binaria, también conocida como política de un solo proyecto. Esta política está asociada a tu proyecto deGoogle Cloud y especifica reglas para controlar el despliegue de imágenes de contenedor. Para obtener más información sobre cómo usar bmctl para actualizar un clúster, consulta Actualizar clústeres. Para obtener más información sobre las políticas y las reglas de Autorización binaria, consulta la descripción general de Autorización binaria.

  • Para inhabilitarla, sigue estos pasos:

    Para desactivar esta función, defina evaluationMode como DISABLED o quite la sección binaryAuthorization de la especificación del clúster. Una vez que se haya realizado este cambio, espere unos minutos hasta que se elimine la implementación llamada binauthz-module-deployment en el espacio de nombres binauthz-system.

CLI de gcloud

  • Para habilitar la autorización binaria en un clúster, añade la marca --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE al ejecutar el comando gcloud container bare-metal clusters update.

    Actualiza un clúster de usuario para que la autorización binaria aplique las reglas especificadas en la política de autorización binaria, también conocida como política de un solo proyecto. Esta política está asociada a tu proyectoGoogle Cloud y especifica las reglas que rigen la implementación de imágenes de contenedor. Para obtener más información sobre cómo usar la CLI de gcloud para actualizar un clúster de usuario, consulta gcloud container bare-metal clusters update en la referencia de la CLI de gcloud. Para obtener más información sobre las políticas y las reglas de Autorización binaria, consulta la descripción general de Autorización binaria.

  • Para inhabilitar la autorización binaria en un clúster, ejecuta el comando gcloud container bare-metal clusters update con la marca --binauthz-evaluation-mode=DISABLED.

Solución de problemas

Si no completas todos los requisitos previos, es posible que no veas ninguna señal de que hay un problema. Si la autorización binaria empieza a fallar al responder a las solicitudes de creación de pods, consulta status.conditions para ver el ReplicaSet. Un mensaje como el siguiente indica que hay un problema con la configuración de 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