Обеспечение безопасности инфраструктуры для приложений ИИ

1. Введение

Обзор

В этой лабораторной работе вы устраните распространённые угрозы инфраструктуре среды разработки ИИ. Вы внедрите средства контроля безопасности, предназначенные для защиты основных компонентов этой среды.

Контекст

Вы — главный по безопасности в своей команде разработчиков, и ваша цель — создать среду, в которой будут обеспечены минимальные трудности использования и защита от распространенных угроз.

В следующей таблице перечислены угрозы, которые вам наиболее важно нейтрализовать. Каждой угрозе посвящена отдельная задача в рамках этой лабораторной работы:

Угроза

Смягчение

Задача выполнена

Несанкционированный доступ в сеть через эксплуатируемые открытые порты.

Создайте частную VPC и ограничьте доступ к Vertex AI одному пользователю, подключенному через Google Cloud вместо публичного IP-адреса.

Настройте безопасный сетевой фундамент

Повышение привилегий со стороны скомпрометированного вычислительного экземпляра с использованием чрезмерно привилегированных учетных данных.

Создайте и назначьте учетную запись службы с минимальными привилегиями для экземпляра Vertex AI.

Развертывание защищенного экземпляра Vertex AI Workbench

Захват экземпляра вычислительного ресурса, приводящий к несанкционированному вмешательству в работу системы.

Защитите экземпляр, отключив root-доступ и включив безопасную загрузку.

Развертывание защищенного экземпляра Vertex AI Workbench

Случайное раскрытие данных обучения и моделей из-за неправильной настройки хранилища.

Обеспечьте предотвращение публичного доступа к контейнеру и используйте единые средства управления доступом на уровне контейнера.

Разверните безопасное облачное хранилище

Злонамеренное или случайное удаление или искажение наборов данных и артефактов модели.

Включите управление версиями объектов для восстановления и включите журналы доступа к данным для неизменяемого аудиторского следа всех действий.

Разверните безопасное облачное хранилище

Краткий справочник

В ходе этой лабораторной работы вы будете работать со следующими именованными ресурсами:

Компонент

Имя

Имя VPC

genai-secure-vpc

Имя подсети

genai-subnet-us-central1

Облачный маршрутизатор

genai-router-us-central1

Облачный NAT

genai-nat-us-central1

Учетная запись службы

vertex-workbench-sa

Экземпляр Vertex AI

secure-genai-instance

Ведро для хранения

secure-genai-artifacts-[PROJECT_ID]

Чему вы научитесь

В этой лабораторной работе вы научитесь:

  • Предоставьте защищенную VPC с частной сетью для предотвращения нежелательного трафика.
  • Защитите экземпляр Vertex AI Workbench от буткитов и повышения привилегий.
  • Обеспечьте безопасность облачного хранилища, чтобы минимизировать неконтролируемую передачу данных и случайное раскрытие их общественности.

2. Настройка проекта

Аккаунт Google

Если у вас еще нет личного аккаунта Google, вам необходимо создать аккаунт Google .

Используйте личный аккаунт вместо рабочего или школьного.

Войдите в Google Cloud Console.

Войдите в Google Cloud Console, используя личный аккаунт Google.

Включить биллинг

Получите кредиты Google Cloud на сумму 5 долларов США (по желанию)

Для проведения этого семинара вам понадобится платёжный счёт с определённым балансом. Если вы планируете использовать собственный платёжный счёт, пропустите этот шаг.

  1. Нажмите на эту ссылку и войдите в систему, используя личный аккаунт Google. Вы увидите что-то вроде этого: Нажмите здесь, чтобы перейти на страницу с информацией о титрах
  2. Нажмите кнопку «НАЖМИТЕ ЗДЕСЬ, ЧТОБЫ ПОЛУЧИТЬ ДОСТУП К ВАШИМ КРЕДИТАМ» . Вы перейдете на страницу настройки своего платёжного профиля. Настройка страницы профиля выставления счетов
  3. Нажмите «Подтвердить».

Теперь вы подключены к пробной учетной записи Google Cloud Platform.

Скриншот обзора выставления счетов

Настройте личный платежный аккаунт

Если вы настраиваете оплату с использованием кредитов Google Cloud, вы можете пропустить этот шаг.

