Identidade, Segurança & Computação
Sumário
Usuário Root (Raiz)
Quando criamos uma conta na AWS pela primeira vez, ele se torna o usuário raiz da conta, tendo acesso á todos os recursos e serviços da conta AWS, qualquer um que tenha acesso a essa conta, possui todos as permissões sobre o ambiente AWS.
É recomendado que não se utilize o user root
para tarefas administrativas ou diárias, em vez disso, crie outro usuário IAM para administrar cada operação e atribua para ele as políticas necessárias
Com grandes poderes, vem grandes responsabilidades
É necessário adicionar vários níveis de segurança para bloquear o acesso ao usuário root e proteger a conta AWS.
MFA - Multi-factor Authentication
É extremamente recomendado habilitar o MFA (autenticação com multi-fatores) para a conta root
, podendo ser um dispositivo físico, virtual ou U2F (hardware que conecta a porta USB do computador), para adicionar uma camada adicional de segurança de login ao Console de Gerenciamento da AWS dando uma maior proteção e segurança da conta, tanto root
quanto a de usuários IAM
Identidade - AWS Identity and Access Management
Usa-se o serviço de IAM (Identity and Access Management) do AWS, que é um serviço global, para gerenciar quem (autenticação) têm acesso a o que (autorização)
User Groups & Roles
- Usuários (Users): representa uma pessoa ou um serviço que interage com a AWS, tendo credenciais permanentes.
- Não compartilhe o user
root
- Use o
least privilege
(privilégio mínimo)
- Grupos (Groups): Coleção de usuários que permite os usuários herdarem as permissões atribuídas ao grupo.
- Não podem ser aninhados (estar dentro do outro).
- Funções (Roles): Não são permissões, é uma método de autenticação temporária, geralmente atribuído para serviços e recursos. Sendo assumidas programaticamente, elas expiram e são alternadas, rotacionando automaticamente
- Toda comunicação na AWS é feita via uma API
- Para estabelecer essa comunicação é necessário uma função
Autenticação e Autorização
Primeiro acontece a autenticação e depois a autorização
As Políticas e Permissões (autorização) são definidos através de um documento JSON
, que define as permissões de acesso podendo permitir ou negar as ações (chamadas de API) de um recurso. Você cria as polices e atribui elas a um usuário, recurso ou grupo de usuário.
A política abaixo permite que seja possível a listagem de um único bucket do S3 (Simple Storage Service) chamado example_bucket
{
"Version": "2012-10-17", // Define a versão da linguagem da política,
// Ela especifica as regras de sintaxe de linguagem necessárias para a AWS processar uma política
"Statement": {
"Effect": "Allow", // Efeito: Allow ou Deny
// Action e Resource podem utilizar do carácter curinga (*) que simboliza (all/todos) os recursos ou permissões
"Action": "s3:ListBucket", // Ação
"Resource": "arn:aws:s3:::example_bucket" // Objetos que serão afetados pela política
}
}
Outro exemplo, a política abaixo define que o usuário do IAM altere sua própria senha e obtenha informações sobre seu próprio usuário
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1689277490068",
"Action": [
"iam:ChangePassword",
"iam:GetUser"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::123456789012:user/${aws:username}"
}
]
}
Regras gerais
- Usuários possuem credenciais permanentes
- Funções possuem credenciais temporárias
- Usuários root Não devem ser compartilhados
- Use o
least privilege principle
nos usuários
- Documentos JSON definem as permissões de acesso
- Grupos contém outros usuários, mas Não podem conter outros grupos
- Há a Política de uso aceitável da AWS ⤴ que define as ações proibidas dentro da AWS
Acesso programático
Para obter acesso programático
a uma conta da AWS é necessário uma ID de chave de acesso e uma chave de acesso secreta que pode ser atribuída a um usuário
Segurança (AWS WAF e AWS Shield)
AWS WAF
O AWS WAF (Web Application Firewall) é um firewall de aplicativos que permite especificar qual tráfego tem o acesso permito ou bloqueado, mediante a definição de regras personalizadas.
- Filtra o tráfego com regras de
Web Access Control List
WEB ACL, sobre a camada 7 da aplicação (http)
- Bloqueia SQL injection (SQLi) e cross-site scripting (XSS)
- Geo-match (bloqueio de países), size constraints (limitar o tamanho das requisições) e rate based-rules (limitar quantidade de requisições por segundo)
AWS Shield
É usado pra mitigar (tratar) ataques DDos
O AWS Shield (Standard e Advanced) fornece proteção contra ataques DDoS (negação de serviço distribuído - Distributed Denial of Service) e nas camadas de transporte (camada 3 e 4) e na camada da aplicação (camada 7).
Um ataque DDos foca em vários sistemas sobrecarregar um alvo com tráfego.
AWS Shield Standard
- Gratuito
- Proteção SYN/UDP Floods, Reflection Attacks
- Proteção de ataques na camada 3 e 4
AWS Shield Advanced
- Pago e oferece Suporte 24x7
- Proteção extra em vários serviços como: EC2, Elastic Load Balancing, Amazon CloudFront, AWS Global Accelerator e Route 53
Computação na AWS
É mais fácil e rápido de se gerenciar poder computacional e sendo um modelo na nuvem de infraestrutura como serviço.
Um servidor
é o componente essencial para hospedar uma aplicação, geralmente lidando com solicitações HTTP através do modelo client-server. Os servidores hospedam a aplicação fornecendo capacidade de CPU, memória e rede para trabalhar com as solicitações. As opções mais comuns para servidores de HTTP (para Linux) é: Apache, Nginx e Apache Tomcat
Alguns dos serviços de Computação que a AWS oferece é: Elastic Beanstalk, AWS Lambda, AWS Fargate e o mais comum sendo as Máquinas Virtuais do EC2(EC2)
Elastic Compute Cloud - EC2
O Amazon Elastic Compute Cloud (EC2) é um serviço web que oferece capacidade computacional, sendo uma instância redimensionável (elástica) na AWS.
- É um Infraestrutura como Serviço (IaaS)
- Você escolhe e modela um Amazon Machine Image (AMI) do tipo Windows, MacOS, Ubuntu, Amazon Linux etc
- Cobrança por hora ou segundo (mínimo de 60 segundos)
- É composto de outros serviços para ter o seu funcionamento melhorado
- Você aluga máquinas virtuais - o próprio EC2
- Para armazenar dados em volumes virtuais - com o
EBS - Elastic Block Store
- Distribuir cargas de trabalho - com o
ELB - Elastic Load Balancing
- Pode escalar o serviço de acordo com a demanda - utilizando
ASG - Auto Scaling Group
Você pode usar o EC2 com o Elastic Block Storage (EBS) para ter maior controle sobre o armazenamento da VM, que se por acaso a instância do EC2 for interrompida, o armazenamento não será perdido (bloco de volume /root
), servindo como um HD externo
Tipos de Instâncias do EC2
Quando você executa uma instância EC2, a AWS aloca uma VM (que é executada em um hypervisor), e a AMI é copiada para o volume root da VM, contendo a imagem usada para iniciar o volume. Tendo no final o servidor, que você pode instalar pacotes ou softwares adicionais.
Tipos de instâncias
- T para Turbo (Burstable)
- M para a maioria dos casos (propósito geral) = 1:4 vCPU para RAM
- C para Compute (com a melhor CPU) = 1:2 vCPU para RAM
- R para Random-Access Memory = 1:8 vCPU para RAM
- X para Extra-Large Memory (~4TB DRAM)
- H para HDD (16TB Local)
- D para Dense Storage (48TB Local)
- I para I/O (NVMe Local)
- HS para High Storage
- G para GPU
- P para Performance (High-end GPU)
- F para FPGA
- A para ARM
- Z para High Frequency
- MAC para Mac Mini
Capacidades Adicionais (additional capabilities)
- a para AMD CPUs
- b sendo Otimizado para Block Storage
- d para Directly-Attached Instance Storage (NVMe)
- e para Extra Capacity (Storage or RAM)
- g para Processadores Graviton2 (AWS)
- i para Processadores Intel (atualmente Ice Lake)
- n sendo Otimizado para Networking (redes)
- z para High Frequency
Tamanho das Instâncias (instance sizes)
- nano, micro, small, medium = 2 vCPUs com 0.5, 1, 2, 4GB RAM (T series only)
- large = 2 vCPUs
- xlarge = 4 vCPUs
- 2xlarge = 8, 16xlarge = 64 etc.
Nomenclatura das Instâncias
Bibliografia
Meaning of the number in AWS instance type name - Stack Overflow