Привет, инженеры! 👋 В мире разработки и DevOps безопасность данных — это не прихоть, а необходимость. Мы в Pingera постоянно работаем над тем, чтобы наши инструменты не только были мощными и удобными, но и обеспечивали высокий уровень защиты вашей информации. Сегодня мы рады анонсировать новую, долгожданную функцию, которая выводит безопасность на новый уровень — Секреты! 🎉
Раньше, чтобы выполнять многошаговые сценарии, например, вход в личный кабинет, вам приходилось вставлять логин и пароль прямо в код Playwright-скрипта. Это было небезопасно: такие скрипты нельзя было хранить в публичных Git-репозиториях или делиться ими с коллегами без риска утечки. С новой функцией Секреты мы полностью решаем эту проблему.
Что такое Секреты и почему это важно?
Секреты — это зашифрованные переменные, которые позволяют безопасно хранить конфиденциальные данные, такие как:
- 🔒 Логины и пароли для входа в систему.
- 🔑 API-токены и ключи доступа.
- 📄 Любые другие чувствительные данные, которые не должны храниться в открытом виде.
Теперь вы можете хранить эти данные в защищённом хранилище Pingera, а затем привязывать их к конкретным проверкам. В вашем Playwright-скрипте данные будут доступны через переменные окружения, что является стандартом безопасности в индустрии.
Как это работает: пошаговая инструкция 🚶♂️
Процесс использования Секретов максимально простой и состоит из трёх шагов.
Шаг 1: Создание Секрета
Первым делом нужно создать секрет в интерфейсе 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-инженеров, позволяя им создавать более надёжные и безопасные системы мониторинга.
Начните использовать Секреты уже сегодня и выведите мониторинг на новый уровень! 🛡️