Rotación de credenciales de cluster

Descubra cómo rotar las credenciales de los clusters que ha creado con Kubernetes Engine (OKE).

Para activar la comunicación TLS segura (anteriormente SSL) hacia, desde y dentro de los clusters, Kubernetes utiliza certificados PKI (infraestructura de clave pública) para la autenticación. Para obtener más información sobre los certificados PKI y los clusters de Kubernetes, consulte Certificados y requisitos PKI en la documentación de Kubernetes.

Los clusters que crea con el motor de Kubernetes tienen CA raíz de PKI (autoridades de certificación) y claves privadas para el cluster, el componente etcd y el componente de proxy frontal. Estas CA raíz se utilizan para firmar los certificados y las claves privadas utilizados en el cluster. Las CA raíz, los certificados firmados y las claves privadas que se utilizan en el cluster se conocen colectivamente como credenciales de cluster.

En los clusters que crea con Kubernetes Engine, las CA raíz caducan después de cinco años. Para seguir utilizando un cluster, debe cambiar (o "rotar") las credenciales del cluster antes de que finalice el período de cinco años. Además, es posible que su organización tenga directrices y políticas de seguridad que requieran rotar las credenciales del cluster con más frecuencia (en algunos casos, con mucha más frecuencia). Los mensajes que le informan de la próxima caducidad de las credenciales del cluster se muestran en la consola. También puede utilizar la consola, la CLI y la API para averiguar cuándo caducarán las credenciales del cluster.

Al rotar credenciales de cluster, debe actualizar los clientes de API de Kubernetes que utilizaban las credenciales anteriores para comunicarse con la API de Kubernetes. Estos clientes de API de Kubernetes incluyen archivos de kubeconfig y pods que se comunican directamente con la API de Kubernetes.

Nota

Puede iniciar la rotación de credenciales de cluster en cualquier momento, pero debe iniciar la rotación de credenciales antes de que caduquen las credenciales.

Tenga en cuenta que, para evitar la interrupción del servicio, si no ha iniciado la rotación de credenciales de cluster 90 días antes de que caduquen las credenciales, Kubernetes Engine intenta rotar las credenciales de cluster automáticamente. Sin embargo, se recomienda rotar las credenciales del cluster usted mismo, en lugar de basarse en la rotación automática de credenciales del cluster. Para obtener más información, consulte Automatic Cluster Credential Rotation.

La rotación de credenciales de cluster es un proceso de tres pasos:

  • Paso 1, Iniciar la fase de rotación de credenciales de inicio: durante la fase de rotación de credenciales de inicio, se crean nuevas CA raíz, claves privadas y certificados. Puede iniciar la fase Iniciar rotación de credenciales en cualquier momento, pero debe iniciar la rotación de credenciales antes de que caduquen las credenciales. El inicio de la rotación de credenciales antes de que caduquen las credenciales también evitará la interrupción del servicio.

    Al iniciar la fase de inicio de rotación de credenciales, especifique explícitamente la longitud de un 'período de retraso' antes de que la fase de finalización de rotación de credenciales se inicie automáticamente. El período de retraso permite actualizar los clientes de API de Kubernetes (paso 2). Durante el período de retraso, tanto las credenciales heredadas como las nuevas credenciales proporcionan una comunicación segura hacia, desde y dentro del cluster. El período de retraso que especifique no debe ser inferior a 1 día ni superior a 90 días. Puede iniciar manualmente la fase Completar rotación de credenciales antes de que finalice el período de retraso, siempre que las nuevas credenciales tengan al menos 24 horas de antigüedad y haya completado correctamente el paso 2.

    No inicie el paso 2 hasta que se hayan creado las nuevas CA raíz, las claves privadas y los certificados.

    Nota

    Al utilizar la CLI o la API para iniciar la fase de rotación de credenciales de inicio, especifique la longitud del período de retraso en el formato de duración ISO 8601. Por ejemplo:
    • utilice P5D para especificar cinco días
    • utilice P5DT5H para especificar cinco días y cinco horas
    • utilice P5DT5H5M para especificar cinco días, cinco horas y cinco minutos

    Para obtener más información sobre el formato de duración ISO 8601, busque en línea.

  • Paso 2, Actualizar clientes de API de Kubernetes: cuando se hayan creado las nuevas CA raíz, claves privadas y certificados, y dentro del período de retraso especificado (no menos de 1 día y no más de 90 días):
    • Configure nuevos archivos kubeconfig para permitir el acceso al cluster mediante las nuevas credenciales y las credenciales heredadas.
    • Vuelva a crear o reiniciar los nodos de trabajador que alojan pods que se comunican directamente con el servidor de API de Kubernetes (o para evitar la interrupción en los nodos de trabajador, simplemente reinicie los pods por sí mismos). Si el cluster contiene nodos virtuales, reinicie todos los pods que se ejecutan en los nodos virtuales.

    No inicie el paso 3 hasta que haya configurado nuevos archivos kubeconfig y haya vuelto a crear o reiniciar los nodos de trabajador (o simplemente haya reiniciado los pods).

  • Paso 3, Iniciar la fase Completar rotación de credenciales: cuando haya terminado el paso 2 y dentro del período de retraso especificado (no menos de 1 día y no más de 90 días), puede iniciar manualmente la fase Completar rotación de credenciales. Durante la fase Completar rotación de credenciales, se retiran y eliminan las CA raíz heredadas, las claves privadas y los certificados. Inicie la fase Completar rotación de credenciales no antes de 24 horas después de haber iniciado la fase Iniciar rotación de credenciales y solo después de haber terminado el paso 2. Si las nuevas credenciales tienen al menos 24 horas de antigüedad, puede iniciar la fase Completar rotación de credenciales tan pronto como esté listo.

    Si no inicia manualmente la fase Completar rotación de credenciales durante el período de retraso especificado (no menos de 1 día y no más de 90 días), la fase Completar rotación de credenciales se inicia automáticamente al final del período de retraso.

    Una vez finalizada la fase de rotación de credenciales completas, recomendamos sustituir cualquier archivo kubeconfig creado durante el paso 2 (que contendrá tanto credenciales heredadas como nuevas credenciales) por un nuevo archivo kubeconfig que contenga solo las nuevas credenciales. Si el cluster contiene nodos virtuales, también recomendamos reiniciar todos los pods que se ejecutan en los nodos virtuales.