Чтобы настроить персональную учетную запись для выставления счетов, перейдите сюда и включите выставление счетов в Cloud Console.

Некоторые заметки:

  • Выполнение этой лабораторной работы обойдется менее чем в 1 доллар США в виде облачных ресурсов.
  • Вы можете следовать инструкциям в конце этой лабораторной работы, чтобы удалить ресурсы и избежать дальнейших расходов.
  • Новые пользователи имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Создать проект (необязательно)

Если у вас нет текущего проекта, который вы хотели бы использовать для этого ярлыка, создайте новый проект здесь .

3. Включите API

Настроить Cloud Shell

После успешного создания проекта выполните следующие шаги для настройки Cloud Shell .

Запустить Cloud Shell

Перейдите на сайт shell.cloud.google.com и, если появится всплывающее окно с просьбой авторизоваться, нажмите «Авторизовать» .

Установить идентификатор проекта

Выполните следующую команду в терминале Cloud Shell, чтобы задать правильный идентификатор проекта . Замените <your-project-id> на фактический идентификатор вашего проекта, скопированный с шага создания проекта выше.

gcloud config set project <your-project-id>

Теперь вы должны увидеть, что в терминале Cloud Shell выбран правильный проект.

Включить Vertex AI Workbench и облачное хранилище

Чтобы использовать сервисы в этой лаборатории, вам необходимо включить API для Compute Engine, Vertex AI Workbench, IAM и Cloud Storage в вашем проекте Google Cloud.

  1. В терминале включите API:
gcloud services enable compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com iam.googleapis.com storage.googleapis.com

Кроме того, вы можете включить эти API, перейдя на соответствующие страницы в консоли и нажав «Включить» .

4. Настройте безопасную сетевую основу

В этой задаче вы создадите изолированную сетевую среду для всех своих сервисов. Используя частную сеть и контролируя потоки данных, вы создаёте многоуровневую защиту, значительно сокращающую поверхность атак вашей инфраструктуры по сравнению с общедоступными ресурсами. Эта безопасная сетевая основа критически важна для защиты ваших ИИ-приложений от несанкционированного доступа.

Создайте VPC и подсеть

На этом этапе вы настраиваете виртуальное частное облако (VPC) и подсеть. Это создаёт изолированную сетевую среду, которая является первой линией защиты от несанкционированного доступа в сеть.

  1. В консоли Google Cloud Console перейдите в раздел «Сеть VPC» > «Сети VPC» . В строке поиска в верхней части консоли Google Cloud Console найдите «Сети VPC» и выберите нужный вариант.
  2. Нажмите Создать сеть VPC .
  3. В поле Имя введите genai-secure-vpc .
  4. Для режима создания подсети выберите Пользовательский .
  5. В разделе Новая подсеть укажите следующие свойства для создания подсети:

    Свойство

    Значение (введите или выберите)

    Имя

    genai-subnet-us-central1

    Область

    us-central1

    Диапазон IP-адресов

    10.0.1.0/24

    Частный доступ Google

    На

  6. Нажмите «Создать» .

Создайте шлюз Cloud NAT

Шлюз Cloud NAT позволяет вашим частным экземплярам инициировать исходящие соединения (например, для обновления программного обеспечения) без наличия публичного IP-адреса, что означает, что общедоступный Интернет не может инициировать соединения с ними.

  1. Сначала создайте облачный маршрутизатор. В строке поиска в верхней части консоли Google Cloud Console найдите «Cloud Router» и выберите его.
  2. Нажмите Создать маршрутизатор .
  3. Настройте облачный маршрутизатор следующим образом:

    Свойство

    Значение (введите или выберите)

    Имя

    genai-router-us-central1

    Сеть

    genai-secure-vpc (сеть VPC, которую вы только что создали)

    Область

    us-central1

  4. Нажмите «Создать» .
  5. Затем перейдите в раздел «Сетевые службы» > «Cloud NAT» . Используйте строку поиска в верхней части консоли Google Cloud Console, чтобы найти «Cloud NAT» и выбрать этот пункт.
  6. Нажмите « Начать» .
  7. Настройте шлюз Cloud NAT следующим образом:

    Свойство

    Значение (введите или выберите)

    Имя шлюза

    genai-nat-us-central1

    сеть VPC

    genai-secure-vpc (созданна вами сеть VPC)

    Область

    us-central1

    Облачный маршрутизатор

    genai-router-us-central1 (маршрутизатор, который вы только что настроили)

  8. Нажмите «Создать» .

