Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configurar el acceso a Atlas mediante cuentas de servicio

Las cuentas de servicio de la API de Atlas proporcionan una alternativa segura basada en tokens a las claves de API programáticas para autenticar Atlas Kubernetes Operator con Atlas Administration API. Las cuentas de servicio utilizan tokens de acceso de corta duración derivados de un par clientId y clientSecret, lo que reduce el riesgo de exposición de credenciales de larga duración.

MongoDB recomienda las cuentas de servicio sobre las claves de API programáticas para las nuevas implementaciones. Las cuentas de servicio ofrecen los siguientes beneficios:

  • Autenticación basada en tokens con actualización automática de tokens gestionada por el operador.

  • Soporte para ámbitos a nivel de organización y de proyecto.

  • Identidad auditable y distinta para sus cargas de trabajo de Atlas Kubernetes Operator.

Importante

Caducidad del secreto de la cuenta de servicio

A diferencia de las claves API, los secretos de la cuenta de servicio tienen fecha de caducidad. Puede establecer un tiempo de vida útil (TTL) de hasta un año. Debe rotar los secretos de la cuenta de servicio antes de que caduquen para mantener un acceso ininterrumpido. Atlas genera automáticamente una alerta cuando se acerca la fecha de caducidad de los secretos de la cuenta de servicio. Planifique su calendario de rotación en consecuencia.

Esto se aplica tanto a las cuentas de servicio a nivel de organización como a nivel de proyecto.

Antes de comenzar, asegúrate de tener lo siguiente:

  • Una cuenta de Atlas con el rol de Organization Owner para cuentas de servicio a nivel de organización, o el rol de Project Owner para cuentas de servicio a nivel de proyecto.

  • Un clúster de Kubernetes en ejecución con Atlas Kubernetes Operator instalado.

  • kubectl acceso al clúster de Kubernetes donde se ejecuta Atlas Kubernetes Operator.

1

Cree una cuenta de servicio en Atlas mediante la interfaz de usuario de Atlas o la Atlas Administration API. Para aprender a crear una cuenta de servicio a nivel de organización, consulte Crear una cuenta de servicio en una organización. Para aprender a crear una cuenta de servicio a nivel de proyecto, consulte Crear una cuenta de servicio en un proyecto.

Copia el clientId y el clientSecret. Almacénelos de forma segura, ya que no podrá recuperar el clientSecret de nuevo después de la creación.

2

Crea un secreto de Kubernetes que orgId clientIdcontenga,clientSecret y.

  • Para un secreto de Atlas Kubernetes Operator global, ejecute los siguientes comandos:

    Nota

    El nombre del secreto del operador de global Atlas Kubernetes debe ajustarse al formato predefinido. El nombre predeterminado del despliegue del operador de Atlas Kubernetes mongodb-atlas-operator es. Por lo tanto, el secreto debe mongodb-atlas-operator-service-account llamarse.

    kubectl create secret generic mongodb-atlas-operator-service-account \
    --from-literal="orgId=<the_atlas_organization_id>" \
    --from-literal="clientId=<the_service_account_client_id>" \
    --from-literal="clientSecret=<the_service_account_client_secret>" \
    -n <operator_namespace>
    kubectl label secret mongodb-atlas-operator-service-account \
    atlas.mongodb.com/type=credentials \
    -n mongodb-atlas-system
  • Para un secreto de Atlas Kubernetes Operator project, ejecute los siguientes comandos:

    kubectl create secret generic my-project-connection \
    --from-literal="orgId=<the_atlas_organization_id>" \
    --from-literal="clientId=<the_service_account_client_id>" \
    --from-literal="clientSecret=<the_service_account_client_secret>" \
    -n <atlas_project_namespace>
    kubectl label secret my-project-connection \
    atlas.mongodb.com/type=credentials \
    -n <atlas_project_namespace>
3

Haz referencia al secreto de tu AtlasProject recurso personalizado usando spec.connectionSecretRef.name.

Si creaste un global secreto, todos los proyectos lo usarán por defecto y no se necesita ninguna configuración adicional.

Si creaste un project secreto, agrega el connectionSecretRef a tu AtlasProject recurso personalizado:

apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: "My Project"
connectionSecretRef:
name: my-project-connection
4

Después de configurar el secreto, verifique que el operador de Atlas Kubernetes se autentique correctamente:

kubectl get atlasproject my-project -o jsonpath='{.status.conditions}'

Compruebe que la condición Ready sea True. Si Atlas Kubernetes Operator no puede autenticarse con las credenciales de la cuenta de servicio, las condiciones muestran un error que describe el problema.

El siguiente ejemplo muestra un secreto de conexión configurado para una cuenta de servicio:

apiVersion: v1
kind: Secret
metadata:
name: my-project-connection
namespace: atlas-operator
labels:
atlas.mongodb.com/type: credentials
type: Opaque
stringData:
orgId: "5d39f0719ccf646554345678"
clientId: "mdb_sa_id_67890abcdef1234567890abc"
clientSecret: "mdb_sa_sk_abcdef1234567890abcdef12"

El operador de Atlas Kubernetes gestiona automáticamente los tokens de acceso. Cuando detecta un secreto de conexión de cuenta de servicio, obtiene un token de acceso de la API de administración de Atlas y lo almacena en un secreto de Kubernetes independiente.No edite ni elimine manualmente el secreto del token de acceso. El operador de Atlas Kubernetes actualiza los tokens según sea necesario.

Cuando rote el secreto de la cuenta de servicio en Atlas:

  1. Actualice el secreto de conexión de Kubernetes con el nuevo clientSecret.

  2. El Atlas Kubernetes Operator detecta el cambio y adquiere un nuevo token de acceso en el siguiente ciclo de conciliación. No se requiere reiniciar.

Importante

Las claves de servicio tienen una vida útil máxima de un año. Supervise la alerta de Atlas que indica que las claves de servicio están a punto de caducar y rote sus claves antes de que caduquen para evitar fallos de autenticación. Esto se aplica tanto a las cuentas de servicio a nivel de organización como a las de nivel de proyecto.

La lista de acceso a la API de la cuenta de servicio debe incluir la dirección IP de salida o el bloque CIDR utilizado por el pod del operador de Atlas Kubernetes, al igual que para las claves de API programáticas. Si la IP de salida del pod del operador no se encuentra en la lista de acceso a la cuenta de servicio, las solicitudes a laAPI fallarán.