Cloud6 min čtení

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. Nepoužívejte ho pro běžné operace, pouze pro úkoly, které vyžadují root přihlášení: například změnu e-mailu nebo hesla root uživatele u samostatného účtu, uzavření účtu nebo obnovení oprávnění, když si jediný IAM administrátor omylem odebere přístup. Od června 2025 AWS vyžaduje MFA pro root uživatele u všech typů účtů, včetně member účtů v AWS Organizations. V Organizations můžete root credentials member účtů centrálně odstranit.

Best Practice: Administrátor v IAM Identity Center

Ihned po vytvoření AWS účtu nastavte administrativního uživatele v AWS IAM Identity Center a přestaňte používat root user. AWS doporučuje, aby lidé přistupovali přes federaci s dočasnými credentials, nikoli přes IAM uživatele s dlouhodobými klíči.

Users, Groups & Policies

# Příklad IAM Policy - start/stop EC2 instancí s tagem Owner = jméno uživatele { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "${aws:username}" } } }, { "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. Příklad výše vychází z oficiální ukázky AWS a používá podmínku aws:ResourceTag/Owner.

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, například přes OIDC a AssumeRoleWithWebIdentity v GitLab CI/CD.

# 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: - > aws_sts_output=$(aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789012:role/GitLabCIRole --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}" --web-identity-token "${GITLAB_OIDC_TOKEN}" --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text) - export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $aws_sts_output) - aws sts get-caller-identity

Vrstvy AWS Security

Defense in Depth přístup

1. Account Security

Zabezpečení AWS účtu

  • MFA pro všechny uživatele (u root uživatele ho AWS vyžaduje)
  • 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 (AWS Organizations)
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

Amazon GuardDuty

Detekce hrozeb z CloudTrail, VPC Flow Logs a DNS logů pomocí threat intelligence a ML modelů.

  • Anomaly detection
  • Threat intelligence
  • Automatic findings
  • Integrace s AWS Security Hub a Security Hub CSPM

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 = "*" } ] }) } # Session Manager místo SSH - instance potřebuje oprávnění SSM resource "aws_iam_role_policy_attachment" "ssm_core" { role = aws_iam_role.ec2_role.name policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" } # 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é
  • Dlouhodobé access keys jen tam, kde role nejde použít; aktualizujte je při potřebě podle last used informací

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 (nové buckety ve výchozím stavu veřejný přístup nepovolují, nevypínejte Block Public Access)

Zdroje

  1. AWS IAM User Guide: Security best practices in IAM (říjen 2026)
  2. AWS IAM User Guide: AWS account root user (říjen 2026)
  3. AWS What's New: AWS IAM now enforces MFA for root users across all account types (červen 2025)
  4. AWS IAM User Guide: Amazon EC2: Allows starting or stopping EC2 instances a user has tagged (říjen 2026)
  5. GitLab Docs: Configure OpenID Connect in AWS to retrieve temporary credentials (říjen 2026)
  6. AWS Systems Manager User Guide: Configure instance permissions required for Systems Manager (říjen 2026)
  7. Amazon GuardDuty User Guide: What is Amazon GuardDuty? (říjen 2026)
  8. AWS What's New: AWS Security Hub is now generally available with near real-time risk analytics (prosinec 2025)
  9. Amazon S3 User Guide: Blocking public access to your Amazon S3 storage (říjen 2026)

Chcete to mít vyřešené bez vlastního DevOps týmu?

Náš čtyřčlenný DevOps tým se o vaši platformu stará za pevnou měsíční cenu.

Nebo napište na info@devsecops.cz. Údaje zpracujeme podle zásad ochrany soukromí.