Apresentação sobre o uso de recursos do Microsoft Azure (Key Vault, App Service, Web App for Containers) e ASP.NET Core 2.1 (JWT, suporte a HTTPS, Identity Core) na implementação de APIs REST seguras. Palestra realizada em meetup promovido pelo grupo Azure Brasil em 09/10/2018 na cidade de São Paulo-SP.
.NET 5, C# 9.0 e outras novidades | TDC São Paulo Online 2020
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
1.
2. • Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET, do .NET SP
e do Azure Brasil
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
3. Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
4. Agenda
• APIs REST - Contexto Atual
• Segurança da Informação e APIs REST
• JSON Web Tokens (JWT): uma visão geral
• Azure App Service
• Azure Web App for Containers
• Azure Key Vault
5. APIs REST - Contexto Atual
• Escalabilidade, disponibilidade e performance
• REST como principal estilo arquitetural
• Microserviços ganhando força
• Economia das APIs
• A onipresença da nuvem
6. APIs REST - Questões Fundamentais
• Modelagem
• Cultura de automação
• Estratégias de deployment
• Monitoramento
• Segurança
8. Desenvolvedores e a questão da Segurança
• Nunca vai acontecer comigo
• A aplicação é pequena, não há muitos
usuários
• O pessoal de TI é confiável
• Nossos usuários são leigos demais
9. E se essas “verdades” falharem?
• Injeção de SQL (SQL Injection)
• Acesso em produção com permissões
especiais
• Acesso indevido a informações confidenciais
10. O que torna possível a injeção de SQL?
• Concatenação de comandos e parâmetros
em strings
• Descuidos com a manipulação de query
strings em aplicações Web
14. Diminuindo o impacto – Injeção de SQL
• Evitando a concatenação de parâmetros em
comandos SQL
• Criar um usuário para a aplicação no
servidor de banco de dados, retirando
direitos de de execução de comandos do
tipo DDL (CREATE, DROP, ALTER)
• Utilizando soluções ORMs como Entity
Framework e NHibernate
15. Evitando o acesso indevido a informações
• Criptografia de arquivos de configuração
• Armazenar segredos em alguma solução
específica (Azure Key Vault, por exemplo)
• JWT (JSON Web Token) em APIs REST
• HTTPS em aplicações Web sempre (sites,
serviços, APIs)
16. JWT (JSON Web Tokens)
• Uso de tokens criptografados
• Bearer Authentication
• Emprega HMAC ou RSA
• Tecnologia multiplataforma
• Tokens formados por 3 partes (Header, Payload
e Signature)
19. JWT + ASP.NET Core – Integrações Possíveis
• Soluções customizadas para controle de
usuários
• ASP.NET Core Identity
• Active Directory (AD)
• IdentityServer
20. Azure App Service
• Segurança a nível corporativo
• Alta disponibilidade
• Escalabilidade (automática ou não)
• Integração contínua
22. Azure Web App for Containers
• Hospedagem de aplicações
• Anteriormente conhecido como Azure
Web App on Linux
• Uso de Containers Docker
• Suporte a Continuous Integration
23. Azure Web App for Containers
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
• Criação de recursos a partir de
imagens, Docker Compose ou Pods do
Kubernetes
25. Azure Key Vault
• Armazenamento de configurações
sensíveis
• Acesso a dados armazenados
mediante concessão de acesso
• Integração com Azure Active
Directory
26.
27. Utilizando o Azure Web App for Containers
• API REST criada com o ASP.NET Core
• Cadastro de produtos com acesso
empregando JWT
• Imagem disponível no Docker Hub:
renatogroffe/apiprodutos
28. Utilizando o Azure Key Vault e o Azure SLQ
• API REST criada com o ASP.NET Core 2.1
• Cadastro de produtos com acesso
empregando JWT
• Armazenamento de configurações
sensíveis no Azure Key Vault
• Base de dados no Azure SQL
29. HTTPS no ASP.NET Core 2.1
• Temos agora o uso de HTTPS
ativado por default
• Certificado de
desenvolvimento criado na
instalação do .NET Core
30. HTTPS no ASP.NET Core 2.1
• Redirecionamento automático
de HTTP para HTTPS
• Habilitado por default o uso do
protocolo HSTS (HTTP Strict
Transport Security)