5. Разверните безопасный экземпляр Vertex AI Workbench.

Теперь, когда у вас есть безопасная сетевая платформа, вы разворачиваете защищенный экземпляр Vertex AI Workbench внутри защищенной VPC. Этот экземпляр Workbench служит средой разработки, предоставляя безопасное и изолированное пространство для ваших задач по разработке ИИ. Предыдущая конфигурация сети гарантирует, что этот экземпляр не будет напрямую доступен из общедоступного интернета, что обеспечивает многоуровневую защиту.

Создайте учетную запись службы с минимальными привилегиями

Создание выделенной учётной записи службы с минимальным набором необходимых разрешений поддерживает принцип наименьших привилегий . В случае компрометации вашего экземпляра эта практика ограничивает «радиус атаки», гарантируя, что экземпляр сможет получать доступ только к тем ресурсам и выполнять только те действия, которые явно необходимы для его работы.

  1. В консоли Google Cloud Console перейдите в раздел «IAM и администрирование» > «Учётные записи служб» . В строке поиска в верхней части консоли Google Cloud Console найдите раздел «Учётные записи служб» и выберите его.
  2. Нажмите Создать учетную запись службы .
  3. В поле Имя учетной записи службы введите vertex-workbench-sa .
  4. Нажмите «Создать» и продолжите .
  5. Предоставить следующие роли:
    • Vertex AI User
    • Storage Object Creator
  6. Нажмите Готово .

Создайте экземпляр рабочего места

На этом этапе вы разворачиваете экземпляр Vertex AI Workbench. Он настраивается для работы в ранее созданной вами частной VPC-среде, что ещё больше изолирует его от общедоступного интернета. Кроме того, вы применяете дополнительные меры по усилению безопасности непосредственно к экземпляру.

  1. В меню навигации Google Cloud Console (гамбургер-меню) выберите Vertex AI > Workbench . В строке поиска в верхней части Google Cloud Console найдите «Workbench» и выберите результат с подзаголовком «Vertex AI».
  2. Нажмите «Создать новый» и настройте:

    Свойство

    Значение (введите или выберите)

    Имя

    secure-genai-instance

    Область

    us-central1

  3. Нажмите Дополнительные параметры .
  4. Нажмите «Тип машины» и установите флажки для следующих параметров:
    • Безопасная загрузка
    • Виртуальный доверенный платформенный модуль (vTPM)
    • Мониторинг целостности .
  5. Нажмите «Сеть» и настройте следующее:

    Свойство

    Значение (введите или выберите)

    Сеть

    genai-secure-vpc

    Подсеть

    genai-subnet-us-central1 (10.0.1.0/24)

    Назначить внешний IP-адрес

    Снимите флажок , так как доступ к этому экземпляру осуществляется только через прокси-сервер в Google Cloud.

  6. Нажмите IAM и безопасность и настройте следующее:

    Свойство

    Значение (введите или выберите)

    Электронная почта пользователя

    Один пользователь и выберите адрес электронной почты, который вы в данный момент используете для входа в Google Cloud.

    Использовать учетную запись службы Compute Engine по умолчанию

    Снимите флажок.

    Электронная почта учетной записи службы

    Введите адрес электронной почты, созданный для учетной записи службы с минимальными привилегиями (замените [PROJECT_ID] своим фактическим идентификатором): vertex-workbench-sa@[PROJECT_ID].iam.gserviceaccount.com

    Корневой доступ к экземпляру

    Снимите флажок.

  7. Нажмите «Создать» .

Получите доступ к вашему экземпляру Vertex AI

Теперь, когда ваш экземпляр Vertex AI Workbench является временным, вы можете получить к нему безопасный доступ. Подключение к нему осуществляется через прокси-сервер Google Cloud, что гарантирует конфиденциальность экземпляра и отсутствие доступа к публичному интернету, тем самым ограничивая риск нежелательного и потенциально вредоносного трафика.

  1. Перейдите в раздел Vertex AI > Workbench . Возможно, вы уже находитесь на этой странице, если ваш экземпляр только что завершил подготовку. В противном случае вы можете воспользоваться меню навигации (гамбургер-меню) или строкой поиска в Google Cloud Console, чтобы попасть туда.
  2. Найдите в списке свой экземпляр с именем secure-genai-instance .
  3. Справа от вашего экземпляра нажмите ссылку Открыть JupyterLab .

Откроется новая вкладка в браузере, предоставляющая доступ к вашему экземпляру. Вы получаете к нему доступ через Google Cloud, но экземпляр не подключен к публичному интернету, что снижает риск нежелательного и потенциально вредоносного трафика.

6. Разверните безопасное хранилище Cloud Storage.

Теперь вы создаёте безопасный контейнер облачного хранилища для своих наборов данных. Здесь хранятся данные, модели и артефакты для обучения ИИ. Применение надёжных настроек безопасности к этому контейнеру предотвращает случайное раскрытие конфиденциальных данных и защищает от злонамеренного или случайного удаления и изменения. Это гарантирует целостность и конфиденциальность ваших ценных ИИ-ресурсов.

Создайте и настройте контейнер

На этом этапе вы создаёте контейнер облачного хранилища и применяете начальные настройки безопасности. Эти настройки обеспечивают защиту от публичного доступа и единый контроль доступа на уровне контейнера, что критически важно для контроля доступа к вашим данным.

  1. В консоли Google Cloud Console перейдите в раздел «Облачное хранилище» > «Бакеты» . В строке поиска в верхней части консоли Google Cloud Console найдите «Бакеты» и выберите нужный раздел.
  2. Нажмите «Создать» .
  3. В разделе Get Started задайте для параметра Name значение secure-genai-artifacts-[PROJECT_ID] , заменив [PROJECT_ID] на ваш фактический идентификатор проекта Google Cloud.
  4. Продолжайте выбирать место хранения данных и настраивайте следующее:

    Свойство

    Значение (введите или выберите)

    Тип местоположения

    Область

    Область

    us-central1

  5. Продолжайте выбирать способ хранения данных и сохраняйте настройки по умолчанию.
  6. Продолжайте выбирать способ управления доступом к объектам и сохраняйте настройки по умолчанию:

    Свойство

    Значение (введите или выберите)

    Причина

    Запретить публичный доступ

    Оставьте выбранным параметр «Применить предотвращение публичного доступа» .

    Запрет публичного доступа отменяет любые изменения IAM, которые могут непреднамеренно сделать объект уязвимым для Интернета.

    Контроль доступа

    Оставьте выбранным вариант «Униформа» .

    Хотя списки контроля доступа (ACL) кажутся лучшим вариантом для детального контроля, а следовательно, и для минимизации привилегий, в сочетании с другими функциями IAM они приводят к сложности и непредсказуемости. Рассмотрим компромиссы и преимущества единообразного доступа на уровне контейнеров для предотвращения непреднамеренного раскрытия данных.

  7. Продолжайте выбирать способ защиты данных объекта и сохраняйте настройки по умолчанию:

    Свойство

    Значение (введите или выберите)

    Причина

    Политика мягкого удаления (для восстановления данных)

    Оставьте выбранной политику мягкого удаления (для восстановления данных) .

    В случае случайного или злонамеренного удаления данных в корзине функция «мягкого» удаления позволяет восстановить содержимое в течение окна хранения.

    Версионирование объектов (для контроля версий)

    Выберите Управление версиями объектов (для управления версиями) .

    Управление версиями объектов позволяет осуществлять восстановление после случайной или злонамеренной перезаписи, например, если злоумышленник заменил безобидный файл файлом, содержащим код эксплойта.

    Макс. количество версий на объект

    3

    Хотя это значение произвольно и может увеличить стоимость, для возможности отката к предыдущей версии оно должно быть больше 1. Если злоумышленник потенциально может попытаться выполнить несколько перезаписей, может потребоваться более надёжная стратегия управления версиями и резервного копирования.

    Срок действия неактуальных версий истекает через

    7

    Рекомендуемый срок хранения старых версий — 7 дней, но для более долгосрочного хранения этот срок может быть больше.

  8. Нажмите «Создать» .
  9. Если появится всплывающее окно с текстом «Публичный доступ будет запрещен», оставьте выбранным поле по умолчанию («Применить запрет публичного доступа к этому контейнеру») и нажмите «Подтвердить» .

