Olá a todos,
Estamos pensando em melhorar como o Discourse lida com a autenticação AWS [1], e gostaríamos de entender como vocês estão configurados atualmente antes de fazer qualquer alteração.
A Situação Atual
Atualmente, existem algumas maneiras de configurar a autenticação AWS no Discourse:
Opção 1: Credenciais Explícitas (via configurações do site)
- Defina
s3_access_key_ides3_secret_access_keynas configurações do seu site - A autenticação é por site
Opção 2: Credenciais Explícitas (via variáveis de ambiente)
- Defina as variáveis de ambiente:
DISCOURSE_S3_ACCESS_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY - A autenticação é a mesma para todos os sites em um cluster multissite
Opção 3: Configuração “Usar Perfil IAM”
- Ative a configuração do site
s3_use_iam_profileou defina a variável de ambienteDISCOURSE_S3_USE_IAM_PROFILE=true - Isso informa ao Discourse para deixar o SDK da AWS encontrar as credenciais automaticamente
- Originalmente projetado para instâncias EC2 e para obter credenciais via IMDS, mas funciona em outros ambientes
Por que queremos mudar
1. Nome da Configuração Confuso
A configuração s3_use_iam_profile tem um nome enganoso. Sugere que funciona apenas com perfis de instância EC2, mas na verdade ativa qualquer fonte de credenciais do SDK da AWS:
- Perfis de instância EC2
- Funções de tarefa ECS
- Variáveis de ambiente
- Arquivos de credenciais da AWS
- Assunção de função IAM
- E mais…
2. Segurança: Chaves Estáticas vs. Assunção de Função
Em nossa plataforma de hospedagem dedicada, atualmente usamos chaves de acesso que são rotacionadas regularmente. Nosso objetivo é mudar para a assunção de função para melhor isolamento, melhores oportunidades de controle de acesso e para apoiar um processo interno melhor.
Desvantagens da abordagem atual:
- As chaves de acesso não expiram (até serem rotacionadas)
- Têm escopos de permissão amplos
- Podem ser comprometidas se vazadas
- Requerem procedimentos manuais de rotação
Vantagens de usar assunção de função em vez disso:
- Credenciais persistentes podem ser restritas por endereço IP
- As operações são feitas usando credenciais temporárias que expiram automaticamente (geralmente em 1 hora)
- Acesso just-in-time, pois as credenciais só existem quando necessárias
- Raio de explosão reduzido, pois credenciais temporárias comprometidas expiram rapidamente
- Sem rotação de chaves - o processo de assunção de função lida com a atualização
- Melhores trilhas de auditoria - cada sessão é rastreada separadamente
O que estamos considerando
Estamos pensando em:
- Renomear a configuração para algo mais claro, como
aws_credentials_from_environment - Remover a configuração completamente e detectar automaticamente quando as credenciais devem vir do ambiente em vez das configurações do site
Precisamos da sua opinião!
Por favor, nos diga:
-
Como você se autentica com o S3?
- Chaves de acesso explícitas nas configurações do site
- Perfil de instância EC2 (com
s3_use_iam_profileativado) - Função de tarefa ECS (com
s3_use_iam_profileativado) - Variáveis de ambiente (com
s3_use_iam_profileativado) - … algo mais?
-
Se você usa
s3_use_iam_profile:- Em qual ambiente você está executando? (EC2, ECS, Docker, bare metal, etc.)
- O nome/descrição atual causou alguma confusão?
- Um nome diferente seria mais claro?
-
Alguma preocupação sobre alterações nesta configuração?
- Preocupado em quebrar sua configuração atual?
- Precisa de tempo para testar as alterações?
- Outras considerações?
Por que isso importa
Uma melhor autenticação S3 significa:
- Mais seguro - sem chaves estáticas para gerenciar
- Configuração mais fácil - especialmente para implantações na nuvem
- Menos confusão - configurações e documentação mais claras
- Melhor suporte para padrões modernos de autenticação AWS
Seu feedback nos ajudará a fazer melhorias que funcionem para todos. Obrigado por dedicar seu tempo para compartilhar sua configuração!
aqui leia: qualquer provedor de armazenamento de objetos compatível com S3 que você esteja usando ↩︎