La fase de inicio de rotación de credenciales y la fase de finalización de rotación de credenciales se generan como solicitudes de trabajo independientes. Para realizar un seguimiento del progreso de la fase de inicio de rotación de credenciales y la fase de finalización de rotación de credenciales, consulte el estado de la solicitud de trabajo correspondiente. Consulte Visualización de solicitudes de trabajo.

Puede rotar las credenciales del cluster mediante la consola, la CLI y la API.

Tenga en cuenta lo siguiente al rotar las credenciales del cluster:

  • La rotación de credenciales está soportada para clusters que ejecutan la versión 1.20 o posterior de Kubernetes.
  • La simple actualización de la versión de Kubernetes en el plano de control de cluster no rota las credenciales. Debe completar todos los pasos del proceso de rotación de credenciales.
  • La fase de inicio de rotación de credenciales y la fase de finalización de rotación de credenciales solo pueden comenzar cuando todos los nodos de trabajador del cluster (nodos gestionados, nodos virtuales, nodos autogestionados) tengan el estado READY (Listo). Si el estado de uno o más nodos de trabajador cambia a NOT READY durante la rotación de credenciales, las operaciones de rotación de credenciales se detienen hasta 24 horas, a la espera de que todos los nodos vuelvan a tener el estado READY antes de reanudar. Si uno o más nodos de trabajador aún tienen el estado NOT READY después de 24 horas, se agota el tiempo de espera de las operaciones de rotación de credenciales.
  • Si la fase Iniciar rotación de credenciales o Completar rotación de credenciales falla por algún motivo, las credenciales heredadas seguirán funcionando y no se darán de baja hasta que caduquen.
  • Si no inicia manualmente la fase Completar rotación de credenciales dentro del período de retraso especificado (no menos de 1 día y no más de 90 días), la fase Completar rotación de credenciales se inicia automáticamente. Si no ha actualizado los clientes de API de Kubernetes antes de que finalice el período de retraso, el cluster experimentará una interrupción del servicio.

Políticas de IAM necesarias para rotar credenciales de cluster

Para rotar credenciales de cluster, debe pertenecer a un grupo al que se le haya otorgado permiso para gestionar el cluster para el que desea rotar las credenciales o estar en el grupo Administradores del arrendamiento.

Rotación automática de credenciales de cluster

Kubernetes Engine supervisa el entorno de Kubernetes para identificar clusters con credenciales que se aproximan a su fecha de caducidad. Cuando Kubernetes Engine detecta un cluster con credenciales que van a caducar en 90 días y que no ha comenzado a rotar, Kubernetes Engine intenta rotar las credenciales del cluster automáticamente con el fin de evitar la interrupción del servicio. Sin embargo, tenga en cuenta que le recomendamos que rote las credenciales del cluster usted mismo, en lugar de depender de Kubernetes Engine para rotar automáticamente las credenciales del cluster.

