CLOUD & INFRASTRUCTURE

AWS Cloud Security

Komplexní zabezpečení AWS cloud infrastruktury - od IAM a access managementu přes network security až po audit a compliance.

Co je AWS Cloud Security?

AWS Cloud Security zahrnuje všechny praktiky, nástroje a procesy pro zabezpečení vaší cloudové infrastruktury na Amazon Web Services. Klíčové oblasti jsou access management (IAM), network security (VPC, security groups), data protection a monitoring. Správně nakonfigurovaná AWS infrastruktura je základem pro bezpečný provoz vašich aplikací v cloudu.

Proč je AWS Security kritická?

Když vytváříme servery pro deployment aplikací, zavádíme celou řadu bezpečnostních vrstev, které musíme chránit. Stejně jako zabezpečujeme aplikační kód, kód třetích stran a container image, musíme zabezpečit i prostředí pod kontejnerem - server a celou infrastrukturní síť.

  • Access Management: Kdo má přístup k jakým službám, jací uživatelé a jaká oprávnění na AWS
  • Network Security: Konfigurace VPC, security groups, NACLs a firewall pravidel
  • Data Protection: Šifrování dat at rest a in transit, key management
  • Audit & Compliance: Sledování aktivit, logging a dodržování regulací
  • Credential Management: Správa přístupových klíčů, rotace a bezpečné ukládání

Bezpečnostní rizika při špatné konfiguraci

  • Odcizené credentials: Hardcoded přístupové klíče v pipeline nebo aplikačním kódu
  • Příliš vysoká oprávnění: Uživatelé s admin přístupem, který nepotřebují
  • Neodebraná oprávnění: Bývalí zaměstnanci s aktivními účty
  • Otevřené porty: Veřejně přístupné SSH nebo databázové porty
  • Chybějící MFA: Účty bez vícefaktorové autentizace

AWS IAM - Identity and Access Management

AWS IAM je služba pro správu přístupu k vašemu AWS účtu. Umožňuje vytváření uživatelů, skupin a rolí s přesnými oprávněními.

Root User vs Admin User

Root user je vytvořen automaticky při založení AWS účtu a má oprávnění dělat úplně cokoliv. Toto by nemělo být používáno pro běžné operace - pouze pro speciální administrativní úkoly jako změna billing informací nebo uzavření účtu.

Best Practice: Vytvoření Admin uživatele

Ihned po vytvoření AWS účtu vytvořte admin uživatele a přestaňte používat root user. Admin user bude spravovat zbytek účtu a vytvářet další uživatele.

Users, Groups & Policies

# Příklad IAM Policy - povolení start/stop EC2 instancí { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*", "Condition": { "StringEquals": { "ec2:Owner": "specific-user" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }

Policies jsou velmi granulární - můžete rozhodnout o read-only, write, delete přístupu ke každému konkrétnímu zdroji. Můžete také omezit přístup dalšími podmínkami, například pouze v určitém regionu.

IAM Roles pro CI/CD Pipeline

Pro automatizované procesy jako CI/CD pipeline nepoužívejte statické access keys. Místo toho použijte IAM Roles s krátkodobými tokeny.

# GitLab CI/CD - použití OIDC namísto statických klíčů variables: AWS_REGION: eu-central-1 assume_role: id_tokens: GITLAB_OIDC_TOKEN: aud: https://gitlab.com script: - > export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $(aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789:role/GitLabCIRole --role-session-name "GitLabRunner-${CI_JOB_ID}" --web-identity-token "${GITLAB_OIDC_TOKEN}" --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text))

Vrstvy AWS Security

Defense in Depth přístup

1. Account Security

Zabezpečení AWS účtu

  • MFA pro všechny uživatele (povinně pro root a admin)
  • Silná password policy
  • Credential reports pro audit
  • AWS Organizations pro multi-account setup

2. Identity & Access Management

Správa identit a přístupu

  • Least privilege access - pouze potřebná oprávnění
  • IAM Roles místo dlouhodobých credentials
  • Service-linked roles pro AWS služby
  • Resource-based policies

3. Network Security

