Azure
Полная интеграция: AKS, ресурсы, биллинг.
Обзор
Коннектор Azure использует Azure AD Service Principal с
аутентификацией по client_id + client_secret.
После подключения Oopps.ai получает доступ к Azure Resource Manager API
для сбора данных об инфраструктуре и расходах.
Что поддерживается
| Возможность | Статус | Описание |
|---|---|---|
| Кластеры (AKS) | ✓ | Azure Kubernetes Service — обнаружение и аудит кластеров |
| Инвентори | ✓ | Виртуальные машины, диски, сети (VNet), подсети, публичные IP, балансировщики |
| Биллинг | ✓ | Расходы через Cost Management API |
| Kubeconfig | ✓ | Автоматическое получение kubeconfig для AKS кластеров |
Необходимые права
Service Principal должен иметь следующие роли, назначенные на уровне подписки (subscription) или ресурсной группы:
| Роль | Область | Зачем нужна |
|---|---|---|
Reader |
Subscription | Чтение списка ресурсов: VM, диски, сети, AKS кластеры |
Azure Kubernetes Service Cluster User Role |
AKS кластер | Получение kubeconfig для аудита Kubernetes |
Cost Management Reader |
Subscription | Чтение данных о расходах через Cost Management API |
Без роли Cost Management Reader биллинг будет недоступен (ошибка
403). Без роли Azure Kubernetes Service Cluster User Role
невозможно получить kubeconfig для аудита.
Пошаговая инструкция
Создайте App Registration
Перейдите в Azure Portal → Azure Active Directory → App registrations → New registration.
Укажите имя (например, oopps-ai-connector), выберите
Single tenant, нажмите Register.
Создайте client secret
На странице приложения перейдите в Certificates & secrets → New client secret.
Укажите описание и срок действия. Скопируйте значение секрета
(Value) — оно отображается только один раз.
Назначьте роль Reader на подписке
Перейдите в Subscriptions → выберите подписку → Access control (IAM) → Add role assignment.
Выберите роль Reader, найдите созданное приложение и назначьте.
Повторите для ролей Cost Management Reader и
Azure Kubernetes Service Cluster User Role.
Скопируйте идентификаторы
На странице App Registration скопируйте:
- Application (client) ID →
client_id - Directory (tenant) ID →
tenant_id
Из раздела Subscriptions скопируйте
Subscription ID → subscription_id.
Введите credentials в Oopps.ai
Перейдите в Oopps.ai → Коннекторы → Добавить коннектор → Azure.
Заполните поля формы и нажмите "Проверить подключение".
Поля формы
| Поле | Обязательное | По умолчанию | Описание |
|---|---|---|---|
tenant_id |
Да | — | Directory (tenant) ID из Azure AD |
client_id |
Да | — | Application (client) ID из App Registration |
client_secret |
Да | — | Значение client secret (отображается один раз при создании) |
subscription_id |
Да | — | UUID подписки Azure |
Возможные проблемы
| Симптом | Причина | Решение |
|---|---|---|
Ошибка 401 Unauthorized |
Истёкший client secret | Создайте новый secret в App Registration и обновите в Oopps.ai |
Ошибка 403 Forbidden |
Отсутствует назначение роли | Проверьте, что роль Reader назначена на подписке |
| Нет кластеров | Неверная подписка или нет AKS | Проверьте subscription_id и наличие AKS кластеров |
Биллинг: 403 |
Нет роли Cost Management Reader | Назначьте Cost Management Reader на подписке |
| Kubeconfig не загружается | Нет роли на AKS кластере | Назначьте Azure Kubernetes Service Cluster User Role на AKS |
Ошибка AADSTS700016 |
Неверный tenant_id или client_id |
Проверьте значения на странице App Registration в Azure Portal |
Ограничения
- Коннектор работает только с Azure Kubernetes Service (AKS). Self-managed кластеры на виртуальных машинах не обнаруживаются автоматически.
- Client secret имеет срок действия. По истечении срока подключение перестанет работать. Рекомендуется устанавливать срок не менее 12 месяцев и настроить напоминание о продлении.
- Биллинг через Cost Management API возвращает данные с задержкой до 24 часов. Данные за текущий день могут быть неполными.
- Для подписок с Enterprise Agreement (EA) или CSP доступ к Cost Management может требовать дополнительных настроек на уровне биллинг-аккаунта.
Используйте Azure CLI для быстрой проверки credentials перед вводом в Oopps.ai:
az login --service-principal \
--username CLIENT_ID \
--password CLIENT_SECRET \
--tenant TENANT_ID
az aks list --subscription SUBSCRIPTION_ID -o table