Проектування та налаштування Yandex Cloud: Terraform, IAM, безпека

Хмарна інфраструктура без продуманої архітектури перетворюється на джерело простоїв та витоків даних. Ми проєктуємо та налаштовуємо Yandex Cloud під ключ: від мережевої топології та IAM-політик до Security Groups та автоматизації через Terraform. Наша команда бере на себе весь цикл — аудит, проєктування, впровадження та підтримку, щоб ви отримали надійне та безпечне рішення, готове до масштабування.
Часті запитання

Ви переїжджаєте на Yandex Cloud або запускаєте новий проект «з нуля». Без грамотного фундаменту — неправильна мережа, зайві відкриті порти або IAM з правами суперадміна — вже через місяць ви переробляєте все. Особливо гостро це відчувається при масштабуванні: якщо спочатку не закласти правильну мережеву топологію та розмежування доступу, то кожен новий сервіс вимагає перескладання всієї інфраструктури.

Типова ситуація: команда розробки нашвидкуруч розгорнула додаток в одному каталозі, дала всім роль editor, а за два тижні випадково видалила production-базу. Ми проектуємо хмарну інфраструктуру під ключ: від мережевої топології до моніторингу та compliance. Оцінимо ваш проект за 1 день. Наш досвід — понад 5 років на ринку та 50+ успішних проектів на Yandex Cloud, включаючи міграції банківських систем та e-commerce платформ, де кожна втрачена година коштувала мільйони. Гарантуємо zero-downtime при розгортанні. Правильно спроектована хмарна інфраструктура знижує операційні витрати на 30% і скорочує час виведення продукту на ринок на 40%. Наш підхід з Infrastructure as Code у 3 рази швидше за ручне налаштування і зменшує помилки на 70%. Замовте аудит вашої інфраструктури — це займе один день і нічого не коштує.

Типові проблеми в Yandex Cloud

Найчастіше стикаються з:

  • Неправильна організаційна структура — всі ресурси в одному каталозі, немає поділу за оточеннями. Це призводить до випадкових видалень та перехресного впливу.
  • Надлишкові Security Groups — відкриті порти 0.0.0.0/0, доступ до баз з інтернету. Це збільшує поверхню атаки.
  • IAM з надлишком прав — сервісні акаунти з role editor на весь каталог. При компрометації одного ключа під загрозою вся інфраструктура.

Ці помилки ми виправляємо на старті, щоб ви не переплачували за простій і не втрачали дані.

Як спроектувати організаційну структуру?

Yandex Cloud будується на трьох рівнях: Organization → Cloud → Folder. Folder — аналог Resource Group в Azure або Project в GCP. Ресурси живуть у Folder'ах, IAM призначається на рівні Organization, Cloud або Folder.

Типова структура для командного проекту:

Organization: my-company
└── Cloud: my-cloud
    ├── Folder: prod
    ├── Folder: staging
    ├── Folder: dev
    └── Folder: shared-services # моніторинг, registry, bastion

Різні Folder'и — різні білінгові метрики та права. Dev-команда отримує Editor на dev, read-only на prod. Це дозволяє уникнути випадкового видалення ресурсів у production.

Як спроектувати мережу в Yandex Cloud?

VPC в Yandex Cloud — глобальна (охоплює всі зони), підмережі — зональні. Для production використовуємо класичну схему: public підмережі під bastion-хост, private підмережі для додатків та баз даних.

resource "yandex_vpc_network" "main" {
  name = "main-network"
  folder_id = var.folder_id
}

resource "yandex_vpc_subnet" "private_a" {
  name = "private-a"
  zone = "ru-central1-a"
  network_id = yandex_vpc_network.main.id
  v4_cidr_blocks = ["10.10.10.0/24"]
  folder_id = var.folder_id
  route_table_id = yandex_vpc_route_table.nat.id
}

resource "yandex_vpc_gateway" "nat" {
  name = "nat-gateway"
  folder_id = var.folder_id
  shared_egress_gateway {}
}

resource "yandex_vpc_route_table" "nat" {
  name = "nat-route"
  network_id = yandex_vpc_network.main.id
  folder_id = var.folder_id
  static_route {
    destination_prefix = "0.0.0.0/0"
    gateway_id = yandex_vpc_gateway.nat.id
  }
}

Private підмережі не мають публічних IP. Вихідний трафік — через NAT-шлюз. Вхідний — тільки через Security Groups. Така схема запобігає прямому доступу до баз даних з інтернету та знижує поверхню атаки.

Security Groups: мінімум правил

Yandex Cloud Security Groups — stateful. Зворотній трафік дозволений автоматично. За замовчуванням всі вхідні заборонені. Наш досвід: достатньо 3-5 правил для 80% додатків.

resource "yandex_vpc_security_group" "app" {
  name = "app-sg"
  network_id = yandex_vpc_network.main.id
  folder_id = var.folder_id

  ingress {
    protocol = "TCP"
    port = 8080
    v4_cidr_blocks = ["10.10.0.0/16"]
  }

  ingress {
    protocol = "TCP"
    port = 22
    security_group_id = yandex_vpc_security_group.bastion.id
  }

  egress {
    protocol = "ANY"
    v4_cidr_blocks = ["0.0.0.0/0"]
  }
}

IAM: один сервісний акаунт = одна роль

