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

La autorización binaria para Google Distributed Cloud es una función de Google Cloud que extiende la aplicación alojada en el momento de la implementación de la autorización binaria a tus clústeres locales. El caso de uso principal 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 aplicación de una política de autorización binaria configurada en tu proyecto de Google Cloud a los clústeres. Para obtener más información sobre las políticas y reglas de 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 en un clúster, asegúrate de cumplir con los siguientes requisitos previos:

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

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

  • Agrega el rol del evaluador de políticas de autorización binaria al proyecto host de tu flota: Para otorgar el rol de evaluador de políticas de autorización binaria (roles/binaryauthorization.policyEvaluator) a la cuenta de servicio de Kubernetes en el proyecto host de tu 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 y control de implementación basados en políticas para las imágenes implementadas en el clúster. Para obtener más información sobre cómo usar una configuración de proxy, consulta Instala detrás de un 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 un clúster 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 bmctl ogcloud CLId.

bmctl

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

  1. Antes de crear tu clúster, agrega 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 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 project-singleton, en tu proyecto de Google Cloud para administrar la implementación de imágenes de contenedor en tu clúster.

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

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

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

gcloud CLI

  • Para crear un clúster de usuario y habilitar la autorización binaria, agrega la marca --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE cuando ejecutes el comando gcloud container bare-metal clusters create.

    Esto crea un clúster de usuario que 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 está asociada con tu proyecto de Google Cloud y especifica reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de gcloud CLI para crear un clúster de usuario, consulta Crea un clúster de usuario con los 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 Descripción general de la autorización binaria.

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

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

bmctl

  • Para habilitar esta función, haz lo siguiente:

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

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

      Reemplaza lo siguiente:

      • CLUSTER_NAME: es el nombre del clúster que se actualizará.
      • CLUSTER_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster.
    3. Espera a que el Deployment llamado binauthz-module-deployment en el espacio de nombres binauthz-system esté listo.

      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 está asociada con tu proyecto de Google Cloud y especifica reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de bmctl para actualizar un clúster, consulta Actualiza clústeres. Para obtener más información sobre las políticas y las reglas de Autorización binaria, consulta Descripción general de la autorización binaria.

  • Para inhabilitarlo, haz lo siguiente:

    Para desactivar esta función, configura evaluationMode como DISABLED o quita la sección binaryAuthorization de la especificación del clúster. Una vez que se realice este cambio, espera unos minutos hasta que se quite el objeto Deployment llamado binauthz-module-deployment en el espacio de nombres binauthz-system.

gcloud CLI

  • Para habilitar la autorización binaria en un clúster existente, agrega la marca --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE cuando ejecutes el comando gcloud container bare-metal clusters update.

    Esto 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 project-singleton. Esta política está asociada con tu proyecto de Google Cloud y especifica reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de gcloud CLI 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 Descripción general de la autorización binaria.

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

Soluciona problemas

Si no completas todos los requisitos previos, es posible que no veas ningún indicio anticipado de un problema. Si la autorización binaria comienza a fallar a la hora de responder a las solicitudes de creación de Pods, verifica status.conditions para el ReplicaSet. Un mensaje como el siguiente indica 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