Kubernetes Engine rota automáticamente las credenciales del cluster, independientemente de la versión de Kubernetes que se ejecute en el cluster. A diferencia de la rotación manual de credenciales de cluster, la rotación automática de credenciales de cluster no requiere que los clusters ejecuten la versión 1.20 o posterior de Kubernetes.

Además, a diferencia de la rotación manual de credenciales de cluster, Kubernetes Engine rota automáticamente las credenciales de cluster independientemente del estado de los nodos de trabajador en el cluster. La rotación automática de credenciales de cluster no necesita que los nodos de trabajador tengan el estado READY (Listo) durante la fase de inicio de rotación de credenciales o la fase de finalización de credenciales.

Cuando Kubernetes Engine inicia automáticamente la fase de inicio de rotación de credenciales de rotación de credenciales, notifica que se ha iniciado la rotación automática de credenciales de cluster. Durante la fase de inicio de rotación de credenciales, se crean nuevas CA raíz, claves privadas y certificados. Cuando finalice la fase de inicio de credencial:

  • Si las credenciales del cluster aún no han caducado, Kubernetes Engine programa la fase Completar rotación de credenciales para que comience tres días antes de la fecha de caducidad de la credencial. Puede iniciar manualmente la fase Completar rotación de credenciales de la rotación de credenciales antes si lo prefiere completando el Paso 3, Iniciar la fase Completar rotación de credenciales (para evitar una interrupción del servicio, primero complete el Paso 2, Actualizar clientes de API de Kubernetes).
  • Si las credenciales del cluster ya han caducado o van a caducar en tres días, Kubernetes Engine inicia la fase de rotación de credenciales completa inmediatamente.

Antes de iniciar la fase Completar credencial, para evitar una interrupción del servicio, es su responsabilidad actualizar los clientes de API de Kubernetes para:

  • Configure nuevos archivos kubeconfig para permitir el acceso al cluster mediante las credenciales nuevas y las credenciales heredadas.
  • Vuelva a crear o reiniciar los nodos de trabajador que alojan pods que se comunican directamente con el servidor de API de Kubernetes (o para evitar la interrupción en los nodos de trabajador, simplemente reinicie los pods ellos mismos).

Tenga en cuenta que si Kubernetes Engine inicia la fase de rotación de credenciales completa inmediatamente porque las credenciales de cluster ya han caducado, no tiene la oportunidad de actualizar los clientes de API de Kubernetes antes de que se retiren las credenciales heredadas. Como resultado, el cluster experimentará una interrupción del servicio hasta que haya configurado nuevos archivos kubeconfig para permitir el acceso al cluster mediante las nuevas credenciales, y vuelva a crear o reiniciar los nodos de trabajador (o reinicie los pods).

Uso de la consola

Para comprobar cuándo caducan las credenciales del cluster

  1. Abra el menú de navegación y seleccione Servicios para desarrolladores. En Contenedores y artefactos, seleccione Clusters de Kubernetes (OKE).
  2. Seleccione un compartimento en el que tenga permiso para trabajar.
  3. En la página Lista de clusters, haga clic en el nombre del cluster para el que desea comprobar la fecha de caducidad de la credencial.
  4. En la página Cluster, revise la fecha junto a la etiqueta Las credenciales de cluster caducan en:.

Paso 1: Iniciar la fase de rotación de credenciales de inicio

  1. Abra el menú de navegación y seleccione Servicios para desarrolladores. En Contenedores y artefactos, seleccione Clusters de Kubernetes (OKE).
  2. Seleccione un compartimento en el que tenga permiso para trabajar.
  3. En la página Lista de clusters, haga clic en el nombre del cluster para el que desea rotar credenciales.
  4. En la página Cluster, haga clic en Iniciar rotación junto a la etiqueta Las credenciales de cluster caducan en:.
  5. En el cuadro de diálogo Iniciar rotación de credenciales, especifique cuánto tiempo se retrasará el inicio automático de la fase Completar rotación de credenciales. El período de retraso que especifique debe ser:
    • al menos 24 horas después de iniciar la fase de rotación de credenciales de inicio
    • no más de 90 días después de iniciar la fase de inicio de rotación de credenciales
  6. Haga clic en Iniciar para iniciar la fase Iniciar rotación de credenciales.
  7. Para ver el progreso de la solicitud de trabajo Start Credential Rotation, haga clic en Work Requests en Resources.
  8. Solo cuando el estado de la solicitud de trabajo Iniciar rotación de credenciales sea Finalizada, pase a actualizar los clientes de API de Kubernetes (consulte Paso 2: Actualización de clientes de API de Kubernetes).

