Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar acesso ao Atlas usando contas de serviço

Atlas API Service Accounts provide a secure, token-based alternative to Programmatic API Keys for authenticating Atlas Kubernetes Operator with the Atlas Administration API. Service Accounts use short-lived access tokens derived from a clientId and clientSecret pair, reducing the risk of long-lived credential exposure.

O MongoDB recomenda contas de serviço em vez de chaves de API programáticas para novas implantações. As contas de serviço oferecem os seguintes benefícios:

  • Autenticação baseada em token com atualização automática de token gerenciada pelo operador.

  • Suporte para escopos de nível de organização e de nível de projeto.

  • Identidade auditável e distinta para suas cargas de trabalho do Atlas Kubernetes Operator.

Importante

Expiração do segredo da conta de serviço

Ao contrário das chaves de API, os segredos da conta de serviço são expiráveis. Você pode definir um TTL de até um ano no máximo. Você deve alternar os segredos da conta de serviço antes que eles expirem para manter o acesso ininterrupto. O Atlas gera automaticamente um alerta de segredos de conta de serviço que estão prestes a expirar à medida que a data de expiração se aproxima. Planeje seu cronograma de rotação adequadamente.

Isso se aplica a contas de serviço de nível de organização e de nível de projeto.

Antes de começar, verifique se você tem o seguinte:

  • Uma conta Atlas com a função Organization Owner para contas de serviço de nível de organização ou a função Project Owner para contas de serviço de nível de projeto.

  • Um cluster Kubernetes em execução com o Atlas Kubernetes Operator instalado.

  • kubectl acesso ao cluster Kubernetes onde o Atlas Kubernetes Operator é executado.

1

Create a Service Account in Atlas using the Atlas UI or the Atlas Administration API. To learn how to create an organization-level Service Account, see Create a Service Account in an Organization. To learn how to create a project-level Service Account, see Create a Service Account in a Project.

Copie o clientId e clientSecret. Armazene-os com segurança, pois você não poderá recuperar o clientSecret novamente após a criação.

2

Crie um secret do Kubernetes secret contendo orgId, clientId e clientSecret.

  • Para obter um segredo global do Atlas Kubernetes Operator segredo, execute os seguintes comandos:

    Observação

    O nome do segredo do Atlas Kubernetes Operator global deve estar em conformidade com o formato predefinido. O nome padrão do sistema Atlas Kubernetes Operator é mongodb-atlas-operator. Então, o segredo deve ser nomeado como 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 obter um segredo project do Atlas Kubernetes Operator segredo, execute os seguintes 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

Referência o segredo do seu recurso personalizado AtlasProject usando spec.connectionSecretRef.name.

Se você criou um global segredo, todos os projetos o utilizam por padrão e nenhuma configuração adicional é necessária.

Se você criou um project segredo, adicione o connectionSecretRef ao seu recurso personalizado AtlasProject:

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

Depois de configurar o secret, verifique se o Atlas Kubernetes Operator autentica com sucesso:

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

Verifique se a condição Ready é True. Se o Atlas Kubernetes Operator não puder autenticar com as credenciais da conta de serviço, as condições mostrarão um erro descrevendo o problema.

O exemplo a seguir mostra um segredo de conexão configurado para uma conta de serviço:

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"

O Atlas Kubernetes Operator gerencia tokens de acesso automaticamente. Quando o Atlas Kubernetes Operator detecta um Service Account Connection Secret, ele obtém um token de acesso da Atlas Administration API e o armazena em um secret do Kubernetes separado. Não edite ou exclua manualmente o Access Token Secret. O Atlas Kubernetes Operator atualiza os tokens conforme necessário.

Quando você gira o segredo da conta de serviço no Atlas:

  1. Atualizar o Kubernetes Connection Secret com o novo clientSecret.

  2. O Atlas Kubernetes Operator detecta a alteração e adquire um novo token de acesso no próximo ciclo de reconciliação. Nenhuma reinicialização é necessária.

Importante

Os segredos da conta de serviço têm um TTL máximo de um ano. Monitore o alerta de que os segredos da conta de serviço estão prestes a expirar no Atlas e gire seus segredos antes que eles expirem para evitar falhas de autenticação. Isso se aplica a contas de serviço no nível da organização e no nível do projeto.

The Service Account's API access list must include the egress IP address or CIDR block used by the Atlas Kubernetes Operator pod, the same as for Programmatic API Keys. If the operator pod's egress IP is not on the Service Account access list, API requests fail.