Тема: Налаштування безпеки та контролю доступу у хмарному середовищі.
Налаштування ролей та політик IAM; реалізація принципу мінімальних привілеїв; налаштування шифрування даних; конфігурація аудиту доступу; сканування вразливостей хмарних ресурсів.
Мета: Набути практичні навички налаштування безпечного хмарного середовища: управління ідентичностями та доступом, шифрування даних та аудиту всіх дій у хмарному акаунті.
Технологічний стек:
Створення IAM-груп:
# Група розробників — читання + деплой
aws iam create-group --group-name Developers
# Група адмінів БД — доступ тільки до RDS
aws iam create-group --group-name DBAdmins
# Група аудиторів — лише перегляд
aws iam create-group --group-name Auditors
Прикріплення AWS-managed policies:
aws iam attach-group-policy \
--group-name Auditors \
--policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
aws iam attach-group-policy \
--group-name Developers \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
Створіть файл dev-policy.json — лише необхідні дозволи для розробника:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadS3LabBucket",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::lab14-dev-bucket",
"arn:aws:s3:::lab14-dev-bucket/*"
]
},
{
"Sid": "AllowWriteS3LabBucket",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:DeleteObject"],
"Resource": "arn:aws:s3:::lab14-dev-bucket/*"
},
{
"Sid": "AllowEC2ReadOnly",
"Effect": "Allow",
"Action": ["ec2:Describe*"],
"Resource": "*"
},
{
"Sid": "DenyProductionBucket",
"Effect": "Deny",
"Action": "*",
"Resource": [
"arn:aws:s3:::production-bucket",
"arn:aws:s3:::production-bucket/*"
]
}
]
}
# Створення кастомної політики
aws iam create-policy \
--policy-name DeveloperMinimalPolicy \
--policy-document file://dev-policy.json \
--description "Minimal privileges for developers"
# Прикріплення до групи
aws iam attach-group-policy \
--group-name Developers \
--policy-arn arn:aws:iam::<ACCOUNT_ID>:policy/DeveloperMinimalPolicy
Принцип PoLP: якщо сервіс не використовується — прибираємо доступ.
Через консоль:
lab14-audit-traillab14-cloudtrail-logs-<account-id>lab14-trail-key/cloudtrail/lab14Перевірка через CLI:
# Список trails
aws cloudtrail describe-trails
# Перегляд останніх 10 подій (без створення Trail)
aws cloudtrail lookup-events \
--max-results 10 \
--query 'Events[*].[EventTime, EventName, Username]' \
--output table
Виконайте кілька операцій від імені IAM-користувача:
# Від імені IAM-user (налаштуйте профіль)
aws configure --profile dev-user
# ... введіть Access Key dev-user
# Виконайте дії
aws s3 ls --profile dev-user
aws ec2 describe-instances --profile dev-user --region eu-central-1
aws iam list-users --profile dev-user # Очікуємо AccessDenied
Потім перегляньте CloudTrail:
# Пошук подій конкретного користувача
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=Username,AttributeValue=dev-user \
--max-results 20 \
--query 'Events[*].{Time:EventTime, Event:EventName, Source:EventSource}' \
--output table
У CloudWatch Log Insights (/cloudtrail/lab14):
fields eventTime, eventName, userIdentity.userName, errorCode
| filter userIdentity.userName = "dev-user"
| sort eventTime desc
| limit 20
# Створення S3-кошика
aws s3 mb s3://lab14-encrypted-bucket --region eu-central-1
# Отримання ARN KMS-ключа (створеного для CloudTrail або нового)
aws kms list-keys --query 'Keys[0].KeyArn'
# Увімкнення SSE-KMS для кошика
aws s3api put-bucket-encryption \
--bucket lab14-encrypted-bucket \
--server-side-encryption-configuration '{
"Rules": [{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "aws:kms",
"KMSMasterKeyID": "arn:aws:kms:eu-central-1:<ACCOUNT_ID>:key/<KEY_ID>"
},
"BucketKeyEnabled": true
}]
}'
# Перевірка
aws s3api get-bucket-encryption --bucket lab14-encrypted-bucket
# Завантаження файлу — автоматично зашифрується
echo "Secret data" > secret.txt
aws s3 cp secret.txt s3://lab14-encrypted-bucket/
# Перевірка метаданих об'єкта (ServerSideEncryption)
aws s3api head-object --bucket lab14-encrypted-bucket --key secret.txt
dev-policy.json з поясненням кожного Statementaws cloudtrail lookup-events з 5+ подіями вашого dev-userhead-object)lab14.md