Paso 2: Actualizar clientes de API de Kubernetes

Cuando el estado de la solicitud de trabajo Iniciar rotación de credenciales es Finalizado:

  1. Configure nuevos archivos kubeconfig para acceder al cluster con las nuevas credenciales mediante el comando oci ce cluster create-kubeconfig (consulte Configuración del acceso al cluster).

    Los archivos kubeconfig contienen las credenciales nuevas y las credenciales heredadas.

  2. Volver a crear o reiniciar nodos de trabajador que alojan pods que se comunican directamente con el servidor de API de Kubernetes (o para evitar la interrupción en los nodos de trabajador, simplemente reinicie los pods ellos mismos):
    • Volver a crear o reiniciar nodos de trabajador:
      • Vuelva a crear un nodo de trabajador suprimiendo el nodo de trabajador sin reducir el pool de nodos. Se crea un nuevo nodo de trabajador para sustituir el nodo de trabajador suprimido. Consulte Supresión de nodos de trabajo.
      • Reinicie un nodo de trabajador. Consulte Rebooting an Instance.
    • Reinicie los pods que se ejecutan en el cluster que se comunican directamente con el servidor de API de Kubernetes. Si el cluster contiene nodos virtuales, reinicie todos los pods que se ejecutan en los nodos virtuales.
  3. Solo cuando haya configurado nuevos archivos kubeconfig y haya recreado o reiniciado nodos de trabajador o pods, continúe para completar la rotación de credenciales (consulte Paso 3: Iniciar la fase de rotación de credenciales completa).

Paso 3: Iniciar la fase de rotación de credenciales completa

Al iniciar la fase de inicio de rotación de credenciales, especifique explícitamente la duración de un período de retraso antes del inicio automático de la fase de finalización de rotación de credenciales. El período de retraso que especifique no debe ser inferior a 1 día ni superior a 90 días. Durante el período de retraso, tanto las credenciales heredadas como las nuevas credenciales proporcionan una comunicación segura hacia, desde y dentro del cluster.

Si lo prefiere, en lugar de esperar el inicio automático de la fase de rotación de credenciales completas al final del período de retraso, puede iniciar la fase de rotación de credenciales completas inmediatamente, de la siguiente manera:

  1. Asegúrese de lo siguiente:
  2. En la página Cluster, haga clic en Completar rotación ahora junto a la etiqueta Completar rotación de credenciales en:.
  3. En el cuadro de diálogo Finalizar rotación, seleccione la opción He leído el mensaje anterior para confirmar que ha actualizado los clientes de API de Kubernetes.
  4. Haga clic en Iniciar para iniciar la fase de rotación de credenciales completa, durante la cual se retiran y eliminan las CA raíz heredadas, las claves privadas y los certificados.
  5. Para ver el progreso de la solicitud de trabajo Complete Credential Rotation, haga clic en Work Requests en Resources.

    Cuando el estado de la solicitud de trabajo Complete Credential Rotation es Complete (Finalizada), las nuevas credenciales se utilizan para la comunicación segura con el cluster, desde y dentro del cluster. Las credenciales heredadas se han retirado y eliminado.

  6. (Recomendado, pero no necesario) Sustituya cualquier archivo kubeconfig creado durante el paso 2 (que contendrá tanto credenciales antiguas como nuevas) por un nuevo archivo kubeconfig que contenga solo las nuevas credenciales mediante el comando oci ce cluster create-kubeconfig (consulte Setting Up Cluster Access). Si el cluster contiene nodos virtuales, también recomendamos reiniciar todos los pods que se ejecutan en los nodos virtuales.

Uso de la CLI

Para obtener información sobre el uso de la CLI, consulte Interfaz de línea de comandos (CLI). Para obtener una lista completa de los indicadores y las opciones disponibles para los comandos de la CLI, consulte Referencia de la línea de comandos.

Inicio de la fase de rotación de credenciales de inicio

oci ce cluster start-credential-rotation --auto-completion-delay-duration <number-of-days> --cluster-id <cluster-ocid>

Por ejemplo:

oci ce cluster start-credential-rotation --auto-completion-delay-duration 'P5D' --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd

Visualización del estado de las solicitudes de trabajo de rotación de credenciales

oci ce cluster credential-rotation-status get --cluster-id <cluster-ocid>

Por ejemplo:

oci ce cluster credential-rotation-status get --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd

Inicio de la fase de rotación de credenciales completas

oci ce cluster complete-credential-rotation --cluster-id <cluster-ocid>

Por ejemplo:

oci ce cluster complete-credential-rotation --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd