Segurança e privacidade
O que o DynamoOps armazena, o que envia e para onde. As credenciais ficam na sua máquina, os dados das tabelas nunca saem dela e o app não tem conta, verificação de licença nem telemetria.
Arquitetura
O DynamoOps é um aplicativo Electron com um backend local embutido. A interface se comunica com esse backend pela interface de loopback, e o backend se comunica com a AWS usando o AWS SDK for JavaScript v3 oficial. Não existe nenhuma nuvem do DynamoOps: consultas, resultados e edições trafegam diretamente entre a sua máquina e a AWS, e o app nunca se comunica com nenhum servidor do DynamoOps. Como o código é público, você mesmo pode verificar isso no GitHub.
Sua máquina AWS
┌───────────────────────────────────┐
│ DynamoOps UI ⇄ local backend │ ⇄ HTTPS ⇄ DynamoDB · STS · SSO · CloudWatch
└───────────────────────────────────┘Credenciais
- As chaves de acesso de longo prazo são lidas pelo AWS SDK a partir de
~/.awsou de variáveis de ambiente. O DynamoOps nunca as solicita, exibe ou copia. - As credenciais de Assume Role e de roles do SSO ficam na memória do backend e são descartadas ao fazer logout, trocar de conexão ou fechar o app.
- Os tokens de acesso do SSO e o registro do cliente OIDC ficam em cache na pasta de suporte do app, com permissão de arquivo 0600, para que você não seja enviado ao navegador toda vez que abrir o app. Forget this SSO session os apaga.
- Perfis salvos, conexões recentes e histórico de roles armazenam apenas identificadores.
Proteção da API local
O backend embutido roda com as suas credenciais AWS, por isso ele fica restrito ao próprio app.
- Ele escuta apenas em
127.0.0.1, nunca nas interfaces de rede da sua máquina. - Ele rejeita requisições cujo
HostouOriginnão seja o app, o que protege contra DNS rebinding e contra sites abertos no seu navegador tentando chamá-lo. - Os dados lidos do DynamoDB são tratados como não confiáveis e escapados antes de serem renderizados, e uma Content Security Policy rígida bloqueia scripts inline como segunda camada de proteção.
- A janela do Electron roda em sandbox, sem acesso ao Node.js, não pode navegar para fora do app e só abre links
https:no seu navegador padrão.
O que é enviado para onde
| Destino | Quando | Conteúdo |
|---|---|---|
| Endpoints da AWS (ou o seu endpoint personalizado) | Em toda operação em tabelas | As chamadas de API do DynamoDB, STS, SSO e CloudWatch que você dispara |
| Seu navegador padrão | Login no SSO e links https | Abre uma URL; nada além disso |
| Qualquer outro lugar | Nunca | O DynamoOps não tem analytics nem telemetria |
Armazenamento local
Preferências e históricos não sensíveis ficam no armazenamento local do app nesta máquina:
- Perfis salvos, conexões recentes, histórico de roles e os últimos valores do formulário de SSO.
- Histórico de consultas (as últimas 50), snapshots de versões de itens (até 20 por item) e templates de itens.
- Tema, preferência de formato JSON e o limite do alerta de custo.
Os snapshots de versões e o histórico de consultas podem conter dados de itens e valores de chaves das suas tabelas. Se isso for uma preocupação em uma máquina compartilhada, limpe o histórico pelo app e apague a pasta de suporte do aplicativo ao desinstalar. Veja onde o DynamoOps armazena dados.
Permissões IAM recomendadas
Conceda ao principal usado pelo DynamoOps apenas o que for necessário. A navegação exige operações de listagem e descrição, além das de leitura; escritas, streams e gerenciamento de schema adicionam, cada um, ações específicas.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"dynamodb:ListTables", "dynamodb:DescribeTable",
"dynamodb:Scan", "dynamodb:Query", "dynamodb:GetItem",
"dynamodb:PartiQLSelect"
],
"Resource": "*"
}]
}| Recurso | Ações adicionais |
|---|---|
| Edição de itens, importação, escritas via PartiQL | dynamodb:PutItem, UpdateItem, DeleteItem, BatchWriteItem, PartiQLInsert, PartiQLUpdate, PartiQLDelete |
| Visualizador de streams | dynamodb:DescribeStream, GetShardIterator, GetRecords (no ARN do stream) |
| Métricas do Dashboard | cloudwatch:GetMetricStatistics, cloudwatch:DescribeAlarmsForMetric |
| Criar, truncar e excluir tabelas | dynamodb:CreateTable, DeleteTable (o truncate usa Scan + BatchWriteItem) |
| Gerenciador de índices | dynamodb:UpdateTable |
| Assume Role | sts:AssumeRole na role de destino |