• 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 /
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
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
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
APIs REST - Questões Fundamentais
• Modelagem
• Cultura de automação
• Estratégias de deployment
• Monitoramento
• Segurança
Segurança da Informação e APIs REST
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
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
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
O que há de errado aqui (Dapper)?
O que há de errado aqui (Dapper)?
Recomendável ao se utilizar Dapper
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
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)
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)
JWT (JSON Web Tokens) - Utilização
Um exemplo de token
JWT + ASP.NET Core – Integrações Possíveis
• Soluções customizadas para controle de
usuários
• ASP.NET Core Identity
• Active Directory (AD)
• IdentityServer
Azure App Service
• Segurança a nível corporativo
• Alta disponibilidade
• Escalabilidade (automática ou não)
• Integração contínua
Azure App Service - Suporte
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
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
Azure Web App for Containers - Suporte
Azure Key Vault
• Armazenamento de configurações
sensíveis
• Acesso a dados armazenados
mediante concessão de acesso
• Integração com Azure Active
Directory
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
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
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
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)
medium.com/@renato.groffe/

Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil

  • 2.
    • Microsoft MostValuable 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
  • 7.
  • 8.
    Desenvolvedores e aquestã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 tornapossí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
  • 11.
    O que háde errado aqui (Dapper)?
  • 12.
    O que háde errado aqui (Dapper)?
  • 13.
    Recomendável ao seutilizar Dapper
  • 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 acessoindevido 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 WebTokens) • Uso de tokens criptografados • Bearer Authentication • Emprega HMAC ou RSA • Tecnologia multiplataforma • Tokens formados por 3 partes (Header, Payload e Signature)
  • 17.
    JWT (JSON WebTokens) - Utilização
  • 18.
  • 19.
    JWT + ASP.NETCore – 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
  • 21.
  • 22.
    Azure Web Appfor Containers • Hospedagem de aplicações • Anteriormente conhecido como Azure Web App on Linux • Uso de Containers Docker • Suporte a Continuous Integration
  • 23.
    Azure Web Appfor Containers • Escalabilidade (vertical e horizontal) • Suporte a HTTPS • Criação de recursos a partir de imagens, Docker Compose ou Pods do Kubernetes
  • 24.
    Azure Web Appfor Containers - Suporte
  • 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
  • 27.
    Utilizando o AzureWeb 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 AzureKey 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.NETCore 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.NETCore 2.1 • Redirecionamento automático de HTTP para HTTPS • Habilitado por default o uso do protocolo HSTS (HTTP Strict Transport Security)
  • 32.