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 API do Atlas fornecem uma alternativa segura e baseada em token às chaves da API programáticas para autenticar o Atlas Kubernetes Operator com a API de administração do Atlas . As Contas de Serviço usam tokens de acesso de curta duração derivados de um clientId par clientSecret e, 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 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

Crie uma Conta de Serviço no Atlas utilizando a UI do Atlas ou a API de Administração do Atlas . 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 segredo do Kubernetes orgId clientIdcontendo,clientSecret e.

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

    Observação

    O nome do segredo do global Atlas Kubernetes Operator 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 mongodb-atlas-operator-service-account como.

    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

Consulte o segredo do seu AtlasProject recurso personalizado usando spec.connectionSecretRef.name.

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

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

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 segredo, 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 segredo de conexão de conta de serviço, ele obtém um token de acesso da API de administração do Atlas e o armazena em um segredo separado do Kubernetes.Não edite ou exclua manualmente o segredo do token de acesso. 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.

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 , a mesma das chaves da API programáticas. Se o IP de saída do pod do operador não estiver na lista de acesso à conta de serviço, as solicitaçõesda API falharão.