1. Введение
В ходе этой лабораторной работы вы развернете приложение в кластере Cloud Run и GKE и просмотрите информацию о безопасности для развертывания в Software Delivery Shield Security.
Что вы узнаете
- Анализ безопасности реестра артефактов
- Анализ безопасности Cloud Run
- Положение безопасности GKE
2. Настройка и требования
Настройка облачного проекта
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы можете обновить его в любое время.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Кроме того, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага, и он останется в силе на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не взимать плату за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить весь проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Настройка среды
Активируйте Cloud Shell, щелкнув значок справа от панели поиска.
В Cloud Shell включите API, необходимые для этой лабораторной работы:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
Если будет предложено авторизоваться, нажмите «Авторизовать», чтобы продолжить.
Это должно привести к успешному сообщению, похожему на это:
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
Запустите команду для асинхронного создания кластера GKE. Позже он будет использоваться в лаборатории:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Подготовьте заявку
Сначала вы подготовите простое приложение Node.js на основе Express, которое отвечает на HTTP-запросы.
В Cloud Shell создайте новый каталог с именем starter-nodejs
и перейдите в него:
mkdir starter-nodejs
cd starter-nodejs
Создайте файл package.json
, выполнив команды ниже:
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
Файл выше содержит команду запуска сценария и зависимость от платформы веб-приложений Express.
Затем в том же каталоге создайте файл index.js
, выполнив команды ниже:
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды PORT. Ваше приложение готово и готово к контейнеризации и развертыванию.
4. Развертывание приложения Cloud Run
Запустите команду ниже, чтобы развернуть ваше приложение:
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Подтвердите создание репозитория реестра артефактов:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
5. Реестр артефактов и анализ безопасности облачной сборки
Для завершения сборки потребуется несколько минут.
Откройте Cloud Build и просмотрите артефакты сборки последней сборки.
Пользовательский интерфейс Cloud Build в консоли Google Cloud содержит панель сведений о безопасности Software Delivery Shield, на которой отображается информация о безопасности, связанная со сборкой, такая как уровень SLSA, любые уязвимости в зависимостях и происхождение сборки.
Просмотрите Security Insights для созданного образа контейнера. Перейдите по ссылке на отсканированные артефакты, чтобы просмотреть сведения об уязвимостях для этого образа в реестре артефактов.
Вернитесь в консоль Cloud Shell и убедитесь, что развертывание приложения Cloud Run завершено.
Done. Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic. Service URL: https://starter-app-nin5jpgefq-uc.a.run.app
6. Анализ безопасности Cloud Run
Cloud Run содержит панель безопасности (предварительная версия), на которой отображаются сведения о безопасности цепочки поставок программного обеспечения, такие как информация о соответствии уровня сборки SLSA, происхождение сборки и уязвимости, обнаруженные в запущенных службах.
Откройте Cloud Run и просмотрите Security Insights на вкладке ВЕРСИИ/БЕЗОПАСНОСТЬ.
На этой панели отображается следующая информация:
- Идентификация и шифрование: адрес электронной почты учетной записи службы Compute Engine по умолчанию и ключ шифрования, используемый для развертывания.
- Уровень SLSA: эта сборка соответствует уровню SLSA 3, который определяет уровень зрелости процесса сборки программного обеспечения в соответствии со спецификацией SLSA.
- Уязвимости: любые уязвимости, обнаруженные в зависимостях приложения.
- Сведения о сборке: сведения о сборке, такие как сборщик и ссылка для просмотра журналов.
- Происхождение сборки. Происхождение сборки, представляющее собой набор проверяемых метаданных о сборке. Он включает в себя такие детали, как дайджесты построенных образов, расположение источников входных данных, цепочку инструментов сборки, этапы сборки и продолжительность сборки.
7. Положение безопасности GKE
GKE может оценить состояние безопасности вашего контейнера и дать активные рекомендации по настройкам кластера, конфигурации рабочей нагрузки и уязвимостям. Он включает в себя панель мониторинга состояния безопасности (предварительная версия), которая сканирует ваши кластеры и рабочие нагрузки GKE, чтобы предоставить вам обоснованные и действенные рекомендации по улучшению вашего состояния безопасности.
На следующих шагах вы развернете приложение в кластере GKE и просмотрите информацию о безопасности на панели мониторинга состояния безопасности GKE.
Убедитесь, что кластер готов, выполнив следующую команду:
gcloud beta container clusters list
Пример вывода:
NAME: gke-cluster LOCATION: us-central1-a MASTER_VERSION: 1.24.9-gke.3200 MASTER_IP: 34.29.226.228 MACHINE_TYPE: e2-medium NODE_VERSION: 1.24.9-gke.3200 NUM_NODES: 3 STATUS: RUNNING
Получите учетные данные и конфигурацию для кластера GKE:
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
Запустите команду для развертывания приложения с использованием образа, созданного на предыдущем шаге:
export PROJECT_ID=$(gcloud config get-value project)
kubectl run starter-app \
--image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
--port 8080
Рабочие нагрузки GKE в идеале должны иметь усиленную конфигурацию, ограничивающую зону их атак. Проверку рабочих нагрузок в кластерах на наличие проблем с конфигурацией может быть сложно выполнить вручную в масштабе. Вы можете использовать панель мониторинга состояния безопасности, чтобы автоматически сканировать конфигурацию всех ваших запущенных рабочих нагрузок в нескольких кластерах и возвращать действенные, оцененные результаты и обоснованные рекомендации для улучшения вашего состояния безопасности.
Включите сканирование конфигурации рабочей нагрузки:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
Помимо сканирования конфигурации рабочей нагрузки, вы также можете включить сканирование уязвимостей рабочей нагрузки и просмотреть результаты на панели мониторинга состояния безопасности, которая представляет собой набор функций, предоставляющих достоверную информацию и рекомендации по повышению безопасности ваших кластеров и рабочих нагрузок GKE.
GKE автоматически сканирует образы контейнеров в каждом подходящем поде, работающем в вашем кластере GKE, на наличие известных уязвимостей, используя данные об уязвимостях из общедоступных баз данных CVE, таких как NIST .
Если в образах ваших контейнеров обнаруживается уязвимость, GKE присваивает ей уровень серьезности и отображает результаты на панели мониторинга состояния безопасности в консоли Google Cloud. GKE также добавляет записи в Cloud Logging для аудита и отслеживания.
Включите сканирование уязвимостей рабочей нагрузки:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
Откройте страницу состояния безопасности GKE.
Подождите несколько минут, пока аудит рабочей нагрузки завершится, а затем просмотрите результаты.
Просмотрите проблемы конфигурации и затронутые рабочие нагрузки.
Зачем использовать панель мониторинга состояния безопасности
Панель мониторинга состояния безопасности — это базовая мера безопасности, которую вы можете включить для любого подходящего кластера GKE. Google Cloud рекомендует использовать панель мониторинга состояния безопасности во всех ваших кластерах по следующим причинам:
- Минимальные сбои: функции не мешают выполнению рабочих нагрузок и не нарушают их.
- Практические рекомендации. Если панель мониторинга состояния безопасности доступна, она содержит элементы действий для устранения обнаруженных проблем. Эти действия включают команды, которые вы можете выполнить, примеры изменений конфигурации, которые необходимо внести, и советы о том, что делать для устранения уязвимостей.
- Визуализация. Панель мониторинга состояния безопасности обеспечивает высокоуровневую визуализацию проблем, влияющих на кластеры вашего проекта, и включает диаграммы и графики, показывающие достигнутый вами прогресс и потенциальное влияние каждой проблемы.
- Оценочные результаты: GKE присваивает уровень серьезности обнаруженным проблемам на основе опыта групп безопасности Google и отраслевых стандартов.
- Журналы событий с возможностью аудита: GKE добавляет все обнаруженные проблемы в журналы для улучшения отчетности и наблюдения.
8. Поздравляем!
Поздравляем! Вы завершили кодовую лабораторию.
Что мы рассмотрели:
- Информация Security Insights для артефактов сборки и приложений, работающих в Cloud Run и GKE.
Очистить
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избавиться от выставления счетов — удалить проект, созданный вами для этого руководства.
—
Последнее обновление: 21.03.23.