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