Кожен компонент (VM, Kubernetes-ноди, CI/CD) отримує окремий сервісний акаунт з мінімальними правами. Для GitHub Actions використовуємо Workload Identity Federation — тимчасові токени, жодних секретів.

# Створення SA
$ yc iam service-account create --name app-sa --folder-id <folder-id>
# Роль на конкретний ресурс
$ yc resource-manager folder add-access-binding <folder-id> \
  --role container-registry.images.puller \
  --service-account-id <sa-id>

Як створити сервісний акаунт з мінімальними правами?

  1. Створіть сервісний акаунт: yc iam service-account create --name app-sa --folder-id <folder-id>.
  2. Призначте роль тільки на потрібний ресурс, наприклад, container-registry.images.puller на конкретний реєстр.
  3. Використовуйте федерацію ідентифікаторів для тимчасових токенів — так ви ніколи не зберігаєте ключі.
  4. Додайте сервісний акаунт до групи доступу для простоти управління.
  5. Перевірте, що у сервісного акаунта немає зайвих прав, виконавши yc iam service-account list-access-bindings --id <sa-id>.

Object Storage, Registry, моніторинг та відповідність 152-ФЗ

Yandex Object Storage — S3-сумісний, з lifecycle-правилами та шифруванням через KMS. Container Registry — без окремих паролів, все через IAM. Зберігання в Object Storage обходиться близько $1–1 за ГБ на місяць, що значно дешевше західних аналогів для російських проектів. Економія на ліцензіях при використанні Managed Kubernetes Yandex Cloud (Managed Service for Kubernetes) замість самостійної установки досягає 50%, що в грошовому вираженні становить від $270–390 на місяць для середнього проекта.

resource "yandex_storage_bucket" "app" {
  bucket = "my-app-storage"
  folder_id = var.folder_id
  access_key = yandex_iam_service_account_static_access_key.storage.access_key
  secret_key = yandex_iam_service_account_static_access_key.storage.secret_key

  lifecycle_rule {
    id = "logs-cleanup"
    enabled = true
    prefix = "logs/"

    expiration {
      days = 90
    }

    noncurrent_version_expiration {
      days = 30
    }
  }

  server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        sse_algorithm = "aws:kms"
        kms_master_key_id = yandex_kms_symmetric_key.main.id
      }
    }
  }
}

Моніторинг Yandex Cloud (Yandex Monitoring) збирає метрики всіх сервісів автоматично. Для логів додатків використовуємо Cloud Logging з retention 30 днів. Алерти через webhook або PagerDuty. Налаштуємо дашборди з ключовими SLO: latency p99 не вище 200ms, error rate < 0.1%.

Yandex Cloud сертифікований за 152-ФЗ Yandex Cloud (до УЗ-3). Дані — тільки російські зони, шифрування через KMS, аудит через Cloud Audit Trails. Додатково налаштовуємо логування всіх дій. Це закриває вимоги регулятора для більшості проектів. Yandex Cloud відповідає вимогам 152-ФЗ до УЗ-3 (офіційна документація).

Розмежування доступу на старті

Помилка IAM — найчастіша проблема при аудиті. На одному проекті сервісний акаунт CI/CD мав роль editor на весь каталог. При компрометації пайплайну зловмисник зміг би запустити криптомайнер на будь-якій VM. Ми виправили: створили окремі SA для кожного завдання, видали container-registry.images.puller для збірки, compute.instanceAdmin тільки для конкретної ноди. Ризик упав до нуля.

Приклад Terraform-конфігурації для мінімізації прав
resource "yandex_iam_service_account" "ci_cd" {
  name        = "ci-cd-sa"
  description = "Service account for CI/CD"
  folder_id   = var.folder_id
}

resource "yandex_resourcemanager_folder_iam_member" "ci_cd_puller" {
  folder_id = var.folder_id
  role      = "container-registry.images.puller"
  member    = "serviceAccount:${yandex_iam_service_account.ci_cd.id}"
}

resource "yandex_resourcemanager_folder_iam_member" "ci_cd_compute" {
  folder_id = var.folder_id
  role      = "compute.instanceAdmin"
  member    = "serviceAccount:${yandex_iam_service_account.ci_cd.id}"
  condition {
    expression = "resource.name == 'my-app-server'"
    title      = "Limit to specific instance"
  }
}

Що входить у роботу та терміни

Після завершення ви отримуєте:

  • Архітектурну схему мережі (draw.io)
  • Весь Terraform-код у репозиторій
  • Опис IAM-ролей та сервісних акаунтів
  • Runbook по інцидентах
  • Доступи до моніторингу та логування
  • Навчання команди (опціонально)
Етап Результат Строк
Аудит вимог Технічне завдання, оцінка 1 день
Проектування Схема мережі, IAM-структура 2-3 дні
Реалізація Terraform-код, базові сервіси 3-10 днів
Моніторинг Дашборди, алерти 1-2 дні
Документація Архітектура, runbook 2-3 дні
Масштаб Строк
Проста інфраструктура (1-3 сервіси, одне оточення) 1-2 тижні
Середній проект (dev/staging/prod, K8s, managed БД) 3-6 тижнів
Велика міграція з існуючої інфраструктури 1-3 місяці

Вартість розраховується індивідуально після аудиту. Гарантуємо супровід протягом місяця після здачі. Зв'яжіться з нами, щоб отримати оцінку вашого проекту за 1 робочий день. Отримайте консультацію — ми розповімо, як оптимально побудувати інфраструктуру під ваші завдання.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139