Latest / M365.FM – подкаст про Microsoft 365, Copilot і ШІ українською / ALM для Power Platform з GitHub Actions: вихідний код, збірка, тести й розгортання без вгадування (ШІ-дубляж)
Transcript
- 0:00Готові до 10-х днів Microsoft 365, Co-Pilot, She, Azure та людей, які формують майбутні роботи.
- 0:07Цього січня M365Con повертається, і ми стаємо ще масштабнішими.
- 0:12Приєднуйтесь до нас для живих сесій, реальних демо-версій та практичних знань від MVP та галузевих експертів з усього світу.
- 0:18Жодних загальних слайдів, жодних нескінчених модних слів.
- 0:22Ми вирішуємо реальні завдання Co-Pilot Studio, She-агенти, Fabric, безпека, управління та автоматизація.
- 0:29Незалежно від того, чи ви IT-фахівець, розробник чи бізнес-лідер, для вас знайдуться сесії.
- 0:35За 10 повних днів ви зможете дослідити різні технології та приєднатися до глобальної спільноти.
- 0:40Дивіться наживо та принесьте практичні ідеї у свою організацію.
- 0:44Січень 2027 – 10 днів, одна спільнота Microsoft. Реєстрація вже відкрита.
- 0:52Забронюйте своє місце сьогодні.
- 0:54Приєднуйтесь на M365Con.net і побачимося в січні.
- 1:04Ви коли-небудь відчували, що ваші розгортання Pava Platform – це чорна скринька.
- 1:08Ви випускаєте оновлення, затамовуєте подих і сподіваєтесь, що воно запрацює у розробці, тестуванні та продакшені.
- 1:14А що, якби ви могли контролювати кожен етап процесу ELM за допомогою GitHub Actions без припущень та ручних правок?
- 1:21Давайте відкриємо завісу того, як компоненти, контроль версій, автоматизація та безпечні змінні насправді взаємодіють.
- 1:28Це не просто черговий огляд. Це те, про що мовчать більшість інструкцій, щоб ваше наступне розгортання було передбачуваним.
- 1:35Отже, чому ELM у Pava Platform здається лабіринтом?
- 1:38Якщо ви хоч раз намагалися розгорнути Pava App і відчували невпевненість, ніби щось важливе вислизнуло, ви не одні.
- 1:45На папері Pava Platform обіцяє легку розробку додатків, але за цим дружнім фасадом ELM зовсім непроста.
- 1:53Веб-додаток розгортається з контролю версій, збирається в конвоїрі та потрапляє у продакшен з передбачуваною поведінкою.
- 2:00Pava Platform, навпаки, ховає логіку в інтерфейсах, екранах підключень та формулах, які не видно в репозиторіях DIT.
- 2:07Тож, навіть якщо ви виконуєте всі кроки з інструкцій для адміністраторів, ви все одно стикаєтеся зі збоями, коли важливі для бізнесу додатки залишають розробку.
- 2:17Давайте поглянемо на ELM-посібники, які існують сьогодні.
- 2:20Більшість з них показують лише експорт в ZIP-архіву рішення та його імпорт в інше місце.
- 2:24Досить просто, чи не так? Але це лише технічний бік справи.
- 2:27Вони пропускають відповідь на питання «Чому?»
- 2:29Чому розгортання Pava Platform ламається там, де звичайний код працює бездоганно?
- 2:33Ось що спричиняє нескінченну плутанину.
- 2:36Корінь проблеми в тому, що логіка, підключення та конфігурації в Pava Apps зберігаються не так, як класичний код.
- 2:42Ви не просто клонуєте репозиторі і спостерігаєте за модульними тестами.
- 2:45Тож, коли ви намагаєтеся перенести свій додаток, усі ці приховані залежності, підключення до Outlook, SharePoint, власні ARRI не завжди акуратно вміщуються в цей ZIP-файл.
- 2:54Ось такий сценарій.
- 2:55Ви запускаєте новий блискучий додаток у середовищі розробки, експортуєте рішення, імпортуєте в тестування і раптом потік перестає працювати.
- 3:02Це рідко буває, просто проблемою з файлом.
- 3:04Натомість підключення вказують не туди, права доступу не збігаються, а політики даних блокують з'єднання, які ще хвилину тому працювали нормально.
- 3:11Тепер уявіть, що ви робите це для трьох середовищ – розробки, тестування та продуктового, де кожне використовує різні підключення, політики захисту даних, схвалювачів та адміністративні обмеження.
- 3:21Ви не зможете просто скопіювати та вставити рішення, щоб усе запрацювало.
- 3:24Дослідження підтверджують те, що адміністратори та розробники бачать щотижня.
- 3:27Більшість невдалих розгортань у Pava Platform стаються через відсутні посилання на конектори або неправильне керування змінними середовища.
- 3:34Відсутність посилання на конектор означає лише те, що потік не може знайти своє підключення до Outlook чи Dataverse.
- 3:40Тому, як тільки ви намагаєтеся запустити додаток чи потік в іншому середовищі, ви отримуєте помилки під час виконання.
- 3:47І оскільки змінні середовища в Pava Platform працюють інакше, ніж в інших продуктах Microsoft 365, вони ставлять у глухий кут навіть досвідчених розробників.
- 3:55Змінні мають обробляти кінцеві точки, ключі або конфігурації, специфічні для орендаря.
- 4:00Але якщо хтось забуде оновити їх після експорту рішення, навіть безневинна на вигляд зміна може зламати робочий додаток.
- 4:06Багато хто з нас спочатку потрапляє в ту саму пастку.
- 4:09Можна подумати, що експорт зі IP-файлу рішення містить усе необхідне, але насправді він пропускає динамічні посилання на конектори.
- 4:14Наприклад, припустімо, у вас є додаток, який використовує HTTP-конектор для стороннього сервісу в розробці.
- 4:19Коли ви імпортуєте його в тестування чи продуктив, саме цей екземпляр конектора буде відсутній.
- 4:24Посилання на конектор у вашому додатку вказує на відсутній об'єкт, і потоки в рішенні тихо ламаються,
- 4:30доки користувач чи адміністратор вручну не відтворить і не перепризначить підключення.
- 4:34Якщо у вас більше одного розробника чи адміністратора, ще легше втратити розуміння, яке посилання куди веде,
- 4:40і ніхто не хоче розбору польотів у стилі, а в розробці все працювало.
- 4:44Ще одна складність – суб'єкти служби – сервіс принципал.
- 4:47Більшість починають із використання облікових записів користувачів для експорту та імпорту рішень, бо так швидше розпочати.
- 4:53Але коли ви намагаєтеся автоматизувати це через GitHub Actions або будь-яку CI-систему,
- 4:57використання особистих облікових даних швидко веде в глухий кут.
- 5:00Ви зіткнетеся з обмеженнями прав доступу, іноді без чітких повідомлень про помилки,
- 5:03або навіть спровокуєте перевірки відповідності, оскільки виконуєте критичні розгортання через персональний аккаунт,
- 5:08а не через спеціально створений для автоматизації.
- 5:10Сервісні принципалі, по суті ідентифікатори додатків, створені в Azure ID, опрацьовують усі дозволи, логування та аудит, необхідні вашому конвоєру.
- 5:19Без них ваш ланцюжок автоматизації перетворюється на клаптик передачі завдань між людьми, і ви ніколи не знаєте, хто і що змінив.
- 5:25Контроль версій також стає непередбачуваним.
- 5:28У звичайному коді у вас є історія комітів та інструменти відстеження змін.
- 5:31Файли рішень Pava Platform – це лише знімки стану, що означає відсутність детального відстеження змін.
- 5:37Логіка, прихована у формулах екранів Canvas-додатків або в погано задокументованих потоках, невидима, доки ви не експортуєте її знову.
- 5:44Хтось змінює налаштування потоку в інтерфейсі і спробуйте зрозуміти, чому подальші середовища раптом поводяться інакше.
- 5:50У підсумку, управління ALM для Pava Platform нагадує складання пазла, де половини частин не вистачає або вони заховані під коробкою.
- 5:57Невидимі залежності, специфічні для середовища конектори та змінні, які неможливо побачити в коді, порушують звичний робочий процес розробника.
- 6:06І це ще до того, як ви зіткнетеся з тим, що продуктивні середовища майже завжди мають суворіші дозволи, інші політики даних та вимоги аудиту неочевидні під час розробки чи тестування.
- 6:16Але ось у чому перевага.
- 6:18Ця складність не випадкова.
- 6:20Є практична причина, чому Pava Platform обробляє джерела, змінні та конектори таким унікальним способом.
- 6:26Вона намагається дозволити бізнес-користувачам створювати потужні додатки, не переймаючись кодом.
- 6:32Побічним ефектом є те, що вам, як людині, яка налаштовує автоматизацію, потрібно стежити за тим, що приховано під капотом.
- 6:38Якщо ви знаєте, де проходять ці невидимі зв'язки, ви зможете виправити або уникнути більшості проблем, що гальмують ALM у Pava Platform.
- 6:46Якщо все це звучить як занадто багато справ одночасно, ви маєте рацію.
- 6:50Але є чотири стовпи ALM, які дійсно допомагають розплутати цей хаос.
- 6:53Джерело, збірка, тестування та розгортання.
- 6:56Кожен з них має свої особливості в Pava Platform, але разом вони повертають структуру в те, що інакше здається хаосом.
- 7:02Основна система ALM – джерело, збірка, тестування, розгортання.
- 7:05Щоразу, коли хтось просить конвейер Pava Platform, який просто працює, на думку спадають ці чотири старі стовпи ALM, джерело, збірка, тестування, розгортання.
- 7:15У традиційній розробці ви могли б робити це майже з заплющеними очима.
- 7:19Pava Platform не дозволяє вам так легко відбутися.
- 7:21Раптом, джерело вже не означає код.
- 7:24Це означає роботу з файлами рішень, експорту архівних пакетів із додатками, потоками та іноді конекторами, що вдають із себе частину джерела.
- 7:33Почнемо з основ, а потім розберемо, що робить кожен стовп таким дивним у цьому світі.
- 7:38Ви маєте свій ZIP-файл рішення.
- 7:40Це не код у звичному розумінні.
- 7:42Відкрийте його, і ви побачите файли XML та JSON, а не логіку, яку ви очікували б знайти в TypeScript чи C.
- 7:48Але це і є вихідний код для Pava Platform.
- 7:50Команди часто припускаються тут помило.
- 7:53Він здається портативним, доки ви не зрозумієте, що більшість змін, як от оновлення формули чи логіки потоку,
- 7:58стають помітними лише після експорту свіжого ZIP-архіву рішення.
- 8:02Тож так, ви можете версію оновити ці файли рішень у GIT, але якщо ви не будете дисципліновано експортувати їх після кожної важливої правки,
- 8:08ваша історія матиме серйозні прогалини.
- 8:10Тепер переходимо до конфігурації.
- 8:12Для звичайних програм ви можете зберегти рядки підключення у файлі конфігурації і на цьому завершити.
- 8:17Pava Platform приховано переносить дані, специфічні для середовища, всередину цих рішень.
- 8:21Це не лише змінні середовища, це посилання на конектори, динамічні кінцеві точки, ролі та дозволи, зібрані разом із бізнес-логікою.
- 8:29Якщо ви забудете оновити їх перед експортом із середовища розробки чи тестування, ви зафіксуєте посилання на неправильні ресурси.
- 8:36Я бачив, як команди сумлінно комітять свої ZIP-файли рішень, лише щоб після розгортання виявити,
- 8:41що половина програми досі звертається до датаверс середовища розробки, а не продуктового, бо ніхто не переналаштував посилання на конектори.
- 8:47Далі у нас етап збірки – білд. Слово «збірка» зазвичай викликає асоціації з компіляцією коду та спостереженням за зеленими галочками в CI-завданнях.
- 8:56У Pava Platform процес збірки полягає в збереженні ZIP-пакетів, перевірці схем та підтвердженні залежностей.
- 9:02У конвоєрі GitHub Actions завдання збірки бере ваш зафіксований файл рішення,
- 9:06а потім використовує Microsoft Pava Platform CLI для розпакування, перевірки та повторного пакування рішення.
- 9:11Етап перевірки – це те місце, де стається магія або хаос.
- 9:17Гірше того, якщо зміни у вашому потоці залежать від спеціального коннектора, якого немає в системі контролю версій,
- 9:24ваша збірка мовчки запакує щось неповне. Ось тут усе стає складним.
- 9:28Ці завдання збірки спрямовані не на компіляцію, а на забезпечення надійного експорту та гарантію того, що вміст готовий до випуску.
- 9:35Команди, які пропускають або поспішають із цим, швидко опиняються в ситуації, коли збірка технічно вдала,
- 9:41але в UIT або продакш не потрапляє продукт без половини потрібних функцій.
- 9:44Microsoft продовжує просувати ідею, що файли рішень роблять ALM портативним, але завжди є примітка.
- 9:50Портативність залежить від того, чи правильно налаштовані коннектори та чи встановлені ролі в різних середовищах.
- 9:55Тестування – це наступний етап.
- 9:57У конвоєрі веб-програми автоматизовані тести можуть включати модульні тести або перевірку інтерфейсу.
- 10:02Для PAWA платформ питання того, що вважати тестом, залишається відкритим.
- 10:06Іноді це перевірка рішення іншими словами, чи відкривається рішення і чи вирішуються ключові залежності.
- 10:12В іншому разі це запуск тестових потоків або перевірка того, чи відповідають коннектори в тестовому середовищі.
- 10:18Часто тестування є ручним, оскільки перевірка бізнес-логіки всередині Canvas-додатків ще не інтегрована в автоматизовані конвейери.
- 10:25Але ви можете автоматизувати перевірки для виявлення відсутніх коннекторів, валідації критичних потоків або навіть пінгу тестового середовища,
- 10:31щоб підтвердити роботу облікових даних.
- 10:33Розгортання лише посилює ці труднощі.
- 10:35Коли розгортається стандартний додаток, ви можете просто завантажити веб-артефакт у Azure.
- 10:40У Power Platform потрібно налаштовувати підключення, призначати дозволи оновлювати секрети, змінювати змінні середовища
- 10:45і нарешті запускати імпорт через суб'єкт службу, а не через звичайний обліковий запис.
- 10:49Інакше ви зіткнетеся з аудитами та відмовами у доступі.
- 10:53GitHub Actions може об'єднати цей процес, але лише якщо кожне завдання знає, на яке середовище спрямоване і які секрети використовувати.
- 11:00Я бачив, як команди намагалися прискорити це, використовуючи один набір облікових даних для розробки та продуктивного середовища,
- 11:06що веде до хаосу, витоку даних, помилок доступу та проблем, які з'являються лише в одному середовищі.
- 11:10Візьмемо реальну команду, з якою я працював кілька місяців тому.
- 11:13Вони робили майже все правильно – стандартні діт-репозиторії, версійні зіп-архіви рішень та чітке розгалуження.
- 11:18Але їхній конвейер завжди зупинявся під час розгортання.
- 11:21Чому?
- 11:21Вони ніколи не змінювали змінні середовища і не оновлювали посилання на конектори перед імпортом у продуктивне середовище.
- 11:26Це призводило до того, що ключові потоки вказували на неправильні кінцеві точки, а дані потрапляли не в ті системи.
- 11:31Вирішенням стали скриптові кроки в їхньому діт-хаб-конвейері, які змінювали змінні та перепризначали кожен конектор під час імпорту.
- 11:38Власні рекомендації Microsoft говорять про це прямо.
- 11:40Ви користовуйте файли рішень для переміщення об'єктів між середовищами, але завжди опрацьовуйте посилання на конектори та зіставлення ролей як частину вашого конвейера.
- 11:48Вони зазначають, що ігнорування цих кроків – це головна причина поломок додатків, особливо коли середовища стають більш захищеними.
- 11:54Якщо розглядати вихідний код, збірку, тестування та розгортання як взаємопов'язані частини, а не як ізольовані етапи,
- 12:00стає зрозуміло, чому багато спроби ALM провалюються і як можна реально усувати проблеми, а не просто сподіватися на успіх.
- 12:06Далі давайте розберемося, як GitHub Actions координує цей процес, тригери, розгалуження та розділення завдань,
- 12:13які роблять вашу автоматизацію PAVA Platform гнучкою та безпечною.
- 12:17GitHub Actions поєднуємо все разом за допомогою тригерів та завдань.
- 12:20Якщо ви чекали завершення конвейера GitHub Actions після оновлення свого PAVA App,
- 12:24ви вже знаєте, що автоматизація не означає миттєвість і точно не означає магію.
- 12:29Більшість команд стикаються з цією стіною відразу після захоплення від першого запуску робочого процесу.
- 12:33Ви налаштовуєте скрипт, підключаєте його до свого репозиторію і очікуєте,
- 12:38що кожен новий коміт буде чисто розгортатися в усіх середовищах.
- 12:41А потім настає реальність.
- 12:43Замість простого запуску сценарію, GitHub Actions використовує логічний ланцюжок,
- 12:47побудований навколо тригерів, завдань і передачі даних між середовищами.
- 12:51Саме цей порядок і структура не дають розгортанням перетворитися на клубок невдалих кроків і дивних помилок.
- 12:56Відправною точкою в цій системі є тригер.
- 12:59Більшість новачків створюють робочий процес, який запускається під час кожного пушу
- 13:04або коли запит на злиття потрапляє в головну гілку.
- 13:07На перший погляд, це виглядає як найкраща практика.
- 13:10Чому б не запускати конвейер щоразу, коли в роботі з'являються зміни?
- 13:12Ось у чому підвох.
- 13:14Коли ви встановлюєте тригер лише на головну гілку, усе спрямовується одним шляхом.
- 13:17А що, як зміни потрібно застосувати лише до середовища розробки, а не до тестового чи продуктового?
- 13:20Що, як ви готові до випуску в прод, але тест ще виконує перевірку?
- 13:24Команди, що використовують універсальні тригери, часто стикаються з проблемами,
- 13:28коли функції для розробки потрапляють у прод або тестові розгортання,
- 13:32раптово перезаписують налаштування продакшну.
- 13:35Ви можете розгалужувати робочі процеси для кожного середовища,
- 13:38дев, тест і прод, і налаштовувати для них дуже специфічні тригери.
- 13:42Наприклад, налаштуйте робочий процес, який запускається лише при пушах у гілку розробки,
- 13:47або інший процес, коли хтось робить злиття в гілку релізу продакшну.
- 13:50Це дає більше контролю та чітко розмежовує поточну роботу і робочі зміни,
- 13:54але багато команд ніколи не переглядають свої тригери після створення.
- 13:58Саме так секрети з одного середовища можуть просочитися в інше,
- 14:02а конфігурація для розробки випадково опинитися в продакшні.
- 14:05Одна команда, з якою я працював, намагалася виконувати весь свій ELM-процес через один робочий процес.
- 14:10Якийсь час усе було добре, поки хтось не помітив,
- 14:13що рядок підключення до робочої бази даних з'явився в середовищі розробки.
- 14:17Вони не усвідомлювали, що їхні секрети стають спільними для різних завдань.
- 14:21І як тільки код переміщувався між середовищами, ці секрети витікали разом із ним.
- 14:24Це не було очевидною критичною помилкою.
- 14:27Це відбувалося тихо.
- 14:28Такі витоки даних трапляються частіше, ніж ви думаєте,
- 14:30особливо якщо ви не налаштовуєте робочі процеси для розділення секретів і змінних середовища.
- 14:34Кожне завдання в робочому процесі GitHub Actions відповідає за чітко визначену частину процесу.
- 14:40Одне завдання може відповідати за експорт рішення з вихідного середовища.
- 14:44Інше займається перевіркою, розпакуванням, скануванням метаданих,
- 14:48перевіркою залежностей і наявністю посилань на конектори.
- 14:52Далі йде завдання, яке готує змінні середовища, адаптуючи рішення під цільове середовище.
- 14:58Останнє завдання запускає процес імпорту, використовуючи сервісні принципи для запису змін у потрібне середовище.
- 15:05Можна подумати, що змінні середовища та секрети – це прості заповнювачі,
- 15:09але на практиці вони є клеєм, що тримає все разом.
- 15:12Рядки, підключення, ключі АРІ, спільні паролі – усе це потрібно змінювати між завданнями,
- 15:16але вони ніколи не повинні виходити за межі встановлених кордонів.
- 15:20У Pava Platform ALM ви можете мати окреме підключення до Dataverse для кожного середовища
- 15:24або потребувати заміни кінцевих точок залежно від того, на який потік чи Pava App ви спрямовані.
- 15:29Якщо ви повторно використовуєте змінні або жорстко кодуєте секрети,
- 15:32ви отримуєте або ненадійний конвейер, або, що гірше, значні ризики для безпеки.
- 15:36Процес імпорту залежить від отримання секретів лише з відповідного сховища,
- 15:40щоб робоче середовище не наражалося на небезпеку через помилки в тестуванні чи розробці.
- 15:44Вдала ментальна модель для секретів у Dithub Actions – уявити,
- 15:47що кожне середовище має власне цифрове сховище, закриту скриньку, яку бачить лише потрібні завдання.
- 15:53Dithub надає вам точні засоби контролю.
- 15:55Ви можете обмежувати секрети середовищами, щоб завдання, яке виконується в розробці,
- 15:59не мало доступу до облікових даних робочого середовища і навпаки.
- 16:02Налаштуйте ці сховища, і навіть якщо хтось, хто коригує конвейер, спробує щось ризиковане,
- 16:07правила захисту середовища не дадуть помилці поширитися.
- 16:10Документація Microsoft і Dithub постійно наголошують на цьому.
- 16:13Вони рекомендують правила захисту середовища та суворе розмежування секретів,
- 16:17щоб зупинити витоки між середовищами ще до їх виникнення.
- 16:20Без такого захисту навіть найкраще розроблені робочі процеси ЕЛМ руйнуються.
- 16:24Уявіть робочий процес, що розгортається в робочому середовищі,
- 16:27але при цьому використовує рядок підключення для розробки
- 16:30або має тестове середовище з доступом до робочих даних.
- 16:32Це не завжди призводить до видимих поломок.
- 16:35Іноді це означає лише спрацювання прапорців відповідності
- 16:37або заповнення журналів прихованими помилками,
- 16:39які поступово накопичуються у більші проблеми.
- 16:41Ось чому розгалуження робочих процесів та розмежування секретів –
- 16:44це не просто складні теми.
- 16:45Це запобіжний захід, який не дає вашій автоматизації непомітно вийти з ладу.
- 16:49Також є сенс розділяти робочі процеси не лише за середовищем,
- 16:52а й за сферою відповідальності.
- 16:54Код, який експортує та перевіряє рішення,
- 16:56не повинен знати, як розгортати чи замінювати секрети.
- 16:59Якщо кожне завдання відповідає за одну частину головоломки,
- 17:03стає набагато легше виявити, де щось зламалося,
- 17:05відкотитися назад і перевірити зміни постфактум.
- 17:08Секрети залишаються у своїх сховищах,
- 17:10завдання дотримуються чітко визначених прав доступу,
- 17:12а збої в конвоєрі прямо вказують на ту частину, яку потрібно виправити.
- 17:16Розуміння того, як GitHub Actions передає роботу від одного завдання до іншого,
- 17:20зберігаючи при цьому секрети суворо обмеженими,
- 17:22а тригери – чітко визначеними,
- 17:24перетворює ALM зі сподіваного експерименту на надійну,
- 17:27безпечну та передбачовану практику.
- 17:29Ця сегментація робочих процесів – це не просто дотримання найкращих практик.
- 17:33Це те, що блокує тихі витоки безпеки та випадкові перезаписи,
- 17:37усуваючи цілий клас невидимих помилок,
- 17:39перш ніж вони почнуть шкодити вашим середовищам.
- 17:42Тепер, коли всі частини працюють злагоджено завдяки належним чинам
- 17:45налаштуваній автоматизації, настав час розв'язати іншу проблему.
- 17:49Конектори, сервісні принципалі та дрібні, але критичні пастки,
- 17:52що можуть зупинити ваше розгортання саме тоді, коли ви стаєте впевнені.
- 17:56Таємні сервісні принципалі та проблеми з конекторами.
- 18:00Якщо ви коли-небудь намагалися перенести Pava App або Flow з розробки в продакшні,
- 18:04ви знаєте цю історію.
- 18:05Все працює бездоганно в одному середовищі,
- 18:08а як тільки ви перемикаєтесь, все зупиняється або видає загадкові помилки підключення.
- 18:12Це не унікальна проблема конкретної команди.
- 18:15Кожен адміністратор Pava Platform рано чи пізно впирається в цю стіну.
- 18:19Корінь проблеми полягає в тому, як конектори та секрети поводяться за лаштунками.
- 18:24Ви не можете просто експортувати зіп-архів рішення з розробки
- 18:27і очікувати, що він запрацює де-інде,
- 18:29бо зв'язки, від яких він залежить, змінюються з кожним середовищем.
- 18:33Візьмемо для початку посилання на конектори.
- 18:35У Pava Platform Connector це ніколи не просто статичний набір даних,
- 18:39вшитий у ваш додаток.
- 18:40Він динамічний, змінюваний і часто унікальний для кожного середовища.
- 18:44Коли ви експортуєте своє рішення, посилання на конектори діють майже як закладки.
- 18:48Вони вказують на об'єкти підключення, які існують лише в тому середовищі, де вони були створені.
- 18:52Тому при імпорті в тестове або робоче середовище,
- 18:55ваш вишуканий HTTP endpoint або посилання на Dataverse не обов'язково відтворяться так само або взагалі.
- 19:00Ось тут команди і потрапляють у пастку.
- 19:03Якщо розробка використовує конектор для тестових даних,
- 19:07а та сама конфігурація не відображена в продакшні,
- 19:09ваш потік або додаток або тихо збоїть або зависає при першій спробі підключитися.
- 19:16Багато хто намагається обійти це, ділячись обліковими даними користувачів між середовищами.
- 19:21Вони вважають, якщо використовувати той самий аккаунт або пароль,
- 19:23що створив підключення в розробці, можливо, воно просто запрацює в продакшні.
- 19:27Реальність така, що це створює купу проблем від відмови у правах до спрацювання аудиту відповідності.
- 19:32Власні настанови Microsoft чіткі, використання особистих облікових даних користувачів
- 19:36для автоматизованих розгортень не є життєздатним або безпечним.
- 19:39Це ставить вашу автоматизацію в залежність від скидання паролів
- 19:42і може залишити нечіткий слід у журналах аудиту.
- 19:44Відсутня чітка підзвітність і згодом права доступу блокують конвейер,
- 19:48коли початкового користувача позначають, видаляють або він втрачає доступ.
- 19:52Час звернутися до сервісних принципалів Service Principles.
- 19:55Якщо ви з ними не працювали, уявіть сервісний принципал як цифрову додаткову пару рук,
- 19:59спеціально створену для автоматизації.
- 20:01На відміну від звичайного користувача, сервісний принципал прив'язаний до реєстрації додатка в Azure ID,
- 20:07а не до реальної людини.
- 20:08Ви надаєте йому мінімальні дозволи, необхідні для виконання ваших завдань з розгортання.
- 20:12Це звучить просто, але віддача величезна.
- 20:15Замість того, щоб покладатися на користувача, який може піти з організації чи змінити посаду,
- 20:19розгортання залишаються послідовними, контрольованими та відстежуваними.
- 20:22Кожне середовище отримує доступ лише до потрібних підключень і ресурсів,
- 20:25а всі зміни реєструються під цим обліковим записом робота.
- 20:28Коли щось йде не так, у вас залишається чіткий контрольний журнал,
- 20:31і ви не залишаєтеся з покинутими потоками, які нікому виправити.
- 20:34Щодо проблеми зі ставлення конекторів, подумайте, що стається, коли середовища починають відрізнятися.
- 20:40Можливо, команда розробників отримала схвалення на новий власний конектор.
- 20:43Припустімо, він звертається до пісочниці Арі.
- 20:46Коли настає час переходу до продуктивного середовища, цей конектор не лише зникне.
- 20:49Можливо, політики безпеки даних організації його навіть не дозволять.
- 20:52Якщо забути переналаштувати зі ставлення, програма звернеться до неправильної кінцевої точки або взагалі зламається.
- 20:58Нещодавно я бачив, як це боляче вдарило по одній медичній групі.
- 21:01Одне пропущене зі ставлення конектора призвело до використання тестових даних у продуктивному середовищі,
- 21:05що ледь не спричинило інцидент із порушенням відповідності.
- 21:07Їхній автоматизований конвейер експортував усе, як планувалося,
- 21:11але посилання на конектор у рішенні все ще вказувало на стару тестову базу даних,
- 21:15яку Pava Platform не позначила, поки реальні дані не почали текти не тими каналами.
- 21:19Змінні середовища допомагають полегшити частину цих проблем.
- 21:23На відміну від жорсткого кодування кінцевих точок або ключів Арі,
- 21:25змінні середовища дозволяють відокремити те, що змінюється залежно від середовища,
- 21:29від того, що залишається незмінним.
- 21:31Ви можете замінювати кінцеві точки, ключі Арі чи інші секрети під час кожного розгортання,
- 21:35не переписуючи програму чи потік.
- 21:37Наприклад, потік, що працює з таблицею Dataverse для розробки,
- 21:41можна при імпорті переналаштувати на продуктивну таблицю,
- 21:44просто змінивши змінну середовища під час розгортання.
- 21:47Конвейери GitHub Actions роблять це реальним.
- 21:50Кожне завдання може вставити правильне значення в потрібний момент.
- 21:53Але навіть тут дисципліна – це головне.
- 21:55Забудьте оновити змінну або дозвольте секретам витокнути між середовищами,
- 22:00і ваш робочий процес раптово стане вразливим.
- 22:03Microsoft наголошує на необхідності ретельного обмеження області секретів
- 22:06та усвідомленого зіставлення посилань на конектори.
- 22:09Їхні політики DLP, запобігання втраті даних, існують недаремно,
- 22:13щоб конфіденційна інформація не блукала між середовищами
- 22:16і не з'являлася в недозволених місцях.
- 22:18Якщо ви спробуєте обійти це через спільне використання змінних чи підключень,
- 22:21ви зіткнетеся з проблемами корпоративної безпеки чи контролю відповідності.
- 22:26Важливіше те, що ви втрачаєте передбачуваність, адже зникає межа між тим,
- 22:30що призначено для розробки, тестування чи продуктивного використання.
- 22:33Важко переоцінити користь, яку ви отримуєте, коли робите все правильно.
- 22:37Сервісні принципи в поєднанні з добре налаштованими змінними середовища
- 22:40та правильно зіставленими конекторами трансформують ваш конвейер.
- 22:42Ваші розгортання стають передбачуваними.
- 22:45Коли щось ламається, ви маєте чіткий ланцюг відповідальності
- 22:51Аудитори можуть відстежити зміни і немає жодних несподіванок,
- 22:55коли хтось звільняється або змінює паролі.
- 22:57Все зводиться до того, щоб ставитися до секретів, конекторів та сервісних принципів
- 23:01як до важливих елементів.