Zabezpečení sítě

  • VPC isolation - privátní a veřejné subnety
  • Security Groups (stateful firewall)
  • Network ACLs (stateless firewall)
  • VPC Flow Logs pro monitoring

4. Data Protection

Ochrana dat

  • Encryption at rest (KMS, S3 encryption)
  • Encryption in transit (TLS/SSL)
  • AWS Secrets Manager pro credentials
  • S3 bucket policies

5. Monitoring & Audit

Sledování a audit aktivit

  • CloudTrail pro API logging
  • CloudWatch pro metriky a alarmy
  • AWS Config pro compliance
  • GuardDuty pro threat detection

AWS Security Services

Identity

AWS IAM

Centrální služba pro správu uživatelů, skupin, rolí a politik.

  • Users, Groups, Roles
  • Policies a Permissions
  • Identity Federation
  • Service Control Policies
Secrets

AWS Secrets Manager

Bezpečné ukládání a rotace credentials a API klíčů.

  • Automatická rotace secrets
  • Integrace s RDS
  • Audit přístup
  • Cross-account sharing
Monitoring

AWS CloudTrail

Logging všech API volání v AWS účtu.

  • Management events
  • Data events
  • Multi-region trails
  • Log file integrity
Threat Detection

AWS GuardDuty

Inteligentní detekce hrozeb pomocí ML.

  • Anomaly detection
  • Threat intelligence
  • Automatic findings
  • Integration s Security Hub

Praktický příklad: Secure EC2 Deployment

# Terraform - Secure EC2 Instance s IAM Role # IAM Role pro EC2 instance resource "aws_iam_role" "ec2_role" { name = "ec2-app-role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "ec2.amazonaws.com" } } ] }) } # Policy - pouze potřebná oprávnění resource "aws_iam_role_policy" "ecr_policy" { name = "ecr-pull-policy" role = aws_iam_role.ec2_role.id policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Action = [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] Resource = "arn:aws:ecr:*:*:repository/myapp" }, { Effect = "Allow" Action = "ecr:GetAuthorizationToken" Resource = "*" } ] }) } # Instance Profile resource "aws_iam_instance_profile" "ec2_profile" { name = "ec2-app-profile" role = aws_iam_role.ec2_role.name } # Security Group - minimální otevřené porty resource "aws_security_group" "app_sg" { name = "app-security-group" description = "Security group for application" vpc_id = aws_vpc.main.id # HTTPS only ingress { from_port = 443 to_port = 443 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } # Outbound - pouze potřebné egress { from_port = 443 to_port = 443 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } # NO SSH from internet! # Použijte AWS Systems Manager Session Manager } # EC2 Instance resource "aws_instance" "app_server" { ami = data.aws_ami.amazon_linux.id instance_type = "t3.micro" iam_instance_profile = aws_iam_instance_profile.ec2_profile.name vpc_security_group_ids = [aws_security_group.app_sg.id] subnet_id = aws_subnet.private.id metadata_options { http_endpoint = "enabled" http_tokens = "required" # IMDSv2 required } root_block_device { encrypted = true } tags = { Name = "app-server" } }

AWS Security Best Practices - Shrnutí

Account & Identity

  • Nikdy nepoužívejte root user pro běžné operace
  • MFA pro všechny uživatele
  • Silná password policy
  • Pravidelné revize oprávnění
  • Odstranění nepoužívaných účtů

Access Management

  • Least privilege - pouze potřebná oprávnění
  • Používejte Roles místo dlouhodobých credentials
  • OIDC/Federation pro CI/CD pipelines
  • Resource-based policies kde je to možné
  • Pravidelná rotace access keys

Network & Data

  • Private subnety pro aplikační servery
  • Security Groups s minimálními pravidly
  • Žádný SSH z internetu - použijte Session Manager
  • Encryption at rest i in transit
  • VPC Flow Logs pro audit

Co NEDĚLAT

  • Hardcoded credentials v kódu nebo pipeline
  • Sdílení access keys mezi uživateli
  • Otevřený port 22 (SSH) z internetu
  • Wildcard (*) permissions v production
  • Vypnutí CloudTrail logování
  • Public S3 buckety bez důvodu