Включить защиту данных и ведение журнала

Чтобы обеспечить неизменность и возможность аудита данных, включите управление версиями объектов и настройте журналы доступа к данным для вашего контейнера. Управление версиями объектов позволяет восстановить данные после случайного удаления или перезаписи, а журналы доступа к данным предоставляют полный аудиторский след всех действий в вашем контейнере, что необходимо для мониторинга безопасности и соответствия требованиям.

  1. В консоли Google Cloud Console перейдите в раздел «IAM и администрирование» > «Журналы аудита» . В строке поиска в верхней части консоли Google Cloud Console найдите раздел «Журналы аудита» и выберите его.
  2. Воспользуйтесь фильтром поиска, чтобы найти и выбрать Google Cloud Storage .
  3. На появившейся панели установите флажки «Чтение данных» и «Запись данных» .
  4. Нажмите « Сохранить ».

7. Из лаборатории в реальность

Вы только что выполнили ряд шагов во временной лабораторной среде, но применённые вами принципы и конфигурации служат основой для защиты реальных проектов ИИ в Google Cloud. Вот как вы можете применить полученные знания в своей работе, перейдя от простой лабораторной среды к готовой к использованию в производственной среде.

Представьте, что вы только что создали ресурсы — частное VPC, защищенный экземпляр Workbench и защищенный контейнер — как безопасный стартовый шаблон для любого нового проекта ИИ. Ваша цель — сделать эту надежную основу простым и удобным путем для себя и своей команды.

Безопасная сеть: ваше личное рабочее пространство

Как бы вы использовали это в своей настройке

Каждый раз, когда вы запускаете новый ИИ-проект (например, «прогнозирование оттока клиентов», «модель классификации изображений»), вы воспроизводите эту сетевую конфигурацию. Вы создаёте выделенную VPC ( churn-pred-vpc ) или используете общую, заранее одобренную сеть. Это становится изолированной «песочницей» вашего проекта. Ваша среда разработки, например, настроенный вами Vertex AI Workbench, находится внутри этого защищённого пространства. Вы подключаетесь к нему через защищённый прокси-сервер ( Open JupyterLab ), никогда не раскрывая его из публичного интернета.

Подключение к производству

В производственной среде вы можете развить эту концепцию еще дальше, рассмотрев:

  • Инфраструктура как код (IaC) : вместо использования Cloud Console вы можете определить эту сеть с помощью таких инструментов, как Terraform или Cloud Deployment Manager . Это позволяет развернуть безопасную сетевую основу для нового проекта за считанные минуты, гарантируя её повторяемость и возможность аудита.
  • Совместно используемое VPC : В крупных организациях централизованная команда сетевых специалистов часто управляет общим VPC. Как разработчик, вы получите разрешение на запуск своих экземпляров и сервисов в определённых подсетях внутри этой централизованно управляемой защищённой сети. Принцип тот же: вы по-прежнему работаете в частном пространстве, но оно является частью более крупной общей инфраструктуры.
  • Управление службами VPC : для максимальной безопасности необходимо охватить всю эту среду периметром управления службами VPC. Это мощная функция, которая предотвращает утечку данных, гарантируя, что доступ к таким сервисам, как облачное хранилище, будет предоставлен только авторизованным ресурсам в пределах периметра вашей частной сети.

Защищенные вычисления: ваш безопасный центр разработки и обучения

Как бы вы использовали это в своей настройке

secure-genai-instance — это ваш инструмент для ежедневной разработки ИИ. Интерфейс JupyterLab можно использовать для:

  • Запишите и протестируйте код своей модели в блокнотах.
  • Установите библиотеки Python ( pip install ... ).
  • Экспериментируйте с небольшими и средними наборами данных. Настроенная вами система безопасности (отсутствие публичного IP-адреса, учётная запись службы с минимальными привилегиями, отсутствие root-доступа, безопасная загрузка) работает прозрачно в фоновом режиме. Вы можете сосредоточиться на работе с ИИ, зная, что экземпляр защищён от распространённых атак.

