Systems Manager: Uma Visão Prática para Developers
O AWS Systems Manager é um serviço que consolida ferramentas operacionais essenciais para gerenciar sua infraestrutura em escala. Como desenvolvedor, você precisará entender três componentes fundamentais: Parameter Store para armazenar configurações sensíveis, Session Manager para acesso seguro a instâncias, e Patch Manager para automatizar atualizações. Este artigo fornece conhecimento prático que você aplicará imediatamente em produção.
Parameter Store: Gerenciamento Seguro de Configurações
O Parameter Store permite armazenar strings, listas e valores secretos de forma centralizada, sem exposição no código. É a alternativa nativa da AWS ao Vault ou serviços externos, totalmente integrada com IAM e CloudWatch.
Quando usar e suas limitações
Use Parameter Store para variáveis de ambiente, chaves de API de terceiros, connection strings de banco de dados, e qualquer configuração que mude entre ambientes. O serviço oferece até 10.000 parâmetros na camada Standard gratuitamente. Para volumes maiores ou rotação automática de secrets, migre para AWS Secrets Manager.
Exemplo prático com Python
import boto3
import json
ssm_client = boto3.client('ssm', region_name='us-east-1')
# Armazenar um parâmetro
ssm_client.put_parameter(
Name='/producao/database/password',
Value='minha_senha_super_secreta',
Type='SecureString', # Criptografa com KMS
Description='Senha do RDS produção'
)
# Recuperar um parâmetro
response = ssm_client.get_parameter(
Name='/producao/database/password',
WithDecryption=True
)
password = response['Parameter']['Value']
# Buscar múltiplos parâmetros por path
response = ssm_client.get_parameters_by_path(
Path='/producao/',
Recursive=True,
WithDecryption=True
)
for param in response['Parameters']:
print(f"{param['Name']} = {param['Value']}")
Estruture os nomes com /ambiente/servico/chave para organização visual e facilitar buscas. O tipo SecureString usa KMS para criptografia em repouso—sempre use para dados sensíveis. Configure políticas IAM para restringir acesso: um desenvolvedor não precisa acessar senhas de produção.
Session Manager: Acesso Remoto Seguro
Session Manager substitui SSH/RDP tradicional, oferecendo acesso sem gerenciar chaves ou portas abertas. Todas as ações são auditadas em CloudTrail e as sessões rodam através do Systems Manager Agent, que já vem instalado em AMIs recentes.
Configuração e uso básico
import boto3
ssm = boto3.client('ssm', region_name='us-east-1')
# Iniciar uma sessão (local, via AWS CLI)
# aws ssm start-session --target i-1234567890abcdef0
# Ou programaticamente, listar instâncias gerenciadas
response = ssm.describe_instance_information()
for instance in response['InstanceInformationList']:
print(f"ID: {instance['InstanceId']} | Nome: {instance['ComputerName']}")
No seu terminal local, use aws ssm start-session --target <instance-id> para acessar qualquer instância EC2 (Linux ou Windows). Nenhuma chave SSH necessária. O Systems Manager Agent cuida da autenticação usando credenciais IAM. Verifique que a instância possui role com política AmazonSSMManagedInstanceCore anexada.
Auditação e segurança
Cada comando executado em uma sessão é registrado em CloudTrail e CloudWatch Logs. Você pode revisar quem acessou qual servidor e em que horário. Combine com EventBridge para alertar sobre acessos suspeitos. Session Manager desabilita automaticamente acesso SSH/RDP quando bem configurado, eliminando a superfície de ataque.
Patch Manager: Automação de Atualizações
Patch Manager automatiza a aplicação de patches no seu parque de máquinas, respeitando agendamentos e grupos de servidores. Reduz drasticamente o tempo entre vulnerabilidades anunciadas e máquinas corrigidas.
Configuração de grupos de patch
import boto3
ssm = boto3.client('ssm', region_name='us-east-1')
# Criar um grupo de patch
ssm.create_patch_group(
PatchGroupName='webservers-producao',
BaselineId='pb-1234567890abcdef0' # ID da baseline padrão
)
# Criar agendamento de patch
ssm.create_maintenance_window(
Name='patches-domingo-madrugada',
Description='Aplica patches em domingos às 2h UTC',
Schedule='cron(0 2 ? * SUN *)',
Duration=2, # Janela de 2 horas
Cutoff=1,
AllowUnassociatedTargets=False
)
# Registrar o Patch Manager nesta janela
ssm.register_task_with_maintenance_window(
WindowId='mw-1234567890abcdef0',
TaskType='RUN_COMMAND',
TaskArn='AWS-RunPatchBaseline',
ServiceRoleArn='arn:aws:iam::123456789012:role/PatchManagerRole',
Targets=[{'Key': 'tag:patch-group', 'Values': ['webservers-producao']}],
TaskInvocationParameters={
'RunCommand': {
'Parameters': {
'Operation': ['Install']
}
}
}
)
Configure baselines para sistemas operacionais específicos (Amazon Linux 2, Ubuntu, Windows Server). Classifique patches por severidade e tipo: críticos devem ser aplicados imediatamente em produção, enquanto patches opcionais podem aguardar a próxima janela de manutenção. Use tags (patch-group) nas instâncias para agrupar servidores que recebem patches em sincronia.
Boas práticas em produção
Sempre teste patches em um ambiente de staging antes de rollout em produção. Configure reboot automático apenas para patches críticos; patches secundários devem seguir um agendamento regular. Monitore o histórico de patches em CloudWatch para detectar falhas. Se um patch quebrar sua aplicação, o Systems Manager permite rollback—documente o procedimento.
Conclusão
Estes três serviços formam a base operacional moderna na AWS. Parameter Store centraliza sua configuração sem expor segredos no git. Session Manager elimina a fricção de gerenciar chaves SSH enquanto mantém auditoria completa. Patch Manager reduz risco de segurança automatizando uma tarefa que, de outra forma, seria negligenciada. Domine estes três e você terá domínio sobre 80% dos desafios operacionais que desenvolvedores enfrentam.