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 son caducables. Puede establecer un TTL de hasta un año como máximo. Debe rotar los secretos de la cuenta de servicio antes de que caduquen para mantener un acceso ininterrumpido. Atlas genera automáticamente una alerta de Los secretos de la cuenta de servicio están a punto de caducar a medida que se acerca la fecha de caducidad. Planifique su cronograma 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

Cree 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 Atlas Kubernetes Operator global debe ajustarse al formato predefinido. El nombre por defecto del deployment del Atlas Kubernetes Operator es mongodb-atlas-operator. Por lo tanto, el secreto debe llamarse mongodb-atlas-operator-service-account.

    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

Haga referencia al secret de su recurso personalizado AtlasProject mediante spec.connectionSecretRef.name.

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

Si creó un secreto project, agregue el connectionSecretRef a su recurso personalizado AtlasProject:

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, compruebe que Atlas Kubernetes Operator se autentica 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"

Atlas Kubernetes Operator gestiona los tokens de acceso automáticamente. Cuando Atlas Kubernetes Operator detecta un secreto de conexión de cuenta de servicio, obtiene un token de acceso de la Atlas Administration API y lo almacena en un secreto de Kubernetes independiente. No edite ni borre manualmente el secreto del token de acceso. Atlas Kubernetes Operator 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

Los secretos de la cuenta de servicio tienen un TTL máximo de un año. Supervise la alerta Los secretos de la cuenta de servicio están a punto de caducar en Atlas y rote sus secretos antes de que caduquen para evitar fallas de autenticación. Esto se aplica tanto a las cuentas de servicio a nivel de organización como a 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 de Atlas Kubernetes Operator, lo mismo que para las claves de API programáticas. Si la IP de salida del pod del operador no está en la lista de acceso de la cuenta de servicio, las solicitudes de la API fallan.