Блог и новости

Секреты в Pingera: Безопасное хранение данных для ваших Playwright-скриптов

Проверки Безопасность Новости
Логотип playwright c замком-секретом для блога Pingera
Привет, инженеры! 👋 В мире разработки и DevOps безопасность данных — это не прихоть, а необходимость. Мы в Pingera постоянно работаем над тем, чтобы наши инструменты не только были мощными и удобными, но и обеспечивали высокий уровень защиты вашей информации. Сегодня мы рады анонсировать новую, долгожданную функцию, которая выводит безопасность на новый уровень — Секреты! 🎉
Раньше, чтобы выполнять многошаговые сценарии, например, вход в личный кабинет, вам приходилось вставлять логин и пароль прямо в код Playwright-скрипта. Это было небезопасно: такие скрипты нельзя было хранить в публичных Git-репозиториях или делиться ими с коллегами без риска утечки. С новой функцией Секреты мы полностью решаем эту проблему.

Что такое Секреты и почему это важно?

Секреты — это зашифрованные переменные, которые позволяют безопасно хранить конфиденциальные данные, такие как:
  • 🔒 Логины и пароли для входа в систему.
  • 🔑 API-токены и ключи доступа.
  • 📄 Любые другие чувствительные данные, которые не должны храниться в открытом виде.
Теперь вы можете хранить эти данные в защищённом хранилище Pingera, а затем привязывать их к конкретным проверкам. В вашем Playwright-скрипте данные будут доступны через переменные окружения, что является стандартом безопасности в индустрии.

Как это работает: пошаговая инструкция 🚶‍♂️

Процесс использования Секретов максимально простой и состоит из трёх шагов.

Шаг 1: Создание Секрета

Первым делом нужно создать секрет в интерфейсе Pingera.
Pingera - экран управления секретами
Перейдите в раздел «Секреты» и нажмите «Добавить секрет». Придумайте ему уникальное имя (например, pingera-admin-credentials) и введите само значение. Имя должно быть понятным, так как вы будете обращаться к нему в своих проверках.

Шаг 2: Привязка Секрета к проверке

После создания секрета его нужно привязать к конкретной проверке, чтобы сделать доступным для вашего скрипта.
На экране создания или редактирования Синтетической или Пошаговой API проверки найдите раздел «Секреты». Здесь вы можете выбрать созданный секрет из списка и назначить его переменной окружения. Например, вы можете привязать секрет с именем my-api-key к переменной окружения API_KEY.
Привязка секретов к проверке
Теперь, когда проверка будет запущена, в окружении будет доступна переменная API_KEY со значением вашего секрета.

Шаг 3: Использование Секрета в вашем Playwright-скрипте

Теперь переходим к самому интересному — к коду! В вашем скрипте вы сможете получить доступ к значению секрета через стандартный объект Node.js process.env.

Пример 1: Синтетическая проверка с логином и паролем

Представим, что у вас есть сценарий, который проверяет вход в личный кабинет. Раньше вам приходилось бы хардкодить логин и пароль. Теперь это делается безопасно:
import { test, expect } from '@playwright/test';

// Получаем логин и пароль из переменных окружения
const username = process.env.LOGIN;
const password = process.env.PASSWORD;

test('Login to the dashboard with secrets', async ({ page }) => {
  // Проверяем, что секреты существуют
  if (!username || !password) {
    throw new Error('LOGIN or PASSWORD environment variables are not set.');
  }

  // Переходим на страницу логина
  await page.goto('https://my-service.com/login');

  // Заполняем форму
  await page.fill('input[name="username"]', username);
  await page.fill('input[name="password"]', password);

  // Нажимаем на кнопку входа
  await page.click('button[type="submit"]');

  // Ждём, пока страница загрузится и проверяем, что логин успешен
  await page.waitForSelector('.dashboard-ready');
  await expect(page.url()).toContain('/dashboard');
});
Здесь мы получаем логин и пароль через process.env.LOGIN и process.env.PASSWORD, которые мы заранее настроили в интерфейсе Pingera. Это делает ваш скрипт универсальным и безопасным.

Пример 2: Пошаговая API-проверка с API-токеном

Аналогичный подход работает и для наших Пошаговых API-проверок. Например, если вам нужно отправить запрос к защищённому API, используя токен авторизации.
import { test, expect } from '@playwright/test';

// Тест для проверки API
test('API request with secret', async ({ request }) => {
  // Получаем токен из переменной окружения
  const apiToken = process.env.PINGERA_API_TOKEN;

  // Проверяем, что токен существует
  if (!apiToken) {
    throw new Error('PINGERA_API_TOKEN environment variable is not set.');
  }

  // Выполняем GET-запрос к API, используя токен в заголовке
  const response = await request.get('https://api.pingera.ru/v1/pages', {
    headers: {
      'Authorization': `${apiToken}`,
      'Content-Type': 'application/json'
    },
  });

  // Проверяем, что запрос был успешен
  expect(response.status()).toBe(200);

  // Выводим тело ответа для отладки
  const responseBody = await response.json();
  console.log(responseBody);
});
В этом примере process.env.PINGERA_API_TOKEN автоматически заменяется на значение вашего секрета, обеспечивая безопасную передачу конфиденциального токена.

Управление секретами через API

Для автоматизации и интеграции в CI/CD-пайплайны, вы можете управлять секретами с помощью нашего API. 🚀
  • POST /v1/secrets — Создание нового секрета.
  • GET /v1/secrets — Получение списка всех секретов.
  • POST /v1/checks/{check_id}/secrets — Привязка секрета к проверке.
  • И другие эндпоинты для полного контроля над вашими секретами.
Читайте больше в документации.

Заключение

Секреты — это не просто новая функция, это важный шаг в сторону повышения безопасности и удобства работы с Pingera. Теперь вы можете хранить ваши скрипты в публичных репозиториях, безопасно делиться ими и быть уверенными, что ваши конфиденциальные данные надёжно защищены.
Мы верим, что эта возможность станет незаменимым инструментом для SRE, DevOps-специалистов и QA-инженеров, позволяя им создавать более надёжные и безопасные системы мониторинга.
Начните использовать Секреты уже сегодня и выведите мониторинг на новый уровень! 🛡️