Rotar el certificado de validación de paquetes

En esta página se describe cómo rotar la autoridad de certificación raíz utilizada para la validación de paquetes en el dispositivo aislado de Google Distributed Cloud (GDC).

La validación de paquetes de GDC usa una autoridad de certificación (CA) raíz para validar los certificados de clave de lanzamiento. Por eso, es fundamental cambiar el certificado de CA raíz periódicamente. Debes rotar la CA raíz si se te indica que lo hagas a través de un aviso de lanzamiento o del mensaje de advertencia que puede mostrarse al realizar una actualización.

Antes de empezar

Para rotar el certificado de validación de paquetes, debes tener los roles de identidad y acceso necesarios:

  • Asegúrate de que tienes acceso de escritura a package-validation-root-certs ConfigMap.
  • Pide a tu administrador de seguridad que te conceda el rol Actualizar depurador (upgrade-debugger-cp).

Verificar si es necesario rotar el certificado

Verifica que es necesario rotar el certificado de validación de un paquete antes de realizar la operación:

  1. Define la variable de entorno KUBECONFIG:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Sustituye PATH_TO_KUBECONFIG_FILE por la ruta del archivo kubeconfig que has obtenido ejecutando gdcloud auth login en el clúster de administrador raíz.

  2. Determina si es necesario actualizar comparando la ancla de confianza actual con la más reciente. Los datos de ConfigMap en harbor-system/package-validation-root-certs se comparan con el ancla de confianza local:

    $ CURRENT_TRUST_ANCHOR=$(kubectl  --kubeconfig=$KUBECONFIG get cm package-validation-root-certs -n harbor-system -o jsonpath='{.data.ca\.crt}')
    
    $ LATEST_TRUST_ANCHOR=$(cat /root/release/staging_root_ca_certificate.crt)
    
    $ diff <( echo "$CURRENT_TRUST_ANCHOR" ) <( echo "$LATEST_TRUST_ANCHOR" ) && echo trust anchors are same  || echo trust anchors are different, upgrade required!
    

Realizar la rotación y la actualización de certificados en el dispositivo

Para rotar el objeto ConfigMap situado en harbor-system/package-validation-root-certs del clúster de administrador raíz, sigue estos pasos: El operador de infraestructura necesita acceso de escritura a ConfigMap.

  1. Crea las siguientes variables y asígnales valores:

    USERNAME=USER_NAME #IO
    TARGET_FOLDER=/tmp/${USERNAME}
    OUTPUT="${TARGET_FOLDER}/package-validation-root-certs.yaml"
    LATEST_TRUST_ANCHOR_CA_FILE=/root/release/staging_root_ca_certificate.crt
    CONFIGMAP_NAME=package-validation-root-certs
    NAMESPACE=harbor-system
    

    Sustituye USER_NAME por el nombre de usuario de IO.

  2. Crea la carpeta de destino que contendrá los archivos de salida del proceso de rotación de certificados:

    mkdir -p "${TARGET_FOLDER}"
    
  3. Actualiza y sustituye el valor de LATEST_TRUST_ANCHOR:

      cat <<EOF  > "${OUTPUT}"
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: ${CONFIGMAP_NAME}
        namespace: ${NAMESPACE}
      data:
        ca.crt: |
      $(sed 's/^/    /' "${LATEST_TRUST_ANCHOR_CA_FILE}")
      EOF
    
  4. Aplica la nueva configuración con kubectl:

      kubectl apply -f ${OUTPUT}
    
  5. Comprueba que el archivo ca.crt que acabas de aplicar esté en ConfigMap:

      kubectl describe configmap package-validation-root-certs -n harbor-system
    

De esta forma, se rota un nuevo certificado en package-validation-root-cert.