This article gives a good rundown of the security risks of Windows Recall, and the repurposed copyright protection took that Signal used to block the AI feature from scraping Signal data.
Many years ago, maybe around 2017 or 2018, one of my ex-colleagues (Hi, Kevin!) said that I would probably even use Zabbix to come up with the winning lotto numbers. Just to strike back, I did exactly that with a small “easter egg” in Zabbix containing the lotto numbers – a quick bash script feeding the Zabbix item.
Let’s return to that topic, but use a Zabbix Script item type instead. Also, let’s take a look at few other details that help with monitoring.
Let’s create a host and a new template
To begin with, I created a new template and a new host. Here’s the host, nothing more needed than a name and my fancy template:
The template has only one item:
For the script, here’s what ChatGPT came up with. JavaScript is not my strongest skill, so for a fun little experiment this AI vibe coding should be good enough.
// Generate an array of numbers from 1 to 40var numbers = [];for (var i = 1; i <= 40; i++) { numbers.push(i);}// Shuffle the array using the Fisher-Yates algorithmfor (var i = numbers.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp;}// Select the first 7 numbers from the shuffled arrayvar lotto = numbers.slice(0, 7);// Optionally sort the selected numberslotto.sort(function(a, b) { return a - b; });// Return the lottery numbers as a space-separated stringreturn lotto.join(" ");
So, that’s it! Well, almost – to stop Zabbix from coming up with new numbers all the time, here’s a very nice feature of Zabbix.
Custom intervals
If you set your Update interval to 0, you can use Custom intervals. This way, the new numbers will only be generated once per week every Monday at 8:00 to kick off your work week (assuming that your country has the lotto only once per week, of course).
Naturally, in the actual business world, this kind of exact scheduled monitoring can be extremely helpful as well. If you have something you don’t need to check all the time but only during business days and hours, or only on weekends, or only once per day, this is a handy way of doing it.
Does it work?
You know the answer — of course it does! Now when I search for “lotto”, click on “Latest data” and force the check to happen immediately by clicking on “Execute now”, this happens.
Time to dashboard it
I could peek at the values from Latest data, but that would be boring. With a dashboard, it’s a bit more entertaining…
I hope this post gave you some new ideas or maybe even introduced you to Script item type. If you win some major money with this trick, don’t forget to buy me a coffee!
Лидерът на ГЕРБ Бойко Борисов наистина е добър пожарникар. В политическия смисъл на думата.
Борисов използва един пожар в контролирана среда (6-дневната стачка на градския транспорт), дима и пяната за потушаването му за демонстрация на „можачите“ и „неможачите“ в местната власт. Едва ли има български гражданин, който да не е разбрал, че ГЕРБ иска да си върне София, която изгуби през 2023 г., след като я управлява от 2005 г. (най-напред самият Борисов, а после и създадената с Цветан Цветанов ГЕРБ).
Защо не и Варна…
Неприятелска среда
Атаките започнаха след окончателното разваляне на сглобката – кабинета с премиер Николай Денков, подкрепян от ПП–ДБ, ГЕРБ–СДС и ДПС, и с идването на служебното правителство на Димитър Главчев, представител на кастата гербократи в държавната администрация. Миналото лято вече известното икономическо мнозинство в Столичния общински съвет (СОС) придоби ясни очертания – ГЕРБ–СДС, БСП и ИТН плюс двама отцепници от „Възраждане“ и един от ВМРО, обединили се за смени без конкурси на бордовете на шест ключови общински фирми: „Топлофикация София“, „Софинвест“, „Метрополитен“, „Център за градска мобилност“ (ЦГМ), „Столичен автотранспорт“ и „Столичен електротранспорт“. Не че предишните бордове, сменени през 2021 г., при това с конкурси, не бяха на ГЕРБ (и по някой и друг за БСП и СДС). Новите съюзи обаче изискват и нови персони.
Създаденото няколко месеца по-късно правителство утвърди този модел, към който се притури и ДПС – Ново начало с Делян Пеевски.
Така четиримата кметове, които ПП–ДБ успя да спечели на последните местни избори (освен в София и Варна, в Благоевград и Пазарджик) управляват в неприятелска среда, утежнена за кмета на столицата от проблемите на единствения български мегаполис.
Дали правителството и кметът са в един и същ партиен лагер, е фактор, който винаги е имал значение в България. За щастие на учителката Йорданка Фандъкова, изпълнителната власт беше изцяло в ръцете на ГЕРБ, докато тя управляваше София четири мандата, а главните прокурори… Знае се кой ги избираше.
През годините изпълнителната власт често се е държала като мащеха към кметове от противниковия политически лагер и това до голяма степен се дължи и на децентрализацията, която все не се случва. За реализация на различни инфраструктурни проекти във ВиК сектора или в транспорта кметовете разчитат на правителството. Дори София, която допринася за 43% от брутния вътрешен продукт, разчита на европейските средства за строителството на метрото, за модернизацията на градския транспорт, за ВиК проекти, за завода за преработка на отпадъци, за облагородяването на столичния център и др.
Това е и едно от обясненията за „приобщаването“ на кметове на общини към формулираната от Делян Пеевски „Стратегия за ново начало за развитие на регионите“. Санкционираният от САЩ и Великобритания за корупция държи вече 40 кметове и крепи правителството, без да носи отговорност, но на определена цена.
Към некомфортната за кметовете на ПП–ДБ среда се прибавя и липсата на мнозинства в общинските съвети. Това улеснява затягането на примката около кметовете. Целта е не просто да се предизвикат оставките им, а да се покаже, че избраните с номера на ПП–ДБ местни управници не се справят. „Неможач“, както Борисов нарече кмета на София. А тази седмица направо му каза да подаде оставка, ако не намери мнозинство:
Ако кметът на София Васил Терзиев не може да си намери мнозинство и за всяко нещо си търси оправдание, да си подаде оставката и да се направят избори…
Един кмет няма много полезни ходове, когато работи без мнозинство в общинския съвет. Трябва да търси тематични мнозинства по отделни приоритети. В противен случай не може да реализира никакви политики.
Най-тежко е в София, където гърбът зад Терзиев съвсем се смали, след като остана със съюзник по-малко. Партия „Спаси София“ сне доверието си от него, а общинските ѝ съветници се отделиха в група и напуснаха коалицията с ПП–ДБ. Кметският екип така и не излезе с предложения за реформи въпреки заявеното в предизборната кампания, че идва с решенията и с хората, които да ги реализират. Управленската програма бе сведена до екстракт от предизборни обещания без срок и конкретика, с едни 19 приоритета.
Политически играч?
В края на 17-тия месец управление Васил Терзиев и екипът му не са произвели значим пробив, който да покаже капацитет за управление в трудна среда и предложения за реформи, а не просто оцеляване в институционален капан. Кметът избра за главен архитект в спорен конкурс спорна фигура като Богдана Панайотова, след като до юли миналата година запази на поста Здравко Здравков от времето на ГЕРБ.
В оставащия му малко повече от половин мандат изходът за Терзиев е да се активизира като политически играч, макар това да е роля, в която не се чувства удобно. В пресата, в която е приклещен, той трябва или да се бие като политик (защото, ако изгуби, по-значима ще е загубата за ПП–ДБ), или да преговаря за мнозинства. А това значи да се договаря лично с Бойко Борисов. Склонен ли е?
До настъпването на транспортната криза, когато за броени дни даде интервюта в трите големи телевизии, той рядко се появяваше публично, а екипът му капсулираше и режисираше еднопосочно комуникацията чрез постове в социалните мрежи. След като кризата временно се разреши с отпуснатите 15 млн. лв. от правителството, Васил Терзиев отново се завърна във Facebook, където обяви, че „София не е сделка, София е кауза“, и уведоми, че детските градини в столицата ще работят и през лятото.
Факт е, че той избягва конфликтните ситуации и впускането в политически атаки, затова за ПП–ДБ ще е трудно да изковат от него острие в „битката срещу мафията“. По време на транспортната стачка събралите се в негова подкрепа стотици граждани на „Московска“ 33, сред които и лидери на ПП–ДБ, показаха, че градската либерална общност бързо се обединява и срещу рекета на Борисов.
Но не трябва да се забравя, че за Терзиев не беше лесно на балотажа. Победи синдикалистката Ваня Григорова (БСП) с 4786 гласа. Тя оспорва изборите, а неотдавна делото бе върнато на първа инстанция от Върховния административен съд. Стигне ли се до предсрочни местни избори в София, ГЕРБ няма да издигне отново бившия журналист Антон Хекимян, който не стигна и до балотаж и посрами най-голямата партия. Хекимяновата номинация от 2023 г. изглеждаше като издигането на неконкурентната и непопулярна Цецка Цачева срещу военния летец Румен Радев на президентските избори през 2016 г.
Трите „кита“ – транспорт, сметосъбиране, застрояване – са на път да се стоварят върху Терзиев. Ако държавата в лицето на правителството на Росен Желязков откаже, няма как Столичната община да реши и проблема с „Топлофикация“, чиито дългове към „Булгаргаз“ надхвърлят 2 млрд. лв. Самият Терзиев неотдавна заяви по БНР, че ще се търсят и законодателни промени, за да бъде оздравено дружеството:
Искаме да намерим решение, но трябва да работим с държавата, за да преструктурираме дълга и да се направят някои поправки, за да може да се предложи нещо разумно на един бъдещ инвеститор. Трябва да се възложат одити и да се прецени дали ще се върви в посока на концесия, или на някакви алтернативни форми на оздравяване.
Но кметът няма думата не само за общинските фирми, чийто принципал е СОС. Комисиите в СОС се управляват и контролират от икономическото мнозинство, което на 29 май може да блокира приемането на бюджета на столицата за 2025 г. за 2,84 млрд. лв.
Какво означава това? Столичната община е натрупала над 100 млн. лв. задължения заради неприетия бюджет, в това число и към фирми, които почистват града. Те вече заплашиха, че ще спрат сметоизвозването в 8 от 24-те столични района, а кметът съобщи във Facebook, че след транспортната се подготвя втора криза – този път с боклука.
Скъпи софиянци, готвят ни следващата криза. По-голяма от тази с транспорта. Този път залогът е половин милиард лева, които трябва да бъдат похарчени прозрачно и отговорно през следващите 5 години!
Но най-напред подчинената на Финансовото министерство Агенция по обществени поръчки трябва да пусне обществените поръчки за сметосъбирането, а тя… не го прави. Терзиев даде три дни на Министерството на финансите, за да приключи процедурата, но оглавяваното от Теменужка Петкова ведомство е глухо за кметски ултиматуми.
За проблемите с обществените поръчки за сметосъбирането обаче гражданите на София научиха едва сега. А Терзиев и екипът му не се и опитаха да предизвикат дебат за състоянието на общинските транспортни фирми, от които само ЦГМ е на печалба. „Метрополитен“ и стачкуващият авто- и електротранспорт от години са на загуба. Депутатите на ПП–ДБ можеха да направят видимо безконтролното изливане на средства – за 2024 г. 505 млн. лв. плюс 89 млн. лв. държавна субсидия, да предизвикат проверки и изобщо да се получи една силна политическа акция, но столичният кмет не следва партийните нужди. Докато ГЕРБ управляваше, харченето на публичните средства беше на тъмно. Сметната палата провери ЦГМ през 2017 г. и установи редица нарушения. Агенция „Държавна финансова инспекция“ също констатира нарушения при свои еднократни проверки през септември 2023 г.
В половината от проверените обществени поръчки на Столична община за периода 01.01.2018 г. – 31.12.2021 г., за ремонт на централната градска зона, има съществени нарушения, както и установени индикатори за измама. Процедурите и договорите се отнасят за Централна градска част на град София – Зона 4, включваща изграждане, възстановяване и обновяване на следните обекти: пл. „Народно събрание“, бул. „Цар Освободител“, част от бул. „Васил Левски“, пл. „Васил Левски“, част от ул. „Московска“, част от ул. „Г. С. Раковски“, пл. „Ал. Невски“, част от ул. „Париж“, част от ул. „Оборище“, градините около храм-паметника „Ал. Невски“, храм „Св. София“, пред Синодалната палата и около паметника на Иван Вазов, райони „Средец“ и „Оборище“, Столична община…
Не последваха санкции. Прокуратурата, по условен рефлекс, не реагира.
Новият екип на Васил Терзиев в Столичната община не промени тази стабилна традиция. Кметът няма правото да предизвика, но от него се очакваше да разкрие (или да покаже упорити и настойчиви опити за това) наследството на ГЕРБ. Дори не опита.
Има и друго съображение: през 2023 г., когато бяха местните избори, вече работеше правителството на Николай Денков, тоест на ПП–ДБ и ГЕРБ, и нямаше как да се вадят кирливите ризи на управлението на София от коалиционните партньори.
Бойното поле
Във втората година след местните избори столицата се превръща в бойно поле. ГЕРБ и ПП–ДБ влизат в сблъсък за контрола над София: едните – за да си върнат кметския пост, другите – за да не го загубят (защото не могат да си го позволят).
Политическата офанзива мобилизира и двете страни. ГЕРБ действа в типичния си стил – помпа кръв в бицепсите и показва кой държи хляба, ножа и моркова.
ПП–ДБ имат шанс да се заявят като реална опозиция, след като в парламента не подкрепят вотовете на недоверие заради очакваните на 4 юни конвергентни доклади за готовността на България за еврозоната. А и още търпят последствията от сглобяването с Борисов и Пеевски. София остава тяхната енергийна и избирателна база – имат 18 от 24 районни кметове, а трите избирателни района им осигуриха 14 от 36-те народни представители на парламентарните избори през октомври миналата година. Така че залогът за тях е много по-голям, отколкото за Васил Терзиев.
А какво ще прави самият Терзиев? Всички знаят, че постът на столичен кмет е повече от местна власт – това е трамплин в политиката. Румънецът Никушор Дан, управлявал Букурещ, стана президент. В Полша Рафал Тшасковски, бивш кмет на Варшава, води президентската надпревара след първия тур. Борисов също тръгна от „Московска“ 33.
Но дали икономистът, развил софтуерен бизнес за милиони, може да бъде политик? Отговорът на въпроса е свързан с бъдещето на ПП–ДБ. И с управлението на пожарите.
Мария Методиева е визионерка, застъпничка на ромите и социално-икономически уязвимите. Тя е директор „Институционални партньорства“ в „Тръст за социална алтернатива“ и има ключов принос към разработването на модели за сигурен дом. Вярва, че домът е основа за бъдещето на всяко дете и че демокрацията, равенството и справедливостта са за всички – независимо от цвят и произход.
Случаят в „Захарна фабрика“ нашумя поради несъобразяването с разпореждане на Европейският съд по правата на човека (ЕСПЧ) в Страсбург, но унищожаването на единствените жилища на ромски семейства не е прецедент. Защо се стига до такива случаи?
Факторите, които предпоставят случаи като в „Захарна фабрика“, Войводиново и „Баталова воденица“, са основно исторически. По време на социализма има политика, насочена към насилствено усядане на ромите. В България ромската общност не е типична, нейните традиции са полуномадски, а не изцяло номадски – като в други части на света. През 1956 г. комунистическата партия издава заповед и може би на 99% от ромите се налага да уседнат. Освен това те трябва да започнат да работят. Ето защо ги позиционират обикновено в индустриалната част на градовете. По това време обаче регулацията на общинските и държавните територии не е била приоритетна. И хората просто са изградили своите домове.
След 1989 г. настъпват съществени промени, свързани с процесите на демократичен преход, приватизация и реституция на земи, национализирани по време на комунистическия режим. Приемането на законодателство, позволяващо възстановяване на собствеността до 50 дка, доведе до сложни процеси – част от собствениците избраха да получат парично обезщетение за терени, надвишаващи този праг, включително и за земи под съществуващи ромски квартали. В такива случаи тези терени най-вероятно са преминали в общинска собственост.
За съжаление, няма официална, достоверна и валидна статистическа информация колко са т.нар. обособени територии с население, споделящо еднакви икономически и социални характеристики. Тоест бедни и социално изключени хора, които в преобладаващата си част се припознават като роми. Липсва статистика дори в Националната жилищна стратегия, която не е приета окончателно, а е проект. Имаме само информация от едно изследване, правено преди около 25 години от Националния съвет по етническите и интеграционни въпроси, в което се говори за близо 100 квартала в цялата страна. Засега обаче това не се потвърждава никъде. Никой не е правил подобно мащабно изследване, което е голям пропуск.
Какво може да се направи, за да се узаконят къщите в тези квартали?
Законът за устройство на територията (ЗУТ) не позволява узаконяване по смисъла на правата, които носи този термин. По отношение на изградените от роми или хора от други бедни общности жилищни постройки без разрешения за строеж и други строителни книжа е възможно само получаване на търпим статут.
Първата и най-важна стъпка е да се идентифицира собственикът на земята, върху която е построен имотът – трето лице, държавата или общината. Задължително е да се направи подробен устройствен план (ПУП) за всеки отделен имот, до който трябва да има достъп всяка обществена служба – да има път, по който да минат пожарна или линейка, водопровод и т.н. Всичко това се начертава в този ПУП.
След като общината го одобри, съответното семейството казва: ние всъщност не сме получили разрешение, за да изградим тая постройка, какво можем да направим? Тогава намират експерт. Обикновено е инженер или архитект. Инженерите проверяват доколко една постройка е конструктивно стабилна.
Щом се удостовери, че там се живее безопасно, обитателите отиват с получения документ при главния архитект в общината и подават заявление да получат удостоверение за търпимост на постройката. Той го издава и къщата вече е т.нар. търпима постройка. Тя не носи същите права като законно построената, но при все това може да бъде продавана или ипотекирана с този документ, който я предпазва от премахване и доказва кои са собствениците.
Това ли се опитвате да правите в „Тръст за социална алтернатива“?
Да, но при нас проблемът е малко по-сложен, защото говорим за големи квартали, които традиционно са изградени върху общинска и тук-там – върху държавна собственост. Има и частна, но по-малко. В Дупница например помагаме на хората да идентифицират собствениците и да им кажат, че искат да купят земята им. Когато я придобият, могат да кандидатстват за търпим статут.
Процесът се усложнява от липсата на политическа воля от страна на общинската администрация. Кметът трябва да има много голямо желание да подобри ситуацията в този квартал, който е с преобладаващо бедно или ромско население, защото регулацията е скъпо начинание.
Когато започнахме през 2015 г., тя беше относително достъпна. Днес цената ѝ е нараснала многократно и представлява сериозно финансово предизвикателство. Тоест ако искате да направите регулация на „Факултета“, който е над 1000 дка, представяте ли си колко ще струва? Някой трябва да плати и това е общината, защото тя е собственик на територията.
Започнахме с Пещера, защото видяхме, че има воля от страна на местната общинска администрация и кмета. Оттогава се смениха вече петима кметове, но дейностите ни там продължават.
Интересното, което направихме, е, че закупихме празен терен, общинска собственост. Направихме му регулация и го дарихме на местно НПО. Това не беше урбанизирана територия, а земя със земеделско предназначение в непосредствена близост до съществуващия ромски квартал „Луковица“, който е пренаселен и в него не могат да се правят градоустройствени подобрения. Затова предложихме да купим земеделската земя, която така или иначе не се ползва по предназначение, и да променим статута ѝ, така че хората от квартала да не презастрояват още повече, а да си купят имоти и да си построят жилищата законно.
За щастие, закупуването, регулацията и промяната на предназначението на земята станаха много бързо. Придобиването на имотите обаче отнема много време, защото голяма част от българските роми не работят на трудов договор. Те не могат да получат заем от банка, за да закупят имот. Предложихме им вариант на изплащане. Никой от тях обаче не желае да ползва тази възможност, а просто събират пари, защото ги е страх. Смятат, че в един момент няма да успеят да си плащат вноските, така че напълно да придобият имота.
Не смеят да платят за нещо, което може да загубят?
Да. Затова процесът ни отнема много време. Обособихме 65 отделни имота с различни размери, от които остават още 21 непродадени. Съобразили сме се с местната общност, защото всяка общност има конкретни традиции как да изглежда домът. Направихме проекти, съобразени с тях, за да сме сигурни, че ще се възползват от възможността да закупят имот и да строят законно.
Взехме предвид и опасенията на общинската администрация, че някой може да изкупи няколко имота и после да ги препродава на по-висока цена. Изработихме механизъм, с който се опитваме да гарантираме, че общността, със съдействието на представител на администрацията, ще взема обективни решения.
По силата на споразумение с общинската администрация местната организация поема ангажимента целият акумулиран от продажбата на имотите финансов ресурс да се реинвестира в общността. Тоест тук няма печалба – целта е да подкрепяме хората през целия процес.
Трябва да има и социална инфраструктура – например детска площадка, стадион. В момента площадката, която обслужва децата от „Луковица“, е на близо 2,5 км от квартала и за да можеш да заведеш детето си на разходка в парка и да се полюлее на люлка, трябва да изминеш сериозно разстояние. Това важи за всички квартали с преобладаващо ромско население – там принципно няма никаква социална инфраструктура.
След това, паралелно с работата ни в Пещера, ни се обади кметът на Кюстендил с молба да му помогнем при регулацията на квартал „Изток“ – голямо градско гето, разположено на 280 дка. Там живеят официално под 10 000 души, но неофициално вече са поне 15 000–18 000. Имаше и други особености – едно дере минава точно до квартала и някои хора си бяха построили къщите там, твърде близо до брега на реката.
Направихме регулацията, като през цялото време обяснявахме на хората, че тя е нещо чудесно и ще им помогне да получат търпим статут, когато пожелаят да придобият собственост върху земята, върху която са изградили постройките си. Но има риск да бъдат премахнати голяма част от вече изградените постройки, особено тези, които не са конструктивно стабилни и които стоят на улица, пречейки на пожарна или линейка да минат. Това предизвика буря. Но в крайна сметка заедно с екипа от инженери, архитекти, юристи и Общината успяхме да сведем до минимум броя на жилищата, които трябва да бъдат премахнати постепенно, за да се осигури алтернатива за хората.
Това беше нашия сблъсък с т.нар. градско гето. След това отидохме в Дупница, където в квартала, в който сега правим регулация, ситуацията наподобява българските селски реалности. В града има четири квартала с преобладаващо ромско население, този е край стария път за Гърция и е изграден през 40-те години на ХХ век. Там регулацията беше далеч по-лесна, защото къщите са на отстояние една от друга. Хората са се опитали максимално да спазват стандартите на ЗУТ.
В Дупница обаче се сблъскахме с друг сериозен проблем, който засяга цялата държава и липсва адекватен отговор или стратегия за решаването му. Повече от три години се борихме да идентифицираме собствеността на територията. И Общината, и областната администрация твърдяха, че тя е тяхна, тъй като нямаше документи за собственост. Това е така, защото няма дигитализация на документи, съществували в предходни години. Никой не полага усилия да дигитализира целия архив, свързан с кадастъра, и да реализира електронното управление, за което си приказваме повече от 15–20 години.
Огромният казус в крайна сметка се реши. Общината успя да изрови от своя архив документи, с които да докаже пред областната администрация, че тази територия от 160 дка е общинска собственост. И едва тогава започнахме да правим регулация.
Разказвам всичко това, защото на места общинската администрация проявява сериозна неангажираност и бездействие, а на други действа организирано и последователно. Причината за тази разнородна практика е липсата на ясна законодателна рамка, която да ѝ предоставя необходимите правомощия.
Процесът на децентрализация започна почти автоматично след 1989 г. и в един момент спря. Правомощията, които се делегират на общинските администрации, обикновено са продиктувани от чисто политически избор. Те нямат за цел да обслужват потребностите по места. Затова голяма част от общинските администрации и кметове просто са с вързани ръце, дори да имат огромното желание и воля.
Защо не се делегира правото на общинската администрация да определя срок за издаване на търпимост на постройките? Защо трябва да се чака промяна в ЗУТ, която според мен е невъзможна в сегашния контекст поне в следващите четири години? Има редица проблеми, които държавата трябва да реши на национално ниво, за да улесни живота на всички.
Друг сериозен проблем е свързан с компетенциите на общинската администрация. С цялото ми уважение към служителите в страната, в практиката често се наблюдава непълно познаване на националното законодателство. Нерядко дори експерти тълкуват ЗУТ и други нормативни актове по начин, който не отразява тяхното реално съдържание или дух.
Включително кметът на район „Илинден“ Емил Бранчевски, който тълкува международното право.
Той каза, че не може да чете френски и затова не иска да приеме документа, който ЕСПЧ е издал. Бях на среща в Столичната община с г-н Бранчевски след втората заповед за привременни мерки на ЕСПЧ, на която присъстваше представителка на Дирекцията за процесуално представителство на България към Министерството на правосъдието. Тя направи много приятно впечатление, защото взе документа, който вече беше преведен на български, отиде при него и му каза:
Г-н Бранчевски, документът, който Ви връчихме, беше нечетим за Вас, но сега вече би трябвало да можете да прочетете този.
Той обаче отказа да го вземе.
Един от основните поводи за протести срещу ромски квартали, включително в „Захарна фабрика“, е замърсяването на въздуха, свързано с изгарянето на твърдо гориво и отпадъци. Има програми за осигуряване на отопление с електричество, но възможно ли е хора без документи за собственост на жилищата си да се възползват от тях?
През последните две години правим пилотен проект във „Факултета“ с финансовата подкрепа на Фонда за чист въздух. Първоначалната концепция, с която се свързаха с нас колегите от Великобритания, беше да се опитаме да измерим доколко въздухът се замърсява точно от различните източници на енергия, които се ползват за отопление през зимата. Столичната община и българската държава отново си измиват ръцете с ромските квартали, защото нямат обективни фактори да докажат, че това е така. Те ползват мобилни станции, само че не съм ги виждала във „Факултета“, така че да могат да докажат, че това замърсяване се случва точно от тези хора там.
Направихме едно упражнение. Сложихме 15 мобилни датчика в 15 къщи в квартала, близо до т.нар. джобове на бедност, защото знаехме, че там може да има хора, които използват източници на енергия, различни от въглища, дърва или екопелети. Датчиците са любителски – за съжаление, нямахме бюджет за голяма станция. Те стоят там вече две години.
Проведохме и фокус групи и анкетно проучване. Установихме, че близо 80% от анкетираните се отопляват с ток през зимата, а за охлаждане през лятото масово се ползват климатици. Немалка част от хората ползват термопомпи и пелетни системи.
Какво показаха датчиците?
Данните показват повишени нива на замърсяване на въздуха през декември и януари – периоди с най-ниски температури, като това съответства на общите тенденции, наблюдавани и в други райони на София. Трябва да отбележа, че електроснабдяването във „Факултета“ е недостатъчно. Мрежата е изключително стара и амортизирана и много често се претоварва и изключва, особено в най-студените месеци. Хората не могат да ползват за отопление климатици или каквото и да било, свързано с електричество.
Истината е, че все още има много бедни хора. Лично аз нямам доказателства, но жители на квартала казват, че се забелязва повишаване на броя на децата с белодробни заболявания, които се хронифицират на по-късен етап. Те смятат, че това се случва, защото въздухът е изключително замърсен, понеже улиците на квартала не се мият. Дружеството, което обслужва сметосъбирането, почистването и снегопочистването, е общинско. Има много сериозен проблем с общинските предприятия. Опитахме се да разберем защо има сметища, но няма контейнери за събиране на отпадъци.
И все още се борим със Столичната община, която от своя страна създаде временна комисия, водена от общинския съветник [от „Да, България“ – б.а.] Бойко Димитров, за да се разбере защо сметосъбиращото дружество не си върши работата и какви са нуждите на дружеството, съответно и на квартала, така че да могат да се подобрят условията на живот там, защото проблемът е изключително тежък.
В началото на тази година научихме, че Район „Красна поляна“ планира да премахне няколко жилищни постройки поради сигнал, подаден от НПО, която твърди, че много жилищни постройки във „Факултета“ замърсяват въздуха, използвайки нерегламентирани източници на енергия за отопление. В момента този казус е „на трупчета“. Вероятно районният кмет не е посмял да пристъпи към премахване на постройките, но това не значи, че по някое време няма да стане.
Столичната община администрира програма с управляващ орган Министерството на околната среда и водите. По силата ѝ Общината има за цел да подобри качеството на въздуха, като подмени отоплителните уреди на всички в града, които имат желание, с климатици или пелетни системи. Основното условие, на което трябва да отговаря всеки заявител на тази услуга, е да предостави документ за собственост на жилището си.
Почти никой не може да направи това. Единствено хора от кв. „Христо Ботев“ се свързаха с нас с молба да им помогнем да си попълнят заявленията за подмяна. Впоследствие разбрахме, че са успели да ги подменят с климатици. И една много малка част от „Факултета“ – също, но това са основно тези, които никога не са ползвали черчевета за отопление.
Това е парадокс – ако си собственик на жилището си, можеш да си позволиш да си смениш отоплителния уред. Но хората, които не са собственици, традиционно просто автоматично са изключени от каквито и да било интервенции или програма. И нищо не може да ги извади от тази уязвимост.
В заключение, може ли да кажете според Вас коя е първата и най-важна законодателна промяна, за да се тръгне по-леко към регулирането на къщите в гетата?
Ще го кажа, макар че според мен то е изключително амбициозно. Нашият ЗУТ да се приведе напълно в унисон с всички заповеди и инструкции от ЕС и ЕСПЧ: трябва да хармонизираме нашето законодателство, така че то да пази единствените жилища на хората.
Това е ключът. За да можем да направим последващи стъпки във формализирането на тези квартали, държавата трябва да обещае, че няма да премахва единствени жилища насила. А ще предприеме пропорционални мерки. Защото за мен или за вас нещо може да е барака, но за някои хора то е жилище. Единствено ако то е опасно за тях и за децата им, държавата трябва да осигури алтернатива. И чак след това да се премахне жилището.
превод от френски Владимир Германов, София: изд. „Кръг“, 2024
Много е странно да пишеш за книга или по-скоро за история, която си възприемал като абсолютен културен жалон за редица поколения около своето собствено. Защо изобщо да се пише за нещо, което всички така или иначе познават? И все пак, уви, поколенията неусетно са се сменили (та тази история е вече на над половин век!), така че решението на издателство „Кръг“ да я предаде нататък в превода на Владимир Германов е повече от добре дошло. Още повече предвид посоката, в която светът е поел напоследък.
Това си мислех, припомняйки си колко пъти в детството си съм гледала незабравимата телевизионно-театрална постановка „Харолд и Мод“ на Хачо Бояджиев (1978), събрала големите актьори Леда Тасева и Стефан Данаилов в двете главни роли. По-късно, доста след промените, гледах и едноименния филм на Хал Ашби от 1971 г. със саундтрака на Кат Стивънс. Филм, който при първоначалната си поява (преди да стане култов, набирайки сила в либералните студентски среди) има слаба гледаемост, а критиката не е особено ласкава. Историята обаче ще бъде възродена и ще заживее нов живот – в редица адаптации, сред които и българската.
Всъщност „книга“ per se, която впоследствие да бъде адаптирана, няма в истинския смисъл на думата – „Харолд и Мод“ е магистърската дипломна работа на Хигинс под формата на сценарий, докато той учи в Калифорнийския университет. Реално филмът и обличането на историята в книга стават, общо взето, по същото време.
През 1971-ва хипи движението от 60-те вече е към своя залез, отишли са си знакови негови фигури от сферата на музиката; точно тогава излизат и други, далеч по-касови и по-забавни филми в сравнение с тази морбидна романтична комедия с мрачно чувство за хумор (предшествана впрочем от друг култов филм – „Абсолвентът“, разказващ за връзка с разлика във възрастта в полза на жената, макар и доста по-малка). А образът на Мод е силно свързан именно с хипи културата, за което ще стане въпрос и по-късно.
„Харолд и Мод“ проследява отношенията между 19-годишен младеж и 79-годишна жена, която съвсем скоро ще отпразнува своя крайъгълен (както се оказва) 80-и рожден ден. Харолд е интелигентен и креативен, но потиснат, самотен и интровертен тип. Той има богат и осигурен, но скучен и безсъдържателен живот, съжителствайки със своята свръхконвенционална майка. За да се противопостави на нейната вечна социална ангажираност в обществото на богатата горна класа, на куртоазните ѝ изисквания, на желанието ѝ да го вкара в релси и в крайна сметка – на липсата на каквото и да било дълбоко разбиране и внимание у нея към сина ѝ, Харолд се „забавлява“ да инсценира самоубийства, кое от кое по-зловещи и сценични. Тестове, целящи да предизвикат близост с нея, на които тя реагира с умерена, по-скоро превзета покъртеност и дори досада, отколкото с истинската загриженост на родител. Загрижеността ѝ в действителност е по линия на това как поведението на сина ѝ ще се отрази на имиджа на семейството им и на сигурността на бъдещето му.
Опитите да бъде „поправен“ или „излекуван“ чрез психотерапия, натякванията на чичо му, военен, „да стане мъж“, като се присъедини към армията, прибягването до агенция, която да му намери съпруга, не сработват. Харолд сякаш е зациклил в морбидната си обсесия от смъртта, в мрачните си хобита отдушници – ходенето по погребения на напълно непознати хора, наблюдаването на разрушавани сгради, карането на катафалка и т.н.
Всичко това ще започне да се променя, когато на едно такова погребение момчето среща привидно падащата си по същото Мод. „Привидно“, защото на силата на Танатос тя всъщност ще противопостави мощта на Ерос. Нейната несломима виталност, шармантното ѝ присъствие, момичешкото ѝ обаяние, ненаситната ѝ жажда за живот и приключения ще се изправят срещу скованата плахост и симулативната дързост на Харолд. Мод е абсолютно въплъщение на духа на хипи движението: свободният дух, свободата (как навремето е освобождавала птички в клетки например или как изкоренява дърво, заседнало насред смога, за да го пресади в гората); несъобразяването с табута, условности и правила; пренебрежението ѝ към властта и към идеята за лична собственост (кражбите на коли, за да се придвижва); увлечението по Изтока; любовта като водеща сила; свободата във връзките; отдаването на сензитивното и простите удоволствия; интересът към всякакви неконвенционални форми на изкуството; разбирането за Бог, за неговото всеприсъствие и любов извън религиозната рамка; екологичният уклон и т.н.
Постепенно (всъщност в рамките на седмица, но усещането е за много по-дълъг период) тази енергия ще проникне в момчето, ще раздвижи неговите неосъзнати страхове и задръжки. Мод ще научи Харолд да осезава, да се радва, да се смее, да пробва, вкусва, отличава. Но най-важното: ще му покаже, че смъртта не е мрак и край, а светлина и продължаване – трансформация, която не би трябвало да носи тъга, а да бъде прегърната с облекчение и дори с радост. Смъртта е красива, тя е предпоставка за възраждането на живота в една цикличност. Но до нея за Харолд има твърде много време – време, което трябва да бъде използвано по най-пълноценния начин.
Не е учудващо, че
възраждането на интереса към „Харолд и Мод“ първи подемат либерално настроените в колежите и университетите, все още достатъчно близки до хипи генерацията.
Темата за съпротивата или пародирането (както е по-скоро в случая с Харолд) на властта, мейнстрийма, стереотипите и стълбовете на обществото, намира благодатна почва през годините. Впрочем и до днес. В книгата неслучайно са избрани техни „нарицателни“ представители: полицай, военен, свещеник, психиатър. Те са показани по лек, пародиен начин, без остър сблъсък или неприязън. Впрочем тези герои дори са симпатични в комичната си нелепост, в слабостта си пред всичко онова, което олицетворява Мод. Един от най-забавните моменти е, когато (за да престане да му натяква за казармата) Харолд се представя пред чичо си като маниакално, страстно обсебен от желанието да убива и измъчва. Онзи, който досега го е убеждавал колко патриотично е да се бие и да убива за родината, сега сам ще прибегне до връзки за недопускането му в армията – защото не била за такива лунатици убийци.
В компанията на Мод сдържаният и затворен Харолд, притискан да се превърне в конвенционален възрастен, ще се разкрие такъв, каквото всъщност е – будно, ранимо, добро, мечтателно, романтично момче, нуждаещо се от обич и вдъхновение. Увлечението му по всичко, което Мод представлява, ще се превърне в убеждение за любов към самата нея. Дали сексуална, или не – читателите сами ще открият, но всъщност отговорът няма значение. До онази развръзка, която рязко превръща книгата в драма – ала всъщност съвсем не, ако следваме убежденията на Мод. Защото животът и любовта преодоляват и възтържествуват. Преходността е естествена, но растежът е неизбежен.
Обичам да гледам как растат нещата,
казва героинята, която ще заведе момчето и в родилното. Казано съвсем клиширано, Мод, в заника на своя живот, ще научи Харолд, намиращ се в неговото начало, да прегърне съществуването такова, каквото е. Да живее. Да различава специалното и индивидуалното в привидната аморфна, анонимна маса (мотивът с маргаритката, която е кацнала и на корицата на Виктория Видевска – да не говорим че цветята дават другото име на хипи поколението).
Избирайки Мод, следвайки Мод, Харолд в известен смисъл също се подчинява на (нейния) авторитет – но такъв, който е свободно избран от него, приет е с обич и разбиране. Донякъде тази огромна разлика във възрастта го предполага. Тя е нужна за инициацията на момчето в живота пред него, подобно на предаване на щафетата. И в същото време е и тържествено пренебрежение към стереотипите. (Впрочем в българската версия възрастовата разлика на героите (шейсет години) е доста по-малко видима – вероятно се е намесил морално-цензуриращия характер на режима.)
„Харолд и Мод“ е книга, обърната изцяло към бъдещето. Не знаем как и защо Мод е станала каквато е. Всичко от миналото е редуцирано само до спорадични реминисценции, които – доколкото познаваме героинята – може да са колкото истина, толкова и плод на богатото ѝ въображение. Една от тях обаче пронизва – печатът с цифри на ръката ѝ, чийто смисъл е пределно ясен. И чието заличаване явно може да стане единствено с това безкрайно, ненаситно черпене от живота.
В заключение си давам сметка, че цялата тази жизнеутвърждаваща енергия на книгата е някак старомодна, че може да прозвучи наивно, сладникаво (дори и в ерата на книгите за самопомощ, обученията по позитивно мислене и т.н.). Като че ли днес на дневен ред са песимистичните, саркастичните, апокалиптичните наративи. Но може би точно затова имаме нужда да прочетем нещо толкова „наивно“.
Активните дарители на „Тоест“ получават постоянна отстъпка в размер нa 20% от коричната цена на всички заглавия от каталога на издателство „Кръг“, както и на няколко други български издателства в рамките на партньорската програма Читателски клуб „Тоест“. За повече информация прочетете на toest.bg/club.
Никой от нас не чете единствено най-новите книги. Тогава защо само за тях се пише? „На второ четене“ е рубрика, в която отваряме списъците с книги, публикувани преди поне година, четем ги и препоръчваме любимите си от тях. Рубриката е част от партньорската програма Читателски клуб „Тоест“. Изборът на заглавия обаче е единствено на авторите – Стефан Иванов и Антония Апостолова, които биха ви препоръчали тези книги и ако имаше как веднъж на две седмици да се разходите с тях в книжарницата.
Grab, Southeast Asia’s leading superapp, has created many internal applications to support its diverse range of internal and external business needs. Authentication1 and authorisation2 serve as fundamental components of application development, as robust identity and access management are essential for all systems.
We recognised the need for a centralised internal system to manage access, authentication, and authorisation. This system would streamline access management, ensure compliance with audit requirements, enhance developer velocity, and simplify authentication and authorisation processes for both developers and business operations.
Grab created Concedo to fulfill this requirement by providing a mechanism for services to configure their access control based on their specific role to permission matrix (R2PM)3. This allows for quick and easy integration with Concedo, enabling developers to expedite the shipping of their systems without investing excessive time in building the authentication and authorisation module.
The authentication mechanism, based on Google’s OAuth2.04, includes custom features that enhance identity for service integration. However, this customisation isn’t standard, creating integration challenges with external platforms like Databricks and Datadog. These platforms then use their own authentication and authorisation, resulting in a fragmented and undesirable sign-on experience for users.
Figure 1. Undesired user sign-on experience due to fragmented authentication approaches.
The inconsistency in user experience also resulted in complications. The lack of standardisation led to difficulties in establishing authentication and authorisation for individual applications. Additionally, it created substantial administrative overhead due to the necessity of managing multiple identities. The absence of standardisation also hindered transparency in access control across all applications.
This led us to inquire how a standardised protocol could be established to function seamlessly across all applications, regardless of whether they were developed internally or sourced from external platforms.
Figure 2. Desired state, having something in between the different identity providers (IdP).
Choosing among industry standards
We wanted to build a platform to serve both authentication and authorisation, providing a seamless integration and user sign-on experience. We then asked ourselves, “What are the current industry standards we can leverage on?”.
Security Assertion Markup Language (SAML): An authentication protocol which leverages heavily on session cookies to manage each authentication session.
Open Authorisation (OAuth): An authorisation protocol which focuses on granting access for particular details rather than providing user identity information.
OpenID Connect (OIDC)5: An authentication protocol built on OAuth 2.0, enabling single sign-on (SSO). OIDC unifies and standardises user authentication, making it a solution for organisations with numerous applications.
OIDC enhances user experience by redirecting them to an identity provider (IdP) like Google or Microsoft for authentication when accessing an application. Upon successful verification, the IdP sends a secure token with the user’s identity information back to the application, granting access without the need for additional credentials.
With OIDC, authentication and authorisation are fully implemented, enabling seamless integration across platforms, including mobile, API, and browser-based applications, while also providing SSO functionality.
Figure 3. Desired state with the protocol decided.
OIDC seemed like an ideal solution, but it came with potential drawbacks:
OIDC relies on trusting a third-party authentication service. Any disruption to this service could result in downtime.
Compromised credentials could affect access to multiple services.
In the following section, we will explore our strategies in mitigating these challenges effectively.
Implementing the chosen standard
With OIDC chosen as the standard, the focus shifted to implementation.
We have always been a supporter of open source projects. Rather than building a platform from the ground up, we leveraged existing solutions while seeking opportunities to contribute back to the open source community.
The team explored Cloud Native Computing Foundation (CNCF) projects and discovered Dex – A federated OpenID connect provider that aims to allow integration of any IdP into an application using OIDC. Dex was selected as our open-source platform of choice due to its alignment with our high-level objectives.
Figure 4. Desired state with Dex as the platform foundation.
How Dex works
Figure 5. High level architecture of Dex. [Source](https://dexidp.io/docs/)
When a user or machine tries to access a protected application or service, they are redirected to Dex for authentication. Dex acts as a middleman (identity aggregator) between the user and various IdPs to establish an authenticated session.
Figure 6. Simplified sequence diagram of how authentication works for Dex.
Dex’s key features include enabling SSO experiences, allowing users to access multiple applications after authenticating through a single provider. Dex also supports multiple IdP use cases and provides standardised OIDC authentication tokens.
Dex implementation separated application authentication concerns, established a single source of truth for identity, enabled new IdP additions, ensured adherence to security best practices, and provided scalability for deployments of all sizes.
How Dex is streamlining authentication and authorisation
Token delegation
When services communicate with each other, one service often assigns an identity to ensure that authorisation can be carried out on a specific service. For example, in figure 7, a service account or robot account is typically used as an identity so that service B can identify the caller.
Figure 7. Service identification through service account.
Although service accounts are the recommended approach for enabling Service B to identify the caller, they come with challenges that must be addressed:
Service account compromise: Service accounts often have high-level privileges and typically broad access to Service B. If compromised, they pose a significant security risk, making careful management essential.
Access control issue: The other approach creates unnecessary complexity by requiring Service A to handle user-level permissions for Service B. This violates the principle of separation of concerns.
To address this issue, Dex introduced a token exchange feature.
Figure 8. Token exchange example with trusted peers established.
The token exchange process involves two main components; token minting and trust relationship.
Token minting
The user (Alice) logs into Service A.
Service A, acting as a trusted peer, is authorised to mint tokens.
Service A generates a token valid for both Service A and Service B. This is reflected in the token’s “aud” (audience) field: “aud”: “serviceA serviceB”
Trust relationship
Service B must be configured to trust Service A as a peer.
Service B accepts tokens minted by Service A.
This approach differs from the service account-based scenario by using a trust-based peer relationship. Service A is authorised to mint tokens for Service B providing a more sophisticated but preferred method. The token is properly scoped for both services, ensuring a clear audit trail of token issuance, while reducing token manipulation risks.
Kill switch
As highlighted earlier,
OIDC relies on trusting a third-party authentication service. Any disruption to this service could result in downtime.
Dex’s ability to support multiple IdPs enables traffic to be shifted to a different IdP if one, such as Google, experiences an outage. This “kill switch” mechanism ensures that integrated services are not disrupted and do not require any changes to mitigate the issue. It is only triggered during specific IdP outages.
Figure 9. Trigger kill switch without having other services changing from their end.
Looking forward
Following the successful implementation of Dex as the unified authentication provider, the next phase in enhancing our identity and access management infrastructure is to leverage this robust identity foundation to establish a unified and simplified authorisation model. This initiative is driven by the recognition that the current authorisation landscape remains fragmented and complex, leading to potential inefficiencies and security vulnerabilities.
By centralising authorisation and aligning it with the unified identity provided by Dex, we can streamline access control, improve user experience, and strengthen security across our applications and services. This will involve consolidating authorisation policies, standardising access control mechanisms, and simplifying the management of user permissions.
Shoutout to the awesome Concedo team for driving Dex integration and to our leadership for steering the way toward a simpler, unified authentication and authorisation journey!
Join us
Grab is a leading superapp in Southeast Asia, operating across the deliveries, mobility and digital financial services sectors. Serving over 800 cities in eight Southeast Asian countries, Grab enables millions of people everyday to order food or groceries, send packages, hail a ride or taxi, pay for online purchases or access services such as lending and insurance, all through a single app. Grab was founded in 2012 with the mission to drive Southeast Asia forward by creating economic empowerment for everyone. Grab strives to serve a triple bottom line – we aim to simultaneously deliver financial performance for our shareholders and have a positive social impact, which includes economic empowerment for millions of people in the region, while mitigating our environmental footprint.
Powered by technology and driven by heart, our mission is to drive Southeast Asia forward by creating economic empowerment for everyone. If this mission speaks to you, join our team today!
Definition of terms
Authentication: Who you are. Making sure you are who you say you are by verifying your identity. ↩
Authorisation: What you can do. Defining the resources or actions you are allowed to access or perform after your identity has been verified. ↩
Role-to-Permission Matrix (R2PM): A structured framework used to map roles within an organisation to the permissions or access rights each role has in a system, application, or process. This matrix serves as a critical component in access control and identity management, ensuring that users have appropriate access based on their roles while minimising the risk of unauthorised access. ↩
Open Authorisation (OAuth 2.0): Protocol for authorisation. For example, Google Login on third-party portals allows your identity to remain with Google, but third-party portals can obtain limited access to specific data such as your profile photo. ↩
OpenID Connect (OIDC): Identity protocol built on top of OAuth 2.0. On top of authorisation provided by OAuth 2.0, it verifies and provides a trusted identity. ↩
At AWS, security is our top priority. We strongly recommend implementing comprehensive security controls across all application layers to ensure defense-in-depth. This multi-layered approach helps protect your workloads, data, and infrastructure from potential threats. In this post, we walk through implementing an additional layer of authentication security for your Amazon Linux 2023 (AL2023) Amazon Elastic Compute Cloud (Amazon EC2) instances by using two-factor authentication while connecting to the instance through Secure Shell (SSH).
SSH Access Security Fundamentals
The most common tool to connect to Linux servers is SSH. When an EC2 instance is launched, you are prompted to either create a new key pair or use an existing key pair to connect to the EC2 instance using SSH. The key pair is a combination of a private and public key, where the public key is stored within the instance in the ~/.ssh/authorized_keys file, while the private key is stored in the user’s machine. A compromised local machine containing SSH private keys poses a significant security risk. An attacker who obtains both the private key and the corresponding EC2 instance username could gain unauthorized SSH access to your instance with the same permissions as the compromised user account. To prevent anyone with the private keypair from accessing the instance you should implement two-factor auth through multi-factor authentication (MFA).
Configuring security groups to allow unrestricted SSH access (0.0.0.0/0) to EC2 instances’ public IP addresses creates a significant security vulnerability. This practice exposes your instances to potential brute force attacks and unauthorized access attempts from anywhere on the internet. To overcome this, we either recommend a user restricts the access to only “My IP” in the security group, or to have a bastion host or a jump box in front of your instances and access your instances through your bastion host. Implementing MFA on top of this would tighten the security while accessing the instances through SSH.
The following figure shows a common architecture anti-pattern:
The following figure shows the recommended architectures:
Prerequisites
Before proceeding, install the Google Authenticator app on your mobile device – you’ll need it to generate one-time passwords (OTPs) for Multi-Factor Authentication (MFA) on your Amazon Linux 2023 instances.
Configuration Steps
Install Google Authenticator in the EC2 instance
Login to the instance and install Google Authenticator and its dependencies.
After installing the package, the application has to be initialized to generate a key for the user that you are logged in as (for example ec2-user) to add the authentication to that user account. Execute the following command to initialize the application.
google-authenticator
You are asked if the authentication tokens used should be time-based. In this example, you use time-based tokens.
Do you want authentication tokens to be time-based (y/n) y
This generates a QR code that you should scan using your Google Authenticator app. Then, enter the verification code from the application in the terminal after scanning, or manually enter the account name, which is any name, to recognize the instance and the secret key displayed in the terminal in the application to register your instance. After confirming the code, the system will generate emergency scratch codes. Store these codes securely – they serve as backup authentication methods if you lose access to your Google Authenticator app or mobile device. Each scratch code can be used only once.
After registering the instance details in the mobile application through QR code or manual operation, in the SSH terminal you are asked if the google_authenticator file should be updated for user ec2-user. Typing y saves the secret key, scratch codes, and the other configuration options that you select later on in the file. Run the initialization app and go through the same procedure for each user account to enable MFA on each account.
Do you want me to update your "/home/ec2-user/.google_authenticator" file (y/n) y
Choose y for the following question to refuse multiple uses of the same authentication token to enhance security and prevent a man-in-the-middle attack.
Do you want to disallow multiple uses of the same authentication token?
This restricts you to one login about every 30s, but it increases your chances
to notice or even prevent man-in-the-middle attacks (y/n) y
Choose n for the following question to have three valid codes in a 1:30-minute window unless you are facing issues.
By default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
we allow an extra token before and after the current time.
This allows for a time skew of up to 30 seconds between authentication server and client.
If you experience problems with poor time synchronization,
you can increase the window from its default size of 3 permitted codes
(one previous code, the current code, the next code) to 17 permitted codes
(the 8 previous codes, the current code, and the 8 next codes).
This will permit for a time skew of up to 4 minutes between client and server.
Do you want to do so? (y/n) n
Choose y for the following question to enable rate-limiting to protect against brute-force logic attempts.
If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
Configure SSH to use the Google Pluggable Authentication module
By default PAM is not configured to use MFA for SSH connections. Now that you have the MFA module configured and running, you must modify the PAM configurations to use MFA authentication.
sudo vi /etc/pam.d/sshd
There are two options for configuration to choose from based on your requirement.
Option 1: Configuring MFA for all users in the instance
Add the following to the bottom of the file to use Google Authenticator to enforce MFA for SSH connections. When this option is enabled, the system will prompt all users for MFA during SSH connections, regardless of whether MFA has been configured for their individual accounts. This applies to every user attempting to access the instance, which may disrupt access for users without MFA configuration.
Important: Before implementing this setting, ensure all users who need instance access have properly configured MFA to prevent potential lockouts.
Option 2: Configuring for specific users without affecting others
If there are other service accounts or users within the instance that should be able to log in without MFA, then add nullok at the end of the following statement. This means that users who don’t run Google Authenticator initialization won’t be asked for a second authentication.
Comment out the password requirement, as SSH key pairs provide stronger security than password-based authentication. In this configuration, users will need both an SSH key and a verification code from Google Authenticator to establish an SSH connection – eliminating password prompts while maintaining robust security through two-factor authentication. Note that if you leave password authentication enabled (by not commenting out this line), users will be required to provide three factors: their SSH key, password and MFA code to access the instance.
#auth substack password-auth
Save the file. You must change the SSH configuration to make it prompt for a second authentication. Run the following command to make changes in the configuration file.
sudo vi /etc/ssh/sshd_config.d/50-redhat.conf
Then, change ChallengeResponseAuthentication no to ChallengeResponseAuthentication yes.
Lastly, you must let SSH know that it should use key pair along with interactive authentication for the MFA module to login. At the bottom of the file, add the following:
Save the file. Restart the SSH service running in the instance to let the changes take effect. Restarting the SSH service (the SSH daemon) stops the main sshd process and starts a new one, but it doesn’t disconnect existing SSH sessions.
sudo /etc/init.d/sshd restart
To test the solution, open a new terminal window and SSH into the instance, and you are asked for a verification code. Keep your session in the original terminal window open while you SSH from your new window.
Type the code that’s generated on your Google Authenticator app and you are logged in to your instance.
Using MFA allows to add a further layer of security to Amazon Linux 2023 EC2 instances while logging in.
Cleanup
To avoid incurring charges, please stop or terminate the launched Amazon EC2 instance if not in use.
Conclusion
In this post, you learned how to enhance your Amazon Linux 2023 EC2 instance security by implementing multi-factor authentication (MFA) with Google Authenticator. This setup requires users to provide both their SSH key pair and a time-based one-time password from their application when connecting to instances, adding an essential extra layer of protection.
Anthropic launched the next generation of Claude models today—Opus 4 and Sonnet 4—designed for coding, advanced reasoning, and the support of the next generation of capable, autonomous AI agents. Both models are now generally available in Amazon Bedrock, giving developers immediate access to both the model’s advanced reasoning and agentic capabilities.
Amazon Bedrock expands your AI choices with Anthropic’s most advanced models, giving you the freedom to build transformative applications with enterprise-grade security and responsible AI controls. Both models extend what’s possible with AI systems by improving task planning, tool use, and agent steerability.
With Opus 4’s advanced intelligence, you can build agents that handle long-running, high-context tasks like refactoring large codebases, synthesizing research, or coordinating cross-functional enterprise operations. Sonnet 4 is optimized for efficiency at scale, making it a strong fit as a subagent or for high-volume tasks like code reviews, bug fixes, and production-grade content generation.
When building with generative AI, many developers work on long-horizon tasks. These workflows require deep, sustained reasoning, often involving multistep processes, planning across large contexts, and synthesizing diverse inputs over extended timeframes. Good examples of these workflows are developer AI agents that help you to refactor or transform large projects. Existing models may respond quickly and fluently, but maintaining coherence and context over time—especially in areas like coding, research, or enterprise workflows—can still be challenging.
Claude Opus 4 Claude Opus 4 is the most advanced model to date from Anthropic, designed for building sophisticated AI agents that can reason, plan, and execute complex tasks with minimal oversight. Anthropic benchmarks show it is the best coding model available on the market today. It excels in software development scenarios where extended context, deep reasoning, and adaptive execution are critical. Developers can use Opus 4 to write and refactor code across entire projects, manage full-stack architectures, or design agentic systems that break down high-level goals into executable steps. It demonstrates strong performance on coding and agent-focused benchmarks like SWE-bench and TAU-bench, making it a natural choice for building agents that handle multistep development workflows. For example, Opus 4 can analyze technical documentation, plan a software implementation, write the required code, and iteratively refine it—while tracking requirements and architectural context throughout the process.
Claude Sonnet 4 Claude Sonnet 4 complements Opus 4 by balancing performance, responsiveness, and cost, making it well-suited for high-volume production workloads. It’s optimized for everyday development tasks with enhanced performance, such as powering code reviews, implementing bug fixes, and new feature development with immediate feedback loops. It can also power production-ready AI assistants for near real-time applications. Sonnet 4 is a drop-in replacement from Claude Sonnet 3.7. In multi-agent systems, Sonnet 4 performs well as a task-specific subagent—handling responsibilities like targeted code reviews, search and retrieval, or isolated feature development within a broader pipeline. You can also use Sonnet 4 to manage continuous integration and delivery (CI/CD) pipelines, perform bug triage, or integrate APIs, all while maintaining high throughput and developer-aligned output.
Opus 4 and Sonnet 4 are hybrid reasoning models offering two modes: near-instant responses and extended thinking for deeper reasoning. You can choose near-instant responses for interactive applications, or enable extended thinking when a request benefits from deeper analysis and planning. Thinking is especially useful for long-context reasoning tasks in areas like software engineering, math, or scientific research. By configuring the model’s thinking budget—for example, by setting a maximum token count—you can tune the tradeoff between latency and answer depth to fit your workload.
How to get started To see Opus 4 or Sonnet 4 in action, enable the new model in your AWS account. Then, you can start coding using the Bedrock Converse API with model IDanthropic.claude-opus-4-20250514-v1:0 for Opus 4 and anthropic.claude-sonnet-4-20250514-v1:0 for Sonnet 4. We recommend using the Converse API, because it provides a consistent API that works with all Amazon Bedrock models that support messages. This means you can write code one time and use it with different models.
For example, let’s imagine I write an agent to review code before merging changes in a code repository. I write the following code that uses the Bedrock Converse API to send a system and user prompts. Then, the agent consumes the streamed result.
private let modelId = "us.anthropic.claude-sonnet-4-20250514-v1:0"
// Define the system prompt that instructs Claude how to respond
let systemPrompt = """
You are a senior iOS developer with deep expertise in Swift, especially Swift 6 concurrency. Your job is to perform a code review focused on identifying concurrency-related edge cases, potential race conditions, and misuse of Swift concurrency primitives such as Task, TaskGroup, Sendable, @MainActor, and @preconcurrency.
You should review the code carefully and flag any patterns or logic that may cause unexpected behavior in concurrent environments, such as accessing shared mutable state without proper isolation, incorrect actor usage, or non-Sendable types crossing concurrency boundaries.
Explain your reasoning in precise technical terms, and provide recommendations to improve safety, predictability, and correctness. When appropriate, suggest concrete code changes or refactorings using idiomatic Swift 6
"""
let system: BedrockRuntimeClientTypes.SystemContentBlock = .text(systemPrompt)
// Create the user message with text prompt and image
let userPrompt = """
Can you review the following Swift code for concurrency issues? Let me know what could go wrong and how to fix it.
"""
let prompt: BedrockRuntimeClientTypes.ContentBlock = .text(userPrompt)
// Create the user message with both text and image content
let userMessage = BedrockRuntimeClientTypes.Message(
content: [prompt],
role: .user
)
// Initialize the messages array with the user message
var messages: [BedrockRuntimeClientTypes.Message] = []
messages.append(userMessage)
// Configure the inference parameters
let inferenceConfig: BedrockRuntimeClientTypes.InferenceConfiguration = .init(maxTokens: 4096, temperature: 0.0)
// Create the input for the Converse API with streaming
let input = ConverseStreamInput(inferenceConfig: inferenceConfig, messages: messages, modelId: modelId, system: [system])
// Make the streaming request
do {
// Process the stream
let response = try await bedrockClient.converseStream(input: input)
// Iterate through the stream events
for try await event in stream {
switch event {
case .messagestart:
print("AI-assistant started to stream"")
case let .contentblockdelta(deltaEvent):
// Handle text content as it arrives
if case let .text(text) = deltaEvent.delta {
self.streamedResponse + = text
print(text, termination: "")
}
case .messagestop:
print("\n\nStream ended")
// Create a complete assistant message from the streamed response
let assistantMessage = BedrockRuntimeClientTypes.Message(
content: [.text(self.streamedResponse)],
role: .assistant
)
messages.append(assistantMessage)
default:
break
}
}
To help you get started, my colleague Dennis maintains a broad range of code examples for multiple use cases and a variety of programming languages.
Available today in Amazon Bedrock This release gives developers immediate access in Amazon Bedrock, a fully managed, serverless service, to the next generation of Claude models developed by Anthropic. Whether you’re already building with Claude in Amazon Bedrock or just getting started, this seamless access makes it faster to experiment, prototype, and scale with cutting-edge foundation models—without managing infrastructure or complex integrations.
Claude Opus 4 is available in the following AWS Regions in North America: US East (Ohio, N. Virginia) and US West (Oregon). Claude Sonnet 4 is available not only in AWS Regions in North America but also in APAC, and Europe: US East (Ohio, N. Virginia), US West (Oregon), Asia Pacific (Hyderabad, Mumbai, Osaka, Seoul, Singapore, Sydney, Tokyo), and Europe (Spain). You can access the two models through cross-Region inference. Cross-Region inference helps to automatically select the optimal AWS Region within your geography to process your inference request.
Opus 4 tackles your most challenging development tasks, while Sonnet 4 excels at routine work with its optimal balance of speed and capability.
Mozilla has announced
that it is shutting down Pocket, a bookmarking service acquired by Mozilla
in 2017, this coming July. “Pocket has helped millions save articles
and discover stories worth reading. But the way people use the web has
evolved, so we’re channeling our resources into projects that better match
their browsing habits and online needs.“
This week’s wrap-up includes many new modules, but notably, we’ve upgraded Metasploit loading. Thanks to bcoles, the bootup performance when searching for a module has been increased in #20166. Also, we’ve reduced Metasploit startup time – in #20155.
New module content (6)
Gather Ticket Granting Service (TGS) tickets for User Service Principal Names (SPN)
Authors: Alberto Solino and smashery
Type: Auxiliary
Pull request: #20175 contributed by smashery
Path: gather/kerberoast
Description: This adds a native Metasploit module for performing Kerberoast attacks. With the native module, users will no longer need to have Python or additional Python libraries in order to leverage the attack technique.
Authors: Christophe De La Fuente and Stephen Fewer
Type: Exploit
Pull request: #20112 contributed by cdelafuente-r7
Path: linux/http/ivanti_connect_secure_stack_overflow_rce_cve_2025_22457
AttackerKB reference: CVE-2025-22457
Description: Adds an exploit module targeting CVE-2025-22457, a Stack-based Buffer Overflow vulnerability in Ivanti Connect Secure 22.7R2.5 and earlier.
Clinic’s Patient Management System 1.0 – Unauthenticated RCE
Authors: Ashish Kumar and msutovsky-r7
Type: Exploit
Pull request: #20177 contributed by msutovsky-r7
Path: multi/http/clinic_pms_sqli_to_rce
AttackerKB reference: CVE-2025-3096
Description: Clinic Patient’s Management System contains SQL injection vulnerability in login section. This module uses the vulnerability (CVE-2025-3096) to gain unauthorized access to the application. As lateral movement, it uses another vulnerability (CVE-2022-2297) to gain remote code execution.
Invision Community 5.0.6 customCss RCE
Authors: Egidio Romano (EgiX) and Valentin Lobstein
Type: Exploit
Pull request: #20214 contributed by Chocapikk
Path: multi/http/invision_customcss_rce
AttackerKB reference: CVE-2025-47916
Description: This adds a new exploit module for Invision Community versions up to and including 5.0.6, which is vulnerable to a remote-code injection in the theme editor’s customCss endpoint CVE-2025-47916. The module leverages the malformed {expression="…"} construct to evaluate arbitrary PHP expressions and supports both in-memory PHP payloads and direct system command execution.
Description: This adds a module for Nextcloud Workflow (CVE-2023-26482). Exploitation requires a set of valid credentials. The Nextcloud needs to have Workflow external script installed and enabled.
Samsung MagicINFO 9 Server Remote Code Execution (CVE-2024-7399)
Authors: Michael Heinzl and SSD Secure Disclosure
Type: Exploit
Pull request: #20188 contributed by h4x-x0r
Path: windows/http/magicinfo_traversal
AttackerKB reference: CVE-2024-7399
Description: This adds a module for CVE-2024-7399 – arbitrary file write as system authority. The module drops a shell by exploiting this vulnerability, allowing remote code execution. The application communicates on TCP port 7001 for HTTP and TCP port 7002 for HTTPS.
Enhancements and features (3)
#20155 from bcoles – This improves Metasploit reducing startup time.
#20175 from smashery – This adds a native Metasploit module for performing Kerberoast attacks. With the native module, users will no longer need to have Python or additional Python libraries in order to leverage the attack technique.
#20176 from smashery – This updates the ASREP roasting module (auxiliary/gather/asrep) to store the hashes in the database.
Bugs fixed (4)
#20166 from bcoles – Improves the bootup performance of msfconsole when searching for module platform classes.
#20179 from adfoster-r7 – This bumps the version of Metasploit Payloads to include a fix for the Java Meterpreter’s symlink handling on Windows.
#20194 from adfoster-r7 – Fixes a bug in the thinkphp RCE module that opted it out of auto-exploitation in Metasploit Pro.
#20207 from zeroSteiner – This adds a quick fix for the new auxiliary/gather/kerberoast module to ensure that the KrbCacheMode datastore option is used. This enables the user to instruct whether or not they want the module to use cached credentials or not.
Documentation
You can find the latest Metasploit documentation on our docsite at docs.metasploit.com.
Get it
As always, you can update to the latest Metasploit Framework with msfupdate
and you can get more details on the changes since the last blog post from
GitHub:
Our recent article on Home Assistant
observed that the project emphasizes installations using its own Linux
distribution or within containers. The project has now made that emphasis
rather stronger with this
announcement of the deprecation of the “core” and “supervised”
installation modes, which allowed Home Assistant to be installed as an
ordinary application on a Linux system.
These are advanced installation methods, with only a small
percentage of the community opting to use them. If you are using
these methods, you can continue to do so (you can even continue to
update your system), but in six months time, you will no longer be
supported, which I’ll explain the impacts of in the next
section. References to these installation methods will be removed
from our documentation after our next release (2025.6).
Support for 32-bit Arm and x86 architectures has also been deprecated.
Amazon Redshift supports querying data stored in Apache Iceberg tables managed by Amazon S3 Tables, which we previously covered as part of getting started blog post. While this blog post helps you to get started using Amazon Redshift with Amazon S3 Tables, there are additional steps you need to consider when working with your data in production environments, including who has access to your data and with what level of permissions.
In this post, we’ll build on the first post in this series to show you how to set up an Apache Iceberg data lake catalog using Amazon S3 Tables and provide different levels of access control to your data. Through this example, you’ll set up fine-grained access controls for multiple users and see how this works using Amazon Redshift. We’ll also review an example with simultaneously using data that resides both in Amazon Redshift and Amazon S3 Tables, enabling a unified analytics experience.
Solution overview
In this solution, we show how to query a dataset stored in Amazon S3 Tables for further analysis using data managed in Amazon Redshift. Specifically, we go through the steps shown in the following figure to load a dataset into Amazon S3 Tables, grant appropriate permissions, and finally execute queries to analyze our dataset for trends and insights.
In this post, you walk through the following steps:
Creating an Amazon S3 Table bucket: In AWS Management Console for Amazon S3, create an Amazon S3 Table bucket and integrate with other AWS analytics services
Creating an S3 Table and loading data: Run spark SQL in Amazon EMR to create a namespace and an S3 Table and load diabetic patients’ visit data
Granting permissions: Granting fine-grained access controls in AWS Lake Formation
Running SQL analytics: Querying S3 Tables using the auto mounted S3 Table catalog.
This post uses data from a healthcare use case to analyze information about diabetic patients and identify the frequency of age groups admitted to the hospital. You’ll use the preceding steps to perform this analysis.
Prerequisites
To begin, you need to add an Amazon Redshift service-linked role—AWSServiceRoleForRedshift—as a read-only administrator in Lake Formation. You can run following AWS Command Line Interface (AWS CLI) command to add the role.
Replace <account_number> with your account number and replace <region> with the AWS Region that you are using. You can run this command from AWS CloudShell or through AWS CLI configured in your environment.
Download the CloudFormation template, or you can use the Launch Stack button to automatically download it to your AWS environment. Note that network routes are directed to 255.255.255.255/32 for security reasons. Replace the routes with your organization’s IP addresses. Also enter your IP or VPN range for Jupyter Notebook access in the SourceCidrForNotebook parameter in CloudFormation.
This sample dataset is used to highlight this use case, the techniques covered can be adapted to your workflows. The following are more details about this dataset:
diabetic_encounters_s3.csv: Contains information about patient visits for diabetic treatment.
encounter_id: Unique number to refer to an encounter with a patient who has diabetes.
patient_nbr: Unique number to identify a patient.
num_procedures: Number of medical procedures administered.
num_medications: Number of medications provided during the visit
insulin: Insulin level observed. Valid values are steady, up, and no.
time_in_hospital: Duration of time in hospital in days.
readmitted: Readmitted to hospital within 30 days or after 30 days.
diabetic_patients_rs.csv: Contains patient information such as age group, gender, race, and number of visits.
patient_nbr: Unique number to identify a patient
race: Patient’s race
gender: Patient’s gender
age_grp: Patient’s age group. Valid values are 0-10, 10-20, 20-30, and so on
number_outpatient: Number of outpatient visits
number_emergency: Number of emergency room visits
number_inpatient: Number of inpatient visits
Now that you’ve set up the prerequisites, you’re ready to connect Amazon Redshift to query Apache Iceberg data stored in Amazon S3 Tables.
Create an S3 Table bucket
Before you can use Amazon Redshift to query the data in an Amazon S3 Table, you must create an Amazon S3 Table.
In the Table buckets view, there’s a section that describes Integration with AWS analytics services. Choose Enable Integration if you haven’t previously set this up. This sets up the integration with AWS analytics services, including Amazon Redshift, Amazon EMR, and Amazon Athena.
Wait a few seconds for the status to change to Enabled.
Choose Create table bucket and enter a bucket name. You can use any name that follows the naming conventions. In this example, we used the bucket name patient-encounter. When you’re finished, choose Create table bucket.
After the S3 Table bucket is created, you’ll be redirected to the Table buckets list. Copy the Amazon Resource Name (ARN) of the table bucket you just created to use in the next section.
Now that your S3 Table bucket is set up, you can load data.
Create S3 Table and load data
The CloudFormation template in the prerequisites created an Apache Spark cluster using Amazon EMR. You’ll use the Amazon EMR cluster to load data into Amazon S3 Tables.
Enter the following command to launch the Spark shell and initialize a Spark session for Iceberg that connects to your S3 Table bucket. Replace <Region>, <accountID> and <bucketname><bucket arn> with the information your region, account and bucket name.
Next, create a namespace that will link your S3 Table bucket with your Amazon Redshift Serverless workgroup. We chose encounters as the namespace for this example, but you can use a different name. Use the following SparkSQL command:
spark.sql("CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.encounters")
Create an Apache Iceberg table with name diabetic_encounters.
spark.sql(
""" CREATE TABLE IF NOT EXISTS s3tablesbucket.encounters.`diabetic_encounters` (
encounter_id INT,
patient_nbr INT,
num_procedures INT,
num_medications INT,
insulin STRING,
time_in_hospital INT,
readmitted STRING
)
USING iceberg """
)
Load csv into the S3 Table encounters.diabetic_encounters. Replace <diabetic_encounters_s3.csv file location> with the Amazon S3 file path of the diabetic_encounters_s3.csv file you uploaded earlier.
On the Grant Permissions page, under Principals, select IAM users and roles.
Select the IAM user nurse.
For Catalogs, select <accoundID>:s3tablescatalog/patient-encounter.
For Databases, select encounter
Scroll down. For Tables, select diabetic_encounters.
For Table permissions, select Select.
For Data permissions, select All data access.
Choose Grant. This will grant select access on all the columns in diabetic_encounters to the nurse
Now grant access to the diabetic_encounters table for the analyst user.
Repeat the same steps that you followed for nurse user up to step 7 in the previous section.
For Data permissions, select Column-based access. Select Include columns and select the encounter_id, patient_nbr, and readmitted columns
Choose Grant. This will grant select access on the encounter_id, patient_nbr, and readmitted columns in diabetic_encounters to the analyst
Run SQL analytics
In this section, you will access the data in the diabetic_encounters S3 Table using nurse and analyst to learn how fine-grain access control works. You will also combine data from the S3 Table data with a local table in Amazon Redshift using a single query.
In the Amazon Redshift Query Editor V2, connect to serverless:rs-demo-wg, an Amazon Redshift Serverless instance created by the CloudFormation template.
Select Database user name and password as the connection method and connect using super user awsuser. Provide the password you gave as an input parameter to the CloudFormation stack.
Run the following commands to create the IAM users nurse and analyst in Amazon Redshift.
CREATE USER IAM:nurse password disable;
CREATE USER IAM:analyst password disable;
Amazon Redshift automatically mounts the Data Catalog as an external database named awsdatacatalog to simplify accessing your tables in Data Catalog. You can grant usage access to this database for the IAM users:
GRANT USAGE ON DATABASE awsdatacatalog to "IAM:nurse";
GRANT USAGE ON DATABASE awsdatacatalog to "IAM:analyst";
For the next steps, you must first sign in to the AWS Console as the nurse IAM user. You can find the IAM user’s password in the AWS Secrets Manager console and retrieving the value from the secret ending with iam-users-credentials. See Get a secret value using the AWS console for more information.
Sign in to your Amazon Redshift cluster using the IAM:nurse. You can do this by connecting to serverless:rs-demo-wg as Federated user. This applies the permission provided in Lake Formation for accessing your data in Amazon S3 Tables:
Run following SQL to query S3 Table diabetic_encounters.
SELECT * FROM patient-encounter@s3tablescatalog"."encounters"."diabetic_encounters";
This returns all the data in the S3 Table for diabetic_encounters across every column in the table, as shown in the following figure:
Recall that you also created an IAM user called analyst that only has access to the encounter_id, patient_nbr, and readmitted columns. Let’s verify that analyst user can only access those columns.
Sign in to the AWS console as the analyst IAM user and open the Amazon Redshift Query Editor v2 using the same steps as above. Run the same query as before:
SELECT * FROM patient-encounter@s3tablescatalog"."encounters"."diabetic_encounters";
This time, you should only the encounter_id, patient_nbr, and readmitted columns:
Now that you’ve seen how you can access data in Amazon S3 Tables from Amazon Redshift while setting the levels of access required for your users, let’s see how we can join data in S3 Tables to tables that already exist in Amazon Redshift.
Combine data from an S3 Table and a local table in Amazon Redshift
For this section, you’ll load data into your local Amazon Redshift cluster. After this is complete, you can analyze the datasets in both Amazon Redshift and S3 Tables.
First, as the analytics federated user, sign in to your Amazon Redshift cluster using Amazon Redshift Query Editor v2.
Use the following SQL command to create a table that contains patient information.:
Copy patient information from the file csv that’s stored in your Amazon S3 object bucket. Replace <diabetic_patients_rs.csv file S3 location> with the location of the file in your S3 bucket.
COPY dev.public.patient_info FROM 's3://<diabetic_patients_rs.csv file S3 location>'
IAM_ROLE default
FORMAT AS CSV DELIMITER ','
IGNOREHEADER 1;
Use the following query to review the sample data to verify that the command was successful. This will show information from 10 patients, as shown in the following figure.
SELECT * FROM public.patient_info limit 10;
Now combine data from the Amazon S3 Table diabetic_encounters and the Amazon Redshift patient_info. In this example, the query fetches information about what age group was most frequently readmitted to the hospital within 30 days of an initial hospital visit:
SELECT
age_grp,
count(*) readmission_count
FROM
"patient-encounter@s3tablescatalog"."encounters"."diabetic_encounters" a
JOIN public.patient_info b ON b.patient_nbr = a.patient_nbr
WHERE
a.readmitted='<30'
GROUP BY age_grp
ORDER BY readmission_count DESC
LIMIT 1;
This query returns results showing an age group and the number of re-admissions, as shown in the following figure.
In this post, you walked through an end-to-end process for setting up security and governance controls for Apache Iceberg data stored in Amazon S3 Tables and accessing it from Amazon Redshift. This includes creating S3 Tables, loading data into them, registering the tables in a data lake catalog, setting up access controls, and querying the data using Amazon Redshift. You also learned how to combine data from Amazon S3 Tables and local Amazon Redshift tables stored in Redshift Managed Storage in a single query, enabling a seamless, unified analytics experience. Try out these features and see Working with Amazon S3 Tables and table buckets for more details. We welcome your feedback in the comments section.
About the Authors
Satesh Sonti is a Sr. Analytics Specialist Solutions Architect based out of Atlanta, specializing in building enterprise data platforms, data warehousing, and analytics solutions. He has over 19 years of experience in building data assets and leading complex data platform programs for banking and insurance clients across the globe.
Jonathan Katz is a Principal Product Manager – Technical on the Amazon Redshift team and is based in New York. He is a Core Team member of the open source PostgreSQL project and an active open source contributor, including PostgreSQL and the pgvector project.
The Fedora Council has ruled on the Fedora Engineering Steering
Council’s (FESCo) decision last year to revoke Peter Robinson’s
provenpackager status. In a statement
published to the fedora-devel-announce mailing list, the council has
announced that it has overturned FESCo’s decision:
FESCo didn’t have a specific policy for dealing with a request to remove
Proven Packager rights. In addition, the FESCo process was handled entirely
in private. The contributor didn’t receive a formal notification or warning
from FESCo, and felt blindsided by the official decision when and how it was
announced. The Fedora Council would like to extend our sincerest apology on
behalf of the Fedora Project to them.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.