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

As contas de serviço da Atlas API fornecem uma alternativa segura e baseada em token às chaves de API programáticas para autenticar o Atlas Kubernetes Operator com a Atlas Administration API. As contas de serviço usam tokens de acesso de curta duração derivados de um par clientId e clientSecret, reduzindo o risco de exposição de credenciais de longa duração.

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 alterar os segredos da conta de serviço antes que expirem para manter o acesso ininterrupto. O Atlas levanta automaticamente um alerta Os segredos da conta de serviço estão prestes a expirar à medida que a data de expiração se aproxima. Planeje seu agendamento de alteração de acordo.

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

Crie uma conta de serviço no Atlas usando a IU do Atlas ou a Atlas Administration API. Para saber como criar uma conta de serviço em nível de organização, consulte Criar uma conta de serviço em uma organização. Para saber como criar uma conta de serviço em nível de projeto, consulte Criar uma conta de serviço em um projeto.

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 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 em nível de organização e em nível de projeto.

A lista de acesso à API da conta de serviço deve incluir o endereço IP de saída ou o bloco CIDR usado pelo pod do Atlas Kubernetes Operator, o mesmo que para chaves de API programáticas. Se o IP de saída do pod do operador não estiver na lista de acesso da conta de serviço, as solicitações da API falharão.