Подключение к производству

Обычно масштабное обучение не проводится на одном экземпляре Workbench в рабочей среде. Вместо этого вы можете реализовать свою работу следующими способами:

  • От блокнота к конвейеру : вы берёте код из блокнота и формализуете его в виде скрипта. Этот скрипт затем запускается как задание пользовательского обучения Vertex AI или как этап конвейера Vertex AI .
  • Контейнеризация : вы упаковываете обучающий код и его зависимости в контейнер Docker и сохраняете его в реестре артефактов . Это гарантирует, что ваш код всегда будет работать в согласованной и предсказуемой среде.
  • Учётная запись службы играет ключевую роль : созданная вами учётная запись службы vertex-workbench-sa имеет решающее значение. В рабочей среде ваши автоматизированные задания обучения Vertex AI будут выполняться с использованием этой же (или аналогичной) учётной записи службы с минимальными привилегиями, что гарантирует, что автоматизированное задание получит только те разрешения, которые ему действительно необходимы.

Безопасное хранилище: ваше центральное хранилище артефактов

Как бы вы использовали это в своей настройке

Контейнер secure-genai-artifacts — это единственный источник достоверных данных для вашего проекта. Он предназначен не только для исходного набора данных. Вы можете использовать его для хранения:

  • Необработанные и предварительно обработанные данные обучения.
  • Контрольные точки моделирования во время длительных тренировочных забегов.
  • Окончательные артефакты обученной модели (файлы .pkl , .pb или .h5 ).
  • Результаты оценки и журналы. Применённые вами параметры безопасности (запрет публичного доступа, унифицированный доступ на уровне контейнера, управление версиями и ведение журнала аудита) позволяют уверенно использовать этот контейнер в качестве центрального хранилища, защищённого от утечек и случайных удалений.

Подключение к производству

Чтобы управлять своими принципами в производственной среде, вам также следует учитывать:

  • Политики жизненного цикла : для управления расходами можно настроить политики жизненного цикла для автоматического перемещения старых версий моделей или наборов данных в более дешевые классы хранения (например, Nearline или Coldline) или их удаления по истечении определенного периода.
  • Межпроектные разрешения : в производственном конвейере команда по обработке данных может заполнить этот контейнер из другого проекта Google Cloud. Включенный вами единый доступ на уровне контейнера делает управление этими межпроектными IAM-разрешениями простым и безопасным, без сложных (и, следовательно, легко настраиваемых неправильно) списков контроля доступа (ACL).

Общая картина: обеспечение безопасности по умолчанию

Используя эту модель, вы превращаете безопасность из второстепенной задачи в основу своей работы. Вы больше не просто разработчик; вы — главный защитник безопасности своей команды. Когда присоединяется новый член команды, вы не предоставляете ему незащищённый, общедоступный компьютер. Вы предоставляете ему доступ к безопасной, предварительно настроенной среде, где безопасный способ работы также является самым простым. Такой подход напрямую снижает бизнес-риски, предотвращая распространённые причины утечек данных и взломов системы, позволяя вашей команде уверенно внедрять инновации и создавать мощные приложения на основе ИИ.

8. Поздравляем!

Поздравляем! Вы успешно создали и провели аудит многоуровневой безопасной инфраструктуры для вашей среды разработки ИИ. Вы создали защищенный сетевой периметр с режимом «запрет по умолчанию», развернули защищенный вычислительный экземпляр, обеспечили безопасность контейнера данных и с помощью журналов убедились, что ваши элементы управления работают именно так, как задумано.

Резюме

В этой лабораторной работе вы выполнили следующее:

  • Обеспечено безопасное VPC с частной сетью для предотвращения нежелательного трафика.
  • Развернут защищенный экземпляр Vertex AI Workbench для защиты от буткитов и повышения привилегий.
  • Обеспечено безопасное хранилище данных в облаке для предотвращения неконтролируемой передачи данных и случайного раскрытия информации для общественности.
  • Реализованы учетные записи служб с минимальными привилегиями для ограничения потенциального «радиуса атаки».
  • Включено управление версиями объектов и ведение журналов доступа к данным для защиты данных и неизменяемого контрольного журнала.