Post Syndicated from Curious Droid original https://www.youtube.com/watch?v=fc-xe6dO29o
Suricata 7 Released First Major Version Update Since 2020
Post Syndicated from Rohit Kumar original https://www.servethehome.com/suricata-7-released-first-major-version-update-since-2020/
Suricata 7 is out marking the first major version update of the popular IDS and IPS network security tool since Suricata 6 in 2020
The post Suricata 7 Released First Major Version Update Since 2020 appeared first on ServeTheHome.
Mystery aviation tape machine
Post Syndicated from Techmoan original https://www.youtube.com/watch?v=w-nlHWKM1ik
Седмицата (17–22 юли)
Post Syndicated from Светла Енчева original https://www.toest.bg/sedmitsata-17-22-yuli/

Измина още една седмица, изпълнена с жега – и метеорологична, и политическа. Президентът и „Възраждане“ упорито се опитват да стигнат до границите на политическата система и на обществената поносимост. Първият – посредством свръхактивност, надхвърляща правомощията му, и все повече обиди към несъгласните с позициите на Русия. Вторите – чрез все повече омраза и заплахи, като актуалната форма на омраза за „възрожденци“ е антисемитизмът.
Продължаваме не с политика, а с наука. Ако в жегата имате чувството, че мозъкът ви ни приема, ни предава, от новата статия на Анастасия Орманджиева „Как си комуникират мозъкът и имунната система“ ще научите, че той поне си общува с имунната ви система, както и тя – с него. Това на пръв поглед може да изглежда успокоително, но е свързано с нещо не толкова приятно – автоимунните заболявания. И понеже стресът може да ни докара някоя от онези в общия случай нелечими (макар и обикновено не смъртоносни) автоимунни болести, да си припомним съвета от „Пътеводител на галактическия стопаджия“ на Дъглас Адамс – не този за хавлията, а „Без паника“.
Направихме плавен преход от науката към литературата. В рубриката „На второ четене“ Стефан Иванов ни предлага „Летният брат“ от нидерландския автор Яп Робен в превод на Мария Енчева. Колкото и невероятно да звучи, Стефан е на мнение, че това е една от най-подходящите книги за четене през ваканцията и на плажа или пък в планината, изобщо – където и да си почиваме. В книгата се разказва – брутално нежно, без да е елементарно сантиментално или манипулативно – как двама братя, единият от които с увреждане, прекарват лятото заедно с баща си.
След като сме получили здравословна и освежаваща литературна храна за мозъка си, може да се върнем към политиката. И по-конкретно – към местните избори в столицата. „Ами ако ГЕРБ издигне Росен Желязков?“, пита Емилия Милчева в тазседмичния си коментар. Този път може и да има битка за София, но тя ще изглежда по странен начин, защото главните опоненти са в не-коалиция, а между тях гори не-любов. Докато ГЕРБ неавтентично се изказва от името на „автентичното дясно“, неофициално се говори, че настоящият председател на парламента Росен Желязков загрява за кметската битка. Ако това е вярно, според Емилия битката ще е истинска.
Продължавам с тема, която следя от години (извинявайте, че ви занимавам със себе си, но какво да се прави, като съм дежурна по бюлетин). Става дума за (не)забелязването на хомофобията от страна на политическите субекти в България. Във връзка с това се случи нещо важно: ПП и ДБ казаха думата „хомофобия“ в заглавието на своя официална позиция. Дано обаче не си останат с едното казване, а и направят каквото зависи от тях за ограничаването на хомофобията.
Но да се върнем на лятото. Едно от спасенията в жегата са доматите. А в статията си You say tomatl, I say домат Екатерина Петрова ни разказва откъде идват различните названия на домата. Златни, райски, любовни, обожаеми – това са все определения, присъстващи в различните имена на доматите. Дали пък няма да се окаже, че забраненият плод в райската градина всъщност е домат, пита се Екатерина Петрова.
Време е за обичайните ми препоръки. Започвам с доматите. И с динята, таратора, водата (за мен – с парче лимон, ако може) – изобщо всичко, което ви разхлажда в летните жеги.
Пък ако не сте отписали напълно Българското Черноморие и Бургас ви е на път, защо не посетите изложба на открито, част от фотографския фестивал „ФотоФабрика“ по случай 10-тата му годишнината? Тя може да се види до 20 август на кейовата стена на Морската гара, срещу входа на бургаския филиал на Националната художествена академия (НХА). Ето начин да захраните мозъка си с прекрасни снимки на световни и български фотографи. За да не е толкова зает с имунната ви система.
Приятно четене, разхлаждане и естетически удоволствия!
Comic for 2023.07.22 – Make-A-Wish
Post Syndicated from Explosm.net original https://explosm.net/comics/make-a-wish
New Cyanide and Happiness Comic
Friday Squid Blogging: Chromatophores
Post Syndicated from Bruce Schneier original https://www.schneier.com/blog/archives/2023/07/friday-squid-blogging-chromatophores.html
Neat:
Chromatophores are tiny color-changing cells in cephalopods. Watch them blink back and forth from purple to white on this squid’s skin in an Instagram video taken by Drew Chicone…
It’s completely hypnotic to watch these tiny cells flash with color. It’s as if the squid has a little sky full of twinkling stars on its skin. This has to be one of the coolest looking sea creatures I’ve seen.
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
Read my blog posting guidelines here.
You say tomatl, I say домат
Post Syndicated from original https://www.toest.bg/you-say-tomatl-i-say-domat/

Откакто се помня, винаги съм смятала доматите – особено онези огромните, буквално пукащи се от сочност и вкус, които се появяват през месец юли – за божествена храна. Но когато преди години тръгнах да пътувам из Балканите, личното ми благоговение пред домата като пред райски плод – или ако предпочитате, зеленчук¹ – получи и етимологично потвърждение. И то многократно.
На първото попаднах в един ресторант в Любляна, когато си поръчах екзотично звучащата solata paradižnik na posteljici iz rukole, но вместо с очакваната райска ябълка, канапето от рукола беше посипано с чери доматчета. Впоследствие, вече подготвена за божествени кулинарни преживявания, ядох пица с rajčice i šunke в Загреб, дюнер с paradajz i ljuti sos в Сараево, a в Белград един месец се изхранвах почти изцяло с парадаjз сок.
Българската дума, за съжаление, не съдържа такива „(па)ра(да)йски“ асоциации, но за сметка на това нейната етимология отразява географския произход и историята на разпространението на домата. Според Българския етимологичен речник думата е навлязла в нашия език чрез турската domates или гръцката ντομάτα (domata, самата тя заета от турски), а те от своя страна идват от френската и испанска tomate.
Но първоизточникът както на тези думи, така и на самия плод всъщност е Южна Америка.
Столетия преди европейците да стъпят на континента, диви предшественици на днешните домати с размер на грахови зърна растат из Андите, а местното население постепенно ги пренася на север към Централна Америка и от около 700 г.сл.Хр. започва да ги култивира.
Когато испанските завоеватели влизат в контакт с ацтеките в началото на XVI век, те вече отдавна отглеждат и консумират домата, който наричат
tomatl на уто-ацтекския език науатъл. Наименованието, буквално означаващо „набъбнал плод“, произлиза от думите tomahuac (‘голям’, ‘дебел’, ‘тежък’) и atl (‘вода’).
Като част от т.нар. Колумбова обмяна, включваща много други растения, животни, ценни метали, болести, а даже и хора, испанците пренасят домата – а заедно с него и думата – в Европа. След като навлиза в испанския като tomate, с малки вариации тя се разпространява в различни езици от разнообразни езикови групи не само из Стария континент, а и отвъд него: освен в гореспоменатите испански, френски, турски и гръцки, а оттам и в български, македонски и албански, думата е сродна в шведски, датски, норвежки, но и в иначе несродните един с друг естонски (tomat) и латвийски (tomāts), в арабски (طماطم/tamatim), a даже и в хинди (टमाटर /tamaatar), зулуски (utamatisi) и японски (トマト/tomato).
В английския език думата tomato се появява чак в средата на XVIII век², като през предходните два века доматът – смятан по-скоро за декоративен и негоден за консумация, а вероятно и отровен – e бил известен като love applе, калка от френската pomme d’amour, преминала и в немския като Liebesapfel. Едно от възможните обяснения за тези „любовни“ названия са предполагаемите (може би заради еротичния вид на разрязания плод) свойства на домата като афродизиак.
Според експертите обаче по-вероятно е тези понятия да произлизат от грешния превод на италианското наименование на домата, pomodoro – вместо от d’oro (‘от злато’), то е било интерпретирано като произлизащо от adorare (‘обожавам’). Италианското название, което буквално означава „златна ябълка“ – вероятно тъй като първите домати, стигнали до Италия, са били жълти и оранжеви на цвят – е измислено от ботаника Пиетро Андреа Матиоли, който първоначално нарича домата с латинското название malum aureum³, a впоследствие го превежда на италиански.
Въпреки че италианското название на домата не се задържа (поне не и под формата на грешно калкирана дума) в английския, френския или немския, думата pomodoro прескача централната и югоизточната част на Европа и се озовава в североизточната⁴. Там тя се превръща в база на думите, означаващи „домат“ – първо на полски (pomidor), а оттам и на няколко съседни езика: украински (помідор), беларуски (памідор), литовски (pomidoras) и руски (помидор)⁵.
Междувременно в „прескочената“ югоизточна част на Европа, както стана ясно в началото на текста, доматът получава серия наименования, навяващи „райски“ асоциации. Техният първоизточник, оказва се, е остарялата диалектна немска дума Paradeiser, която в Австрия и досега често се използва вместо книжовната Tomate. Освен в споменатите по-горе балкански езици, Paradeiser вдъхновява думите за „домат“ и в унгарски (paradicsom), словашки (paradajka) и чешки (rajče).
Самата дума Paradeiser пък идва от Paradiesapfel, което буквално означава „райска ябълка“ и служи за наименование на библейския „забранен плод“. Ето как, понеже
в Библията точният вид на „забранения плод“ всъщност не е упоменат, той като нищо може да се окаже, че е не ябълка, а домат⁶.
Лично на мен това предположение ми звучи доста убедително – не само защото се римува, а най-вече защото дори и най-свежата и сочна ябълка не може да ме изкуши така, както може да го направи един юлски градински домат.
И като стана дума за изкушения, интересен е случаят с думата на иврит, която не е етимологично свързана с никоя от гореспоменатите групи. Появила се едва през 1886 г., вероятно като отражение на европейските „любовни“ наименования на домата, думата עגבניה (agvania) произлиза от корена עגב („желая, изпитвам страст/похот“). Въпреки съпротивата срещу нея заради „непристойния“ ѝ корен (който е в основата и на думата „сифилис“!), опитите да бъде заменена с по-прилично наименование – например סומקנייה (sumkaniya), от סומק (sumak), тоест „червен“ – се оказват неуспешни и тя, с цялата си греховна изкусителност, трайно се установява в иврит.
Независимо дали се обозначава с термин, произлизащ от науатълския tomatl, италианския pomodoro, германския Paradiesapfel или с нещо съвсем отделно, доматът неизменно се свързва и с още една интересна дума, която идва от японския, но вече е навлязла в много други езици, а именно „умами“. Произлизащо от думата 旨い (umai), или „вкусно“, която има същевременно хедонистки и чисто вкусови конотации,
„умами“ е наименованието на един от петте основни вкуса
(заедно със солено, сладко, кисело и горчиво), които човешкият език разпознава и – буквално и преносно – може да идентифицира.
Когато неотдавна научих за съществуването му, разбрах, че много от любимите през целия ми живот храни всъщност принадлежат точно към категорията на умами – сред тях са киселото зеле, месото, гъбите, соевият сос, различните видове риба, ферментиралите сирена и… разбира се, доматите⁷.
Въпреки че се изкушавам да търся някаква небесна (или пък греховна) причина за вкусовите качества на умами, за тях си има съвсем научно обяснение – съдържанието на глутамат във всички тези храни. Освен като основен невротрансмитер в мозъка, тоест мозъчен стимулант, глутаматът, който е най-изобилната аминокиселина в човешкото тяло, действа и като индикация, че във въпросната храна има протеин. Това засилва апетита, като същевременно създава по-бързо усещане за ситост.
Точно вкусът умами обяснява още един феномен, който досега съм смятала за доказателство за „божествените“ качества на домата, а именно че
нивата на консумация на доматен сок са многократно по-високи „в небесата“, отколкото на земята.
Според научни изследвания шумът, ниската влага и налягането в самолета по време на полет намаляват способността ни да усещаме всички останали вкусове с изключение на умами, който не само не е притъпен, а става по-интензивен.
Макар и, както вече споменах, италианското наименование на домата да е навлязло в относително ограничен брой други езици, думата pomidoro в наши дни все пак е доста разпространена по света – но не благодарение на самия плод, а на кухненски таймер с формата на домат. Когато Франческо Чирило измисля метода „Помодоро“ в края на 80-те години – техника за съсредоточена работа в интервали от 25 минути, последвани от кратка почивка – той използва точно такъв таймер, за да засича времето.
Аз също реших да приложа метода, за да напиша този текст. Подозирам обаче, че успешното му завършване се дължи не толкова на това, колкото на огромните количества домати под формата на салати, сокове, сосове и гарнитури, които изконсумирах по време на писането му.
2 Tова, че в песента – откъдето е заето и заглавието на този текст – Ела Фицджералд и Луис Армстронг редом с доматите пеят и за картофи, изглежда, изобщо не е случайно. Според Online Etymology Dictionary изписването на английската дума tomato е повлияно от изписването на внесената пак от Новия свят (по-точно от карибския език таино) два века по-рано дума potato.
3 Като един от най-често срещаните плодове в Европа ябълката е дала името си, в комбинация с допълнителна пояснителна дума, на редица плодове, внесени на континента през вековете, например английската дума за „нар“ (pomegranate, от „ябълка“ + „семена“) и „пъпеш“ (melon, от старогръцката μηλοπέπων (mēlopépōn), от μῆλον (melon), тоест „ябълка“ + πέπων (pépōn), или „зряла“), френските и фламандските думи за „картоф“ (pomme de terre и aardappel), буквално „земна ябълка“) или думата „портокал“ на идиш (פּאָמעראַנץ/pomerants), от латинската pomum (‘ябълка’) + arancia (‘оранжево’). На български, разбира се, имаме „райска ябълка“, чието ботаническо наименование Diospyros kaki идва от гръцкото διόσπυρος (‘божествен огън’).
4 Макар и историците да го оборват като кулинарен мит, според една от версиите италианското наименование на домата пристига в Полша благодарение на Бона Сфорца, италианска херцогиня, която през 1518 г. става втора съпруга на полския крал Зигмунт I и кралица на Полша. Според мита тя внася редица непознати до този момент зеленчуци, чиито наименования на полски – а както се оказва и на български! – произлизат от италианския: освен доматите (pomodori/pomidory) те включват и карфиола (cavolfiore/kalafior), артишока (carciofi/karczochy) и зеления фасул (fagiolo/fasola). А връзката от моркови, праз, пащърнак и други зеленчуци, използвани за готвене на супа, се нарича włoszczyzna, което буквално означава „нещо италианско“ (Италия на полски е Włochy).
5 Вероятно през руския „помидор“ италианската дума достига и до грузинския (პომიდორი/pomidori), азербайджанския (pomidor) и казахския (помидор). И макар че на книжовен арабски думата ﻃَﻤَﺎﻃِﻢ (tamatim) произлиза от ацтекския първоизточник, в Сирия, Ливан и Палестина за „домат“ се използва думата بندورة (banadūra).
6 В еврейския текст на Стария завет забраненият плод е наречен פֶּ֫רִי (peri ), тоест просто „плод“, а различни интерпретации предлагат разнообразни версии относно точния му вид, сред които са смокиня, нар, грозде, кайсия, круша, дюля, цитрон и др. Но когато св. Йероним превежда Библията от гръцки и еврейски на латински език между 383 г. и 406 г., той не пропуска шанса за игра на думи и превежда peri с думата malum, която на латински има две съвсем различни значения: едното е „зло“, от прилагателното malus, тоест „лош“ или „зъл“, а второто е „ябълка“, от старогръцката дума μᾶλον (mâlon).
7 Освен гореизброените храни, човешката кърма също има изразен умами вкус, като според някои изследвания вкусът умами в кърмата е десет пъти по-силен от този в кравето мляко. (Тук се изкушавам да се заиграя с „у мама“ и „умами“, но не на всички ни е дадено да сме остроумни и забавни като св. Йероним.)
В рубриката „От дума на дума“ Екатерина Петрова търси актуални, интересни или новопоявили се думи от нашето ежедневие и проследява често изненадващия им произход, развитието на значенията им във времето и взаимовръзките им с близки и далечни езици.
Comic for 2023.07.21 – Block
Post Syndicated from Explosm.net original https://explosm.net/comics/block
New Cyanide and Happiness Comic
Metasploit Weekly Wrap up
Post Syndicated from Jack Heysel original https://blog.rapid7.com/2023/07/21/metasploit-weekly-wrap-up-20/
It’s open season on Openfire with a new RCE module in Metasploit

This week the Metasploit framework saw the addition of an RCE module which exploits path traversal vulnerability in the instant messaging and group chat server, Openfire. The module was submitted by the one and only community contributor h00die-gr3y. The module targets Openfire’s unauthenticated setup environment, in an already configured Openfire environment, to access restricted pages in the Admin Console reserved for administrative users. This module uses a path traversal vulnerability to create a new admin user that is used to upload a Openfire management plugin weaponized with a Java native payload that triggers an RCE. The module is quite flexible and will get you shells when Openfire is running in Windows, Linux and on a variety of different Java versions.
New module content (2)
Piwigo CVE-2023-26876 Gather Credentials via SQL Injection
Authors: Rodolfo Tavares, Tempest Security, Henrique Arcoverde, and rodnt
Type: Auxiliary
Pull request: #18182 contributed by rodnt
AttackerKB reference: CVE-2023-26876
Description: This PR adds an auxiliary module that takes advantage of CVE-2023-26876 to retrieve the username and password hash from piwigo v.13.5.0 and earlier.
Openfire authentication bypass with RCE plugin
Author: h00die-gr3y
Type: Exploit
Pull request: #18173 contributed by h00die-gr3y
AttackerKB reference: CVE-2023-32315
Description: This PR adds a module for CVE-2023-32315, a remote code execution vulnerability for all versions of Openfire that have been released since April 2015, starting with version 3.10.0. Patched versions are 4.7.5+ 4.6.8+ and 4.8.0+.
Enhancements and features (1)
- #17681 from MegaManSec – This PR adds a new datastore option for Jenkins home directory to the
jenkins_gathermodule.
Bugs fixed (0)
None
Documentation added (1)
- #18186 from adfoster-r7 – This PR updates multiple code and console snippets within the Wiki to now have syntax highlighting
You can always find more 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:
If you are a git user, you can clone the Metasploit Framework repo (master branch) for the latest.
To install fresh without using git, you can use the open-source-only Nightly Installers or the
binary installers (which also include the commercial edition).
Implement tag-based access control for your data lake and Amazon Redshift data sharing with AWS Lake Formation
Post Syndicated from Praveen Kumar original https://aws.amazon.com/blogs/big-data/implement-tag-based-access-control-for-your-data-lake-and-amazon-redshift-data-sharing-with-aws-lake-formation/
Data-driven organizations treat data as an asset and use it across different lines of business (LOBs) to drive timely insights and better business decisions. Many organizations have a distributed tools and infrastructure across various business units. This leads to having data across many instances of data warehouses and data lakes using a modern data architecture in separate AWS accounts.
Amazon Redshift data sharing allows you to securely share live, transactionally consistent data in one Amazon Redshift data warehouse with another Redshift data warehouse within the same AWS account, across accounts, and across Regions, without needing to copy or move data from one cluster to another. Customers want to be able to manage their permissions in a central place across all of their assets. Previously, the management of Redshift datashares was limited to only within Amazon Redshift, which made it difficult to manage your data lake permissions and Amazon Redshift permissions in a single place. For example, you had to navigate to an individual account to view and manage access information for Amazon Redshift and the data lake on Amazon Simple Storage Service (Amazon S3). As an organization grows, administrators want a mechanism to effectively and centrally manage data sharing across data lakes and data warehouses for governance and auditing, and to enforce fine-grained access control.
We recently announced the integration of Amazon Redshift data sharing with AWS Lake Formation. With this feature, Amazon Redshift customers can now manage sharing, apply access policies centrally, and effectively scale the permission using LF-Tags.
Lake Formation has been a popular choice for centrally governing data lakes backed by Amazon S3. Now, with Lake Formation support for Amazon Redshift data sharing, it opens up new design patterns and broadens governance and security posture across data warehouses. With this integration, you can use Lake Formation to define fine-grained access control on tables and views being shared with Amazon Redshift data sharing for federated AWS Identity and Access Management (IAM) users and IAM roles. Lake Formation also provides tag-based access control (TBAC), which can be used to simplify and scale governance of data catalog objects such as databases and tables.
In this post, we discuss this new feature and how to implement TBAC for your data lake and Amazon Redshift data sharing on Lake Formation.
Solution overview
Lake Formation tag-based access control (LF-TBAC) allows you to group similar AWS Glue Data Catalog resources together and define the grant or revoke permissions policy by using an LF-Tag expression. LF-Tags are hierarchical in that when a database is tagged with an LF-Tag, all tables in that database inherit the tag, and when a LF-Tag is applied to a table, all the columns within that table inherit the tag. Inherited tags then can be overridden if needed. You then can create access policies within Lake Formation using LF-Tag expressions to grant principals access to tagged resources using an LF-Tag expression. See Managing LF-Tags for metadata access control for more details.
To demonstrate LF-TBAC with central data access governance capability, we use the scenario where two separate business units own particular datasets and need to share data across teams.
We have a customer care team who manages and owns the customer information database including customer demographics data. And have a marketing team who owns a customer leads dataset, which includes information on prospective customers and contact leads.
To be able to run effective campaigns, the marketing team needs access to the customer data. In this post, we demonstrate the process of sharing this data that is stored in the data warehouse and giving the marketing team access. Furthermore, there are personally identifiable information (PII) columns within the customer dataset that should only be accessed by a subset of power users on a need-to-know basis. This way, data analysts within marketing can only see non-PII columns to be able to run anonymous customer segment analysis, but a group of power users can access PII columns (for example, customer email address) to be able to run campaigns or surveys for specific groups of customers.
The following diagram shows the structure of the datasets that we work with in this post and a tagging strategy to provide fine-grained column-level access.

Beyond our tagging strategy on the data resources, the following table gives an overview of how we should grant permissions to our two personas via tags.
| IAM Role | Persona | Resource Type | Permission | LF-Tag expression |
| marketing-analyst | A data analyst in the marketing team | DB | describe | (department:marketing OR department:customer) AND classification:private |
| . | Table | select | (department:marketing OR department:customer) AND classification:private | |
| . | . | . | . | . |
| marketing-poweruser | A privileged user in the marketing team | DB | describe | (department:marketing OR department:customer) AND classification: private |
| . | Table (Column) | select | (department:marketing OR department:customer) AND (classification:private OR classification:pii-sensitive) |
The following diagram gives a high-level overview of the setup that we deploy in this post.

The following is a high-level overview of how to use Lake Formation to control datashare permissions:
Producer Setup:
- In the producers AWS account, the Amazon Redshift administrator that owns the customer database creates a Redshift datashare on the producer cluster and grants usage to the AWS Glue Data Catalog in the same account.
- The producer cluster administrator authorizes the Lake Formation account to access the datashare.
- In Lake Formation, the Lake Formation administrator discovers and registers the datashares. They must discover the AWS Glue ARNs they have access to and associate the datashares with an AWS Glue Data Catalog ARN. If you’re using the AWS Command Line Interface (AWS CLI), you can discover and accept datashares with the Redshift CLI operations describe-data-shares and associate-data-share-consumer. To register a datashare, use the Lake Formation CLI operation register-resource.
- The Lake Formation administrator creates a federated database in the AWS Glue Data Catalog; assigns tags to the databases, tables, and columns; and configures Lake Formation permissions to control user access to objects within the datashare. For more information about federated databases in AWS Glue, see Managing permissions for data in an Amazon Redshift datashare.
Consumer Setup:
- On the consumer side (marketing), the Amazon Redshift administrator discovers the AWS Glue database ARNs they have access to, creates an external database in the Redshift consumer cluster using an AWS Glue database ARN, and grants usage to database users authenticated with IAM credentials to start querying the Redshift database.
- Database users can use the views
SVV_EXTERNAL_TABLESandSVV_EXTERNAL_COLUMNSto find all the tables or columns within the AWS Glue database that they have access to; then they can query the AWS Glue database’s tables.
When the producer cluster administrator decides to no longer share the data with the consumer cluster, the producer cluster administrator can revoke usage, deauthorize, or delete the datashare from Amazon Redshift. The associated permissions and objects in Lake Formation are not automatically deleted.
Prerequisites:
To follow the steps in this post, you must satisfy the following prerequisites:
- You need an AWS account. If you don’t have an account, you can create one.
- To run AWS CLI commands, you need to set up AWS CloudShell in your account or the AWS CLI on your workstation. For instructions, refer to Getting started with AWS CloudShell or Set up the AWS CLI, respectively.
- You have completed the initial setup of Lake Formation, including changing the default permission model and creating a data lake administrator role. Take note of this role’s ARN to use later in the steps. For simplicity sake, you can assign the
AdministratorAccessIAM policy to this role, but make sure that in your environment you follow the least privilege principal.
Deploy environment including producer and consumer Redshift clusters
To follow along the steps outlined in this post, deploy following AWS CloudFormation stack that includes necessary resources to demonstrate the subject of this post:
- Choose Launch stack to deploy a CloudFormation template.

- Provide an IAM role that you have already configured as a Lake Formation administrator.
- Complete the steps to deploy the template and leave all settings as default.
- Select I acknowledge that AWS CloudFormation might create IAM resources, then choose Submit.

This CloudFormation stack creates the following resources:
- Producer Redshift cluster – Owned by the customer care team and has customer and demographic data on it.
- Consumer Redshift cluster – Owned by the marketing team and is used to analyze data across data warehouses and data lakes.
- S3 data lake – Contains the web activity and leads datasets.
- Other necessary resources to demonstrate the process of sharing data – For example, IAM roles, Lake Formation configuration, and more. For a full list of resources created by the stack, examine the CloudFormation template.
After you deploy this CloudFormation template, resources created will incur cost to your AWS account. At the end of the process, make sure that you clean up resources to avoid unnecessary charges.
After the CloudFormation stack is deployed successfully (status shows as CREATE_COMPLETE), take note of the following items on the Outputs tab:
- Marketing analyst role ARN
- Marketing power user role ARN
- URL for Amazon Redshift admin password stored in AWS Secrets Manager

Create a Redshift datashare and add relevant tables
On the AWS Management Console, switch to the role that you nominated as Lake Formation admin when deploying the CloudFormation template. Then go to Query Editor v2. If this is the first time using Query Editor V2 in your account, follow these steps to configure your AWS account.
The first step in Query Editor is to log in to the customer Redshift cluster using the database admin credentials to make your IAM admin role a DB admin on the database.
- Choose the options menu (three dots) next to the
lfunified-customer-dwh clusterand choose Create connection.

- Select Database user name and password.
- Leave Database as
dev. - For User name, enter
admin. - For Password, complete the following steps:
- Go to the console URL, which is the value of the
RedShiftClusterPasswordCloudFormation output in previous step. The URL is the Secrets Manager console for this password. - Scroll down to the Secret value section and choose Retrieve secret value.

- Take note of the password to use later when connecting to the marketing Redshift cluster.
- Enter this value for Password.
- Go to the console URL, which is the value of the
- Choose Create connection.

Create a datashare using a SQL command
Complete the following steps to create a datashare in the data producer cluster (customer care) and share it with Lake Formation:
- On the Amazon Redshift console, in the navigation pane, choose Editor, then Query editor V2.
- Choose (right-click) the cluster name and choose Edit connection or Create connection.
- For Authentication, select Temporary credentials using your IAM identity.
Refer to Connecting to an Amazon Redshift database to learn more about the various authentication methods.
- For Database, enter a database name (for this post,
dev). - Choose Create connection to connect to the database.

- Run the following SQL commands to create the datashare and add the data objects to be shared:
- Run the following SQL command to share the customer datashare to the current account via the AWS Glue Data Catalog:
- Verify the datashare was created and objects shared by running the following SQL command:

Take note of the datashare producer cluster name space and account ID, which will be used in the following step. You can complete the following actions on the console, but for simplicity, we use AWS CLI commands.
- Go to CloudShell or your AWS CLI and run the following AWS CLI command to authorize the datashare to the Data Catalog so that Lake Formation can manage them:
The following is an example output:
Take note of your datashare ARN that you used in this command to use in the next steps.
Accept the datashare in the Lake Formation catalog
To accept the datashare, complete the following steps:
- Run the following AWS CLI command to accept and associate the Amazon Redshift datashare to the AWS Glue Data Catalog:
The following is an example output:
- Register the datashare in Lake Formation:
- Create the AWS Glue database that points to the accepted Redshift datashare:
- To verify, go to the Lake Formation console and check that the database
customer_db_sharedis created.

Now the data lake administrator can view and grant access on both the database and tables to the data consumer team (marketing) personas using Lake Formation TBAC.
Assign Lake Formation tags to resources
Before we grant appropriate access to the IAM principals of the data analyst and power user within the marketing team, we have to assign LF-tags to tables and columns of the customer_db_shared database. We then grant these principals permission to appropriate LF-tags.
To assign LF-tags, follow these steps:
- Assign the department and classification LF-tag to
customer_db_shared(Redshift datashare) based on the tagging strategy table in the solution overview. You can run the following actions on the console, but for this post, we use the following AWS CLI command:
If the command is successful, you should get a response like the following:
- Assign the appropriate department and classification LF-tag to
marketing_db(on the S3 data lake):
Note that although you only assign the department and classification tag on the database level, it gets inherited by the tables and columns within that database.
- Assign the classification
pii-sensitiveLF-tag to PII columns of thecustomertable to override the inherited value from the database level:
Grant permission based on LF-tag association
Run the following two AWS CLI commands to allow the marketing data analyst access to the customer table excluding the pii-sensitive (PII) columns. Replace the value for DataLakePrincipalIdentifier with the MarketingAnalystRoleARN that you noted from the outputs of the CloudFormation stack:
We have now granted marketing analysts access to the customer database and tables that are not pii-sensitive.
To allow marketing power users access to table columns with restricted LF-tag (PII columns), run the following AWS CLI command:
We can combine the grants into a single batch grant permissions call:
Validate the solution
In this section, we go through the steps to test the scenario.
Consume the datashare in the consumer (marketing) data warehouse
To enable the consumers (marketing team) to access the customer data shared with them via the datashare, first we have to configure Query Editor v2. This configuration is to use IAM credentials as the principal for the Lake Formation permissions. Complete the following steps:
- Sign in to the console using the admin role you nominated in running the CloudFormation template step.
- On the Amazon Redshift console, go to Query Editor v2.
- Choose the gear icon in the navigation pane, then choose Account settings.

- Under Connection settings, select Authenticate with IAM credentials.
- Choose Save.

Now let’s connect to the marketing Redshift cluster and make the customer database available to the marketing team.
- Choose the options menu (three dots) next to the
Serverless:lfunified-marketing-wgcluster and choose Create connection. - Select Database user name and password.
- Leave Database as
dev. - For User name, enter
admin. - For Password, enter the same password you retrieved from Secrets Manger in an earlier step.
- Choose Create connection.
- Once successfully connected, choose the plus sign and choose Editor to open a new Query Editor tab.
- Make sure that you specify the
Serverless: lfunified-marketing-wg workgroupanddevdatabase.


- To create the Redshift database from the shared catalog database, run the following SQL command on the new tab:
- Run the following SQL commands to create and grant usage on the Redshift database to the IAM roles for the power users and data analyst. You can get the IAM role names from the CloudFormation stack outputs:
Create the data lake schema in AWS Glue and allow the marketing power role to query the lead and web activity data
Run the following SQL commands to make the lead data in the S3 data lake available to the marketing team:
Query the shared dataset as a marketing analyst user
To validate that the marketing team analysts (IAM role marketing-analyst-role) have access to the shared database, perform the following steps:
- Sign in to the console (for convenience, you can use a different browser) and switch your role to
lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX. - On the Amazon Redshift console, go to Query Editor v2.
- To connect to the consumer cluster, choose the
Serverless: lfunified-marketing-wgconsumer data warehouse in the navigation pane. - When prompted, for Authentication, select Federated user.
- For Database, enter the database name (for this post,
dev). - Choose Save.
- Once you’re connected to the database, you can validate the current logged-in user with the following SQL command:
- To find the federated databases created on the consumer account, run the following SQL command:

- To validate permissions for the marketing analyst role, run the following SQL command:
As you can see in the following screenshot, the marketing analyst is able to successfully access the customer data but only the non-PII attributes, which was our intention.

- Now let’s validate that the marketing analyst doesn’t have access to the PII columns of the same table:
Query the shared datasets as a marketing power user
To validate that the marketing power users (IAM role lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY) have access to pii-sensetive columns in the shared database, perform the following steps:
- Sign in to the console (for convenience, you can use a different browser) and switch your role to
lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY. - On the Amazon Redshift console, go to Query Editor v2.
- To connect to the consumer cluster, choose the
Serverless: lfunified-marketing-wgconsumer data warehouse in the navigation pane. - When prompted, for Authentication, select Federated user.
- For Database, enter the database name (for this post,
dev). - Choose Save.
- Once you’re connected to the database, you can validate the current logged-in user with the following SQL command:
- Now let’s validate that the marketing power role has access to the PII columns of the customer table:

- Validate that the power users within the marketing team can now run a query to combine data across different datasets that they have access to in order to run effective campaigns:

Clean up
After you complete the steps in this post, to clean up resources, delete the CloudFormation stack:
- On the AWS CloudFormation console, select the stack you deployed in the beginning of this post.
- Choose Delete and follow the prompts to delete the stack.
Conclusion
In this post, we showed how you can use Lake Formation tags and manage permissions for your data lake and Amazon Redshift data sharing using Lake Formation. Using Lake Formation LF-TBAC for data governance helps you manage your data lake and Amazon Redshift data sharing permissions at scale. Also, it enables data sharing across business units with fine-grained access control. Managing access to your data lake and Redshift datashares in a single place enables better governance, helping with data security and compliance.
If you have questions or suggestions, submit them in the comments section.
For more information on Lake Formation managed Amazon Redshift data sharing and tag-based access control, refer to Centrally manage access and permissions for Amazon Redshift data sharing with AWS Lake Formation and Easily manage your data lake at scale using AWS Lake Formation Tag-based access control.
About the Authors
Praveen Kumar is an Analytics Solution Architect at AWS with expertise in designing, building, and implementing modern data and analytics platforms using cloud-native services. His areas of interests are serverless technology, modern cloud data warehouses, streaming, and ML applications.
Srividya Parthasarathy is a Senior Big Data Architect on the AWS Lake Formation team. She enjoys building data mesh solutions and sharing them with the community.
Paul Villena is an Analytics Solutions Architect in AWS with expertise in building modern data and analytics solutions to drive business value. He works with customers to help them harness the power of the cloud. His areas of interests are infrastructure as code, serverless technologies, and coding in Python.
Mostafa Safipour is a Solutions Architect at AWS based out of Sydney. He works with customers to realize business outcomes using technology and AWS. Over the past decade, he has helped many large organizations in the ANZ region build their data, digital, and enterprise workloads on AWS.
Migrating your secrets to AWS Secrets Manager, Part 2: Implementation
Post Syndicated from Adesh Gairola original https://aws.amazon.com/blogs/security/migrating-your-secrets-to-aws-secrets-manager-part-2-implementation/
In Part 1 of this series, we provided guidance on how to discover and classify secrets and design a migration solution for customers who plan to migrate secrets to AWS Secrets Manager. We also mentioned steps that you can take to enable preventative and detective controls for Secrets Manager. In this post, we discuss how teams should approach the next phase, which is implementing the migration of secrets to Secrets Manager. We also provide a sample solution to demonstrate migration.
Implement secrets migration
Application teams lead the effort to design the migration strategy for their application secrets. Once you’ve made the decision to migrate your secrets to Secrets Manager, there are two potential options for migration implementation. One option is to move the application to AWS in its current state and then modify the application source code to retrieve secrets from Secrets Manager. Another option is to update the on-premises application to use Secrets Manager for retrieving secrets. You can use features such as AWS Identity and Access Management (IAM) Roles Anywhere to make the application communicate with Secrets Manager even before the migration, which can simplify the migration phase.
If the application code contains hardcoded secrets, the code should be updated so that it references Secrets Manager. A good interim state would be to pass these secrets as environment variables to your application. Using environment variables helps in decoupling the secrets retrieval logic from the application code and allows for a smooth cutover and rollback (if required).
Cutover to Secrets Manager should be done in a maintenance window. This minimizes downtime and impacts to production.
Before you perform the cutover procedure, verify the following:
- Application components can access Secrets Manager APIs. Based on your environment, this connectivity might be provisioned through interface virtual private cloud (VPC) endpoints or over the internet.
- Secrets exist in Secrets Manager and have the correct tags. This is important if you are using attribute-based access control (ABAC).
- Applications that integrate with Secrets Manager have the required IAM permissions.
- Have a well-documented cutover and rollback plan that contains the changes that will be made to the application during cutover. These would include steps like updating the code to use environment variables and updating the application to use IAM roles or instance profiles (for apps that are being migrated to Amazon Elastic Compute Cloud (Amazon EC2)).
After the cutover, verify that Secrets Manager integration was successful. You can use AWS CloudTrail to confirm that application components are using Secrets Manager.
We recommend that you further optimize your integration by enabling automatic secrets rotation. If your secrets were previously widely accessible (for example, they were stored in your Git repositories), we recommend rotating as soon as possible when migrating .
Sample application to demo integration with Secrets Manager
In the next sections, we present a sample AWS Cloud Development Kit (AWS CDK) solution that demonstrates the implementation of the previously discussed guardrails, design, and migration strategy. You can use the sample solution as a starting point and expand upon it. It includes components that environment teams may deploy to help provide potentially secure access for application teams to migrate their secrets to Secrets Manager. The solution uses ABAC, a tagging scheme, and IAM Roles Anywhere to demonstrate regulated access to secrets for application teams. Additionally, the solution contains client-side utilities to assist application and migration teams in updating secrets. Teams with on-premises applications that are seeking integration with Secrets Manager before migration can use the client-side utility for access through IAM Roles Anywhere.
The sample solution is hosted on the aws-secrets-manager-abac-authorization-samples GitHub repository and is made up of the following components:
- A common environment infrastructure stack (created and owned by environment teams). This stack provisions the following resources:
- A sample VPC created with Amazon Virtual Private Cloud (Amazon VPC), with
PUBLIC,PRIVATE_WITH_NAT, andPRIVATE_ISOLATEDsubnet types. - VPC endpoints for the AWS Key Management Service (AWS KMS) and Secrets Manager services to the sample VPC. The use of VPC endpoints means that calls to AWS KMS and Secrets Manager are not made over the internet and remain internal to the AWS backbone network.
- An empty shell secret, tagged with the supplied attributes and an IAM managed policy that uses attribute-based access control conditions. This means that the secret is managed in code, but the actual secret value is not visible in version control systems like GitHub or in AWS CloudFormation parameter inputs.
- A sample VPC created with Amazon Virtual Private Cloud (Amazon VPC), with
- An IAM Roles Anywhere infrastructure stack (created and owned by environment teams). This stack provisions the following resources:
- An AWS Certificate Manager Private Certificate Authority (AWS Private CA).
- An IAM Roles Anywhere public key infrastructure (PKI) trust anchor that uses AWS Private CA.
- An IAM role for the on-premises application that uses the common environment infrastructure stack.
- An IAM Roles Anywhere profile.
Note: You can choose to use your existing CAs as trust anchors. If you do not have a CA, the stack described here provisions a PKI for you. IAM Roles Anywhere allows migration teams to use Secrets Manager before the application is moved to the cloud. Post migration, you could consider updating the applications to use native IAM integration (like instance profiles for EC2 instances) and revoking IAM Roles Anywhere credentials.
- A client-side utility (primarily used by application or migration teams). This is a shell script that does the following:
- Assists in provisioning a certificate by using OpenSSL.
- Uses aws_signing_helper (Credential Helper) to set up AWS CLI profiles by using the
credential_processfor IAM Roles Anywhere. - Assists application teams to access and update their application secrets after assuming an IAM role by using IAM Roles Anywhere.
- A sample application stack (created and owned by the application/migration team). This is a sample serverless application that demonstrates the use of the solution. It deploys the following components, which indicate that your ABAC-based IAM strategy is working as expected and is effectively restricting access to secrets:
- The sample application stack uses a VPC-deployed common environment infrastructure stack.
- It deploys an Amazon Aurora MySQL serverless cluster in the
PRIVATE_ISOLATEDsubnet and uses the secret that is created through a common environment infrastructure stack. - It deploys a sample Lambda function in the
PRIVATE_WITH_NATsubnet. - It deploys two IAM roles for testing:
- allowedRole (default role): When the application uses this role, it is able to use the
GETaction to get the secret and open a connection to the Aurora MySQL database. - Not allowedRole: When the application uses this role, it is unable to use the
GETaction to get the secret and open a connection to the Aurora MySQL database.
- allowedRole (default role): When the application uses this role, it is able to use the
Prerequisites to deploy the sample solution
The following software packages need to be installed in your development environment before you deploy this solution:
- Node.js v12 or later (https://nodejs.org)
- AWS CLI version 2 (https://docs.aws.amazon.com/cli/latest/userguide/welcome-versions.html)
- jq (https://stedolan.github.io/jq/)
- Git (https://git-scm.com/)
- OpenSSL (https://www.openssl.org/)
Note: In this section, we provide examples of AWS CLI commands and configuration for Linux or macOS operating systems. For instructions on using AWS CLI on Windows, refer to the AWS CLI documentation.
Before deployment, make sure that the correct AWS credentials are configured in your terminal session. The credentials can be either in the environment variables or in ~/.aws. For more details, see Configuring the AWS CLI.
Next, use the following commands to set your AWS credentials to deploy the stack:
You can view the IAM credentials that are being used by your session by running the command aws sts get-caller-identity. If you are running the cdk command for the first time in your AWS account, you will need to run the following cdk bootstrap command to provision a CDK Toolkit stack that will manage the resources necessary to enable deployment of cloud applications with the AWS CDK.
Select the applicable archetype and deploy the solution
This section outlines the design and deployment steps for two archetypes:
- For customers with on-premises applications who want to make use of Secrets Manager, we provide the steps for integration. (See the section Archetype 1: Application is currently on premises.)
- For customers with applications already migrated to AWS, we demonstrate a sample integration of Secrets Manager with AWS Lambda. (See the section Archetype 2: Application has migrated to AWS.)
Archetype 1: Application is currently on premises
Archetype 1 has the following requirements:
- The application is currently hosted on premises.
- The application would consume API keys, stored credentials, and other secrets in Secrets Manager.
The application, environment and security teams work together to define a tagging strategy that will be used to restrict access to secrets. After this, the proposed workflow for each persona is as follows:
- The environment engineer deploys a common environment infrastructure stack (as described earlier in this post) to bootstrap the AWS account with secrets and IAM policy by using the supplied tagging requirement.
- Additionally, the environment engineer deploys the IAM Roles Anywhere infrastructure stack.
- The application developer updates the secrets required by the application by using the client-side utility (
helper.sh). - The application developer uses the client-side utility to update the AWS CLI profile to consume the IAM Roles Anywhere role from the on-premises servers.
Figure 1 shows the workflow for Archetype 1.
Figure 1: Application on premises connecting to Secrets Manager
To deploy Archetype 1
- (Actions by the application team persona) Clone the repository and update the tagging details at
configs/tagconfig.json.
Note: Do not modify the tag/attributes
name/key, only modifyvalue. - (Actions by the environment team persona) Run the following command to deploy the common environment infrastructure stack.
./helper.sh prepare
Then, run the following command to deploy the IAM Roles Anywhere infrastructure stack../helper.sh on-prem - (Actions by the application team persona) Update the secret value of the dummy secrets provided by the environment team, by using the following command.
./helper.sh update-secretNote: This command will only update the secret if it’s still using the dummy value.
Then, run the following command to set up the client and server on premises.
./helper.sh client-profile-setupFollow the command prompt. It will help you request a client certificate and update the AWS CLI profile.
Important: When you request a client certificate, make sure to supply at least one distinguished name, like
CommonName.
The sample output should look like the following.
At this point, the client-side utility (helper.sh client-profile-setup) should have updated the AWS CLI configuration file with the following profile.
To test Archetype 1 deployment
- The application team can verify that the AWS CLI profile has been properly set up and is capable of retrieving secrets from Secrets Manager by running the following client-side utility command.
./helper.sh on-prem-test
This client-side utility (helper.sh) command verifies that the AWS CLI profile (for example, developer) has been set up for IAM Roles Anywhere and can run the GetSecretValue API action to retrieve the value of the secret stored in Secrets Manager.
The sample output should look like the following.
Archetype 2: Application has migrated to AWS
Archetype 2 has the following requirement:
- Deploy a sample application to demonstrate how ABAC authorization works for Secrets Manager APIs.
The application, environment, and security teams work together to define a tagging strategy that will be used to restrict access to secrets. After this, the proposed workflow for each persona is as follows:
- The environment engineer deploys a common environment infrastructure stack to bootstrap the AWS account with secrets and an IAM policy by using the supplied tagging requirement.
- The application developer updates the secrets required by the application by using the client-side utility (
helper.sh). - The application developer tests the sample application to confirm operability of ABAC.
Figure 2 shows the workflow for Archetype 2.
Figure 2: Sample migrated application connecting to Secrets Manager
To deploy Archetype 2
- (Actions by the application team persona) Clone the repository and update the tagging details at
configs/tagconfig.json.
Note: Don’t modify the tag/attributes name/key, only modify value.
- (Actions by the environment team persona) Run the following command to deploy the common platform infrastructure stack.
./helper.sh prepare - (Actions by the application team persona) Update the secret value of the dummy secrets provided by the environment team, using the following command.
./helper.sh update-secretNote: This command will only update the secret if it is still using the dummy value.
Then, run the following command to deploy a sample app stack.
./helper.sh on-awsNote: If your secrets were migrated from a system that did not have the correct access controls, as a best security practice, you should rotate them at least once manually.
At this point, the client-side utility should have deployed a sample application Lambda function. This function connects to a MySQL database by using credentials stored in Secrets Manager. It retrieves the secret values, validates them, and establishes a connection to the database. The function returns a message that indicates whether the connection to the database is working or not.
To test Archetype 2 deployment
- The application team can use the following client-side utility (
helper.sh) to invoke the Lambda function and verify whether the connection is functional or not.
./helper.sh on-aws-test
The sample output should look like the following.
Conclusion
Building an effective secrets management solution requires careful planning and implementation. AWS Secrets Manager can help you effectively manage the lifecycle of your secrets at scale. We encourage you to take an iterative approach to building your secrets management solution, starting by focusing on core functional requirements like managing access, defining audit requirements, and building preventative and detective controls for secrets management. In future iterations, you can improve your solution by implementing more advanced functionalities like automatic rotation or resource policies for secrets.
To read Part 1 of this series, go to Migrating your secrets to AWS, Part I: Discovery and design.
If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, start a new thread on the AWS Secrets Manager re:Post or contact AWS Support.
Want more AWS Security news? Follow us on Twitter.
Migrating your secrets to AWS Secrets Manager, Part I: Discovery and design
Post Syndicated from Eric Swamy original https://aws.amazon.com/blogs/security/migrating-your-secrets-to-aws-secrets-manager-part-i-discovery-and-design/
“An ounce of prevention is worth a pound of cure.” – Benjamin Franklin
A secret can be defined as sensitive information that is not intended to be known or disclosed to unauthorized individuals, entities, or processes. Secrets like API keys, passwords, and SSH keys provide access to confidential systems and resources, but it can be a challenge for organizations to maintain secure and consistent management of these secrets. Commonly observed anti-patterns in organizational secrets management systems include sharing plaintext secrets in emails or messaging apps, allowing application developers to view secrets in plaintext, hard-coding secrets into applications and storing them in version control systems, failing to rotate secrets regularly, and not logging and monitoring access to secrets.
We have created a two-part Amazon Web Services (AWS) blog post that provides prescriptive guidance on how you can use AWS Secrets Manager to help you achieve a cloud-based and modern secrets management system. In this first blog post, we discuss approaches to discover and classify secrets. In Part 2 of this series, we elaborate on the implementation phase and discuss migration techniques that will help you migrate your secrets to AWS Secrets Manager.
Managing secrets: Best practices and personas
A secret’s lifecycle comprises four phases: create, store, use, and destroy. An effective secrets management solution protects the secret in each of these phases from unauthorized access. Besides being secure, robust, scalable, and highly available, the secrets management system should integrate closely with other tools, solutions, and services that are being used within the organization. Legacy secret stores may lack integration with privileged access management (PAM), logging and monitoring, DevOps, configuration management, and encryption and auditing, which leads to teams not having uniform practices for consuming secrets and creates discrepancies from organizational policies.
Secrets Manager is a secrets management service that helps you protect access to your applications, services, and IT resources. This is a non-exhaustive list of features that AWS Secrets Manager offers:
- Access control through AWS Identity and Access Management (IAM) — Secrets Manager offers built-in integration with the AWS Identity and Access Management (IAM) service. You can attach access control policies to IAM principals or to secrets themselves (by using resource-based policies).
- Logging and monitoring — Secrets Manager integrates with AWS logging and monitoring services such as AWS CloudTrail and Amazon CloudWatch. This means that you can use your existing AWS logging and monitoring stack to log access to secrets and audit their usage.
- Integration with other AWS services — Secrets Manager can store and manage the lifecycle of secrets created by other AWS services like Amazon Relational Database Service (Amazon RDS), Amazon Redshift, and Amazon QuickSight. AWS is constantly working on integrating more services with Secrets Manager.
- Secrets encryption at rest — Secrets Manager integrates with AWS Key Management Service (AWS KMS). Secrets are encrypted at rest by using an AWS-managed key or customer-managed key.
- Framework to support the rotation of secrets securely — Rotation helps limit the scope of a compromise and should be an integral part of a modern approach to secrets management. You can use Secrets Manager to schedule automatic database credentials rotation for Amazon RDS, Amazon Redshift, and Amazon DocumentDB. You can use customized AWS Lambda functions to extend the Secrets Manager rotation feature to other secret types, such as API keys and OAuth tokens for on-premises and cloud resources.
Security, cloud, and application teams within an organization need to work together cohesively to build an effective secrets management solution. Each of these teams has unique perspectives and responsibilities when it comes to building an effective secrets management solution, as shown in the following table.
| Persona | Responsibilities | What they want | What they don’t want |
| Security teams/security architect | Define control objectives and requirements from the secrets management system | Least privileged short-lived access, logging and monitoring, and rotation of secrets | Secrets sprawl |
| Cloud team/environment team | Implement controls, create guardrails, detect events of interest | Scalable, robust, and highly available secrets management infrastructure | Application teams reaching out to them to provision or manage app secrets |
| Developer/migration engineer | Migrate applications and their secrets to the cloud | Independent control and management of their app secrets | Dependency on external teams |
To sum up the requirements from all the personas mentioned here: The approach to provision and consume secrets should be secure, governed, easily scalable, and self-service.
We’ll now discuss how to discover and classify secrets and design the migration in a way that helps you to meet these varied requirements.
Discovery — Assess and categorize existing secrets
The initial discovery phase involves running sessions aimed at discovering, assessing, and categorizing secrets. Migrating applications and associated infrastructure to the cloud requires a strategic and methodical approach to progressively discover and analyze IT assets. This analysis can be used to create high-confidence migration wave plans. You should treat secrets as IT assets and include them in the migration assessment planning.
For application-related secrets, arguably the most appropriate time to migrate a secret is when the application that uses the secret is being migrated itself. This lets you track and report the use of secrets as soon as the application begins to operate in the cloud. If secrets are left on-premises during an application migration, this often creates a risk to the availability of the application. The migrated application ends up having a dependency on the connectivity and availability of the on-premises secrets management system.
The activities performed in this phase are often handled by multiple teams. Depending on the purpose of the secret, this can be a mix of application developers, migration teams, and environment teams.
Following are some common secret types you might come across while migrating applications.
| Type | Description |
| Application secrets | Secrets specific to an application |
| Client credentials | Cloud to on-premises credentials or OAuth tokens (such as Okta, Google APIs, and so on) |
| Database credentials | Credentials for cloud-hosted databases, for example, Amazon Redshift, Amazon RDS or Amazon Aurora, Amazon DocumentDB |
| Third-party credentials | Vendor application credentials or API keys |
| Certificate private keys | Custom applications or infrastructure that might require programmatic access to the private key |
| Cryptographic keys | Cryptographic keys used for data encryption or digital signatures |
| SSH keys | Centralized management of SSH keys can potentially make it easier to rotate, update, and track keys |
| AWS access keys | On-premises to cloud credentials (IAM) |
Creating an inventory for secrets becomes simpler when organizations have an IT asset management (ITAM) or Identity and Access Management (IAM) tool to manage their IT assets (such as secrets) effectively. For organizations that don’t have an on-premises secrets management system, creating an inventory of secrets is a combination of manual and automated efforts. Application subject matter experts (SMEs) should be engaged to find the location of secrets that the application uses. In addition, you can use commercial tools to scan endpoints and source code and detect secrets that might be hardcoded in the application. Amazon CodeGuru is a service that can detect secrets in code. It also provides an option to migrate these secrets to Secrets Manager.
AWS has previously described seven common migration strategies for moving applications to the cloud. These strategies are refactor, replatform, repurchase, rehost, relocate, retain, and retire. For the purposes of migrating secrets, we recommend condensing these seven strategies into three: retire, retain, and relocate. You should evaluate every secret that is being considered for migration against a decision tree to determine which of these three strategies to use. The decision tree evaluates each secret against key business drivers like cost reduction, risk appetite, and the need to innovate. This allows teams to assess if a secret can be replaced by native AWS services, needs to be retained on-premises, migrated to Secrets Manager, or retired. Figure 1 shows this decision process.
Capture the associated details for secrets that are marked as RELOCATE. This information is essential and must remain confidential. Some secret metadata is transitive and can be derived from related assets, including details such as itsm-tier, sensitivity-rating, cost-center, deployment pipeline, and repository name. With Secrets Manager, you will use resource tags to bind this metadata with the secret.
You should gather at least the following information for the secrets that you plan to relocate and migrate to AWS Secrets Manager.
| Metadata about secrets | Rationale for gathering data |
| Secrets team name or owner | Gathering the name or email address of the individual or team responsible for managing secrets can aid in verifying that they are maintained and updated correctly. |
| Secrets application name or ID | To keep track of which applications use which secrets, it is helpful to collect application details that are associated with these secrets. |
| Secrets environment name or ID | Gathering information about the environment to which secrets belong, such as “prod,” “dev,” or “test,” can assist in the efficient management and organization of your secrets. |
| Secrets data classification | Understanding your organization’s data classification policy can help you identify secrets that contain sensitive or confidential information. It is recommended to handle these secrets with extra care. This information, which may be labeled “confidential,” “proprietary,” or “personally identifiable information (PII),” can indicate the level of sensitivity associated with a particular secret according to your organization’s data classification policy or standard. |
| Secrets function or usage | If you want to quickly find the secrets you need for a specific task or project, consider documenting their usage. For example, you can document secrets related to “backup,” “database,” “authentication,” or “third-party integration.” This approach can allow you to identify and retrieve the necessary secrets within your infrastructure without spending a lot of time searching for them. |
This is also a good time to decide on the rotation strategy for each secret. When you rotate a secret, you update the credentials in both Secrets Manager and the service to which that secret provides access (in other words, the resource). Secrets Manager supports automatic rotation of secrets based on a schedule.
Design the migration solution
In this phase, security and environment teams work together to onboard the Secrets Manager service to their organization’s cloud environment. This involves defining access controls, guardrails, and logging capabilities so that the service can be consumed in a regulated and governed manner.
As a starting point, use the following design principles mentioned in the Security Pillar of the AWS Well Architected Framework to design a migration solution:
- Implement a strong identity foundation
- Enable traceability
- Apply security at all layers
- Automate security best practices
- Protect data at rest and in transit
- Keep people away from data
- Prepare for security events
The design considerations covered in the rest of this section will help you prepare your AWS environment to host production-grade secrets. This phase can be run in parallel with the discovery phase.
Design your access control system to establish a strong identity foundation
In this phase, you define and implement the strategy to restrict access to secrets stored in Secrets Manager. You can use the AWS Identity and Access Management (IAM) service to specify that identities (human and non-human IAM principals) are only able to access and manage secrets that they own. Organizations that organize their workloads and environments by using separate AWS accounts should consider using a combination of role-based access control (RBAC) and attribute-based access control (ABAC) to restrict access to secrets depending on the granularity of access that’s required.
You can use a scalable automation to deploy and update key IAM roles and policies, including the following:
- Pipeline deployment policies and roles — This refers to IAM roles for CICD pipelines. These pipelines should be the primary mechanism for creating, updating, and deleting secrets in the organization.
- IAM Identity Center permission sets — These allow human identities access to the Secrets Manager API. We recommend that you provision secrets by using infrastructure as code (IaC). However, there are instances where users need to interact directly with the service. This can be for initial testing, troubleshooting purposes, or updating a secret value when automatic rotation fails or is not enabled.
- IAM permissions boundary — Boundary policies allow application teams to create IAM roles in a self-serviced, governed, and regulated manner.
Most organizations have Infrastructure, DevOps, or Security teams that deploy baseline configurations into AWS accounts. These solutions help these teams govern the AWS account and often have their own secrets. IAM policies should be created such that the IAM principals created by the application teams are unable to access secrets that are owned by the environment team, and vice versa. To enforce this logical boundary, you can use tagging and naming conventions on your secrets by using IAM.
A sample scheme for tagging your secrets can look like the following.
| Tag key | Tag value | Notes | Policy elements | Secret tags |
| appname |
|
A user-friendly name for the application | PrincipalTag/ appname =<value> (applies to role) RequestTag/ appname =<value> (applies to caller) SecretManager:ResourceTag/ appname=<value> (applies to the secret) |
appname:<value> |
| appid |
|
Uniquely identifies the application among other cloud-hosted apps | PrincipalTag/appid=<value> RequestTag/appid=<value> SecretManager:ResourceTag/appid=<value> |
appid:<value> |
| appfunc |
|
Used to describe the function of a particular target that the secret material is associated with (for example, web server, message broker, database) | PrincipalTag/appfunc=<value> RequestTag/appfunc=<value> SecretManager:ResourceTag/appfunc=<value> |
Appfunc:<value> |
| appenv |
|
An identifier for the secret usage environment | PrincipalTag/appenv=<value> RequestTag/appenv=<value> SecretManager:ResourceTag/appenv=<value> |
appenv:<value> |
| dataclassification |
|
Use your organization’s data classification standards to classify the secrets | PrincipalTag/dataclassification=<value> RequestTag/dataclassification=<value> SecretManager:ResourceTag/dataclassification=<value> |
Dataclassification:<value> |
If you maintain a registry that documents details of your cloud-hosted applications, most of these tags can be derived from the registry.
It’s common to apply different security and operational policies for the non-production and production environments of a given workload. Although production environments are generally deployed in a dedicated account, it’s common to have less critical non-production apps and environments coexisting in the same AWS account. For operation and governance at scale in these multi-tenanted accounts, you can use attribute-based access control (ABAC) to manage secure access to secrets. ABAC enables you to grant permissions based on tags. The main benefits of using tag-based access control are its scalability and operational efficiency.
Figure 2 shows an example of ABAC in action, where an IAM policy allows access to a secret only if the appfunc, appenv, and appid tags on the secret match the tags on the IAM principal that is trying to access the secrets.
ABAC works as follows:
- Tags on a resource define who can access the resource. It is therefore important that resources are tagged upon creation.
- For a create secret operation, IAM verifies whether the Principal tags on the IAM identity that is making the API call match the request tags in the request.
- For an update, delete, or read operation, IAM verifies that the Principal tags on the IAM identity that is making the API call match the resource tags on the secret.
- Regardless of the number of workloads or environments that coexist in the same account, you only need to create one ABAC-based IAM policy. This policy is the same for different kinds of accounts and can be deployed by using a capability like AWS CloudFormation StackSets. This is the reason that ABAC scales well for scenarios where multiple applications and environments are deployed in the same AWS account.
- IAM roles can use a common IAM policy, such as the one described in the previous bullet point. You need to verify that the roles have the correct tags set on them, according to your tagging convention. This will automatically grant the roles access to the secrets that have the same resource tags.
- Note that with this approach, tagging secrets and IAM roles becomes the most critical component for controlling access. For this reason, all tags on IAM roles and secrets on Secrets Manager must follow a standard naming convention at all times.
The following is an ABAC-based IAM policy that allows creation, updates, and deletion of secrets based on the tagging scheme described in the preceding table.
{
"Version": "2012-10-17",
"Statement": [
{
"Condition": {
"StringEquals": {
"secretsmanager:ResourceTag/appfunc": "${aws:PrincipalTag/appfunc}",
"secretsmanager:ResourceTag/appenv": "${aws:PrincipalTag/appenv}",
"secretsmanager:ResourceTag/name": "${aws:PrincipalTag/name}",
"secretsmanager:ResourceTag/appid": "${aws:PrincipalTag/appid}"
}
},
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecret",
"secretsmanager:DeleteSecret"
],
"Resource": "arn:aws:secretsmanager:ap-southeast-2:*:secret:${aws:PrincipalTag/name}/${aws:PrincipalTag/appid}/${aws:PrincipalTag/appfunc}/${aws:PrincipalTag/appenv}*",
"Effect": "Allow",
"Sid": "AccessBasedOnResourceTags"
},
{
"Condition": {
"StringEquals": {
"aws:RequestTag/appfunc": "${aws:PrincipalTag/appfunc}",
"aws:RequestTag/appid": "${aws:PrincipalTag/appid}",
"aws:RequestTag/name": "${aws:PrincipalTag/name}",
"aws:RequestTag/appenv": "${aws:PrincipalTag/appenv}"
}
},
"Action": [
"secretsmanager:TagResource",
"secretsmanager:CreateSecret"
],
"Resource": "arn:aws:secretsmanager:ap-southeast-2:*:secret:${aws:PrincipalTag/name}/${aws:PrincipalTag/appid}/${aws:PrincipalTag/appfunc}/${aws:PrincipalTag/appenv}*",
"Effect": "Allow",
"Sid": "AccessBasedOnRequestTags"
}
]
}
In addition to controlling access, this policy also enforces a naming convention. IAM principals will only be able to create a secret that matches the following naming scheme.
You can choose to implement ABAC so that the resource name matches the principal tags or the resource tags match the principal tags, or both. These are just different types of ABAC. The sample policy provided here implements both types. It’s important to note that because ABAC-based IAM policies are shared across multiple workloads, potential misconfigurations in the policies will have a wider scope of impact.
For more information about building your ABAC strategy, refer to the blog post Working backward: From IAM policies and principal tags to standardized names and tags for your AWS resources.
You can also add checks in your pipeline to provide early feedback for developers. These checks may potentially assist in verifying whether appropriate tags have been set up in IaC resources prior to their creation. Your pipeline-based controls provide an additional layer of defense and complement or extend restrictions enforced by IAM policies.
Resource-based policies
Resource-based policies are a flexible and powerful mechanism to control access to secrets. They are directly associated with a secret and allow specific principals mentioned in the policy to have access to the secret. You can use these policies to grant identities (internal or external to the account) access to a secret.
If your organization uses resource policies, security teams should come up with control objectives for these policies. Controls should be set so that only resource-based policies meeting your organizations requirements are created. Control objectives for resource policies may be set as follows:
- Allow statements in the policy to have allow access to the secret from the same application.
- Allow statements in the policy to have allow access from organization-owned cross-account identities only if they belong to the same environment. Controls that meet these objectives can be preventative (checks in pipeline) or responsive (config rules and Amazon EventBridge invoked Lambda functions).
Environment teams can also choose to provision resource-based policies for application teams. The provision process can be manual, but is preferably automated. An example would be that these teams can allow application teams to tag secrets with specific values, like a cross-account IAM role Amazon Resource Number (ARN) that needs access. An automation invoked by EventBridge rules then asserts that the cross-account principal in the tag belongs to the organization and is in the same environment, and then provisions a resource-based policy for the application team. Using such mechanisms creates a self-service way for teams to create safe resource policies that meet common use cases.
Resource-based policies for Secrets Manager can be a helpful tool for controlling access to secrets, but it is important to consider specific situations where alternative access control mechanisms might be more appropriate. For example, if your access control requirements for secrets involve complex conditions or dependencies that cannot be easily expressed using the resource-based policy syntax, it may be challenging to manage and maintain the policies effectively. In such cases, you may want to consider using a different access control mechanism that better aligns with your requirements. For help determining which type of policy to use, see Identity-based policies and resource-based policies.
Design detective controls to achieve traceability, monitoring, and alerting
Prepare your environment to record and flag events of interest when Secrets Manager is used to store and update secrets. We recommend that you start by identifying risks and then formulate objectives and devise control measures for each identified risk, as follows:
- Control objectives — What does the control evaluate, and how is it configured? Controls can be configured by using CloudTrail events invoked by Lambda functions, AWS config rules, or CloudWatch alarms. Controls can evaluate a misconfigured property in a secrets resource or report on an event of interest.
- Target audience — Identify teams that should be notified if the event occurs. This can be a combination of the environment, security, and application teams.
- Notification type — SNS, email, Slack channel notifications, or an ITIL ticket.
- Criticality — Low, medium, or high, based on the criticality of the event.
The following is a sample matrix that can serve as a starting point for documenting detective controls for Secrets Manager. The column titled AWS services in the table offers some suggestions for implementation to help you meet your control objetves.
| Risk | Control objective | Criticality | AWS services |
| A secret is created without tags that match naming and tagging schemes |
|
HIGH (if using ABAC) | CloudTrail invoked Lambda function or custom AWS config rule |
| IAM related tags on a secret are updated, removed |
|
HIGH (if using ABAC) | CloudTrail invoked Lambda function or custom config rule |
| A resource policy is created when resource policies have not been onboarded to the environment |
|
HIGH | Pipeline or CloudTrail invoked ¬Lambda function or custom config rule |
| A secret is marked for deletion from an unusual source — root user or admin break glass role |
|
HIGH | CloudTrail invoked Lambda function |
| A non-compliant resource policy was created — for example, to provide secret access to a foreign account |
|
HIGH | CloudTrail invoked Lambda function or custom config rule |
| An AWS KMS key for secrets encryption is marked for deletion |
|
HIGH | CloudTrail invoked Lambda function |
| A secret rotation failed |
|
MEDIUM | Managed config rule |
| A secret is inactive and is not being accessed for x number of days |
|
LOW | Managed config rule |
| Secrets are created that do not use KMS key |
|
LOW | Managed config rule |
| Automatic rotation is not enabled |
|
LOW | Managed config rule |
| Successful create, update, and read events for secrets |
|
LOW | CloudTrail logs |
We suggest that you deploy these controls in your AWS accounts by using a scalable mechanism, such as CloudFormation StackSets.
For more details, see the following topics:
- Audit Secrets Manager secrets for compliance by using AWS Config
- Log AWS Secrets Manager events with AWS CloudTrail
- Monitor Secrets Manager with Amazon CloudWatch
Design for additional protection at the network layer
You can use the guiding principles for Zero Trust networking to add additional mechanisms to control access to secrets. The best security doesn’t come from making a binary choice between identity-centric and network-centric controls, but by using both effectively in combination with each other.
VPC endpoints allow you to provide a private connection between your VPC and Secrets Manager API endpoints. They also provide the ability to attach a policy that allows you to enforce identity-centric rules at a logical network boundary. You can use global context keys like aws:PrincipalOrgID in VPC endpoint policies to allow requests to Secrets Manager service only from identities that belong to the same AWS organization. You can also use aws:sourceVpce and aws:sourceVpc IAM conditions to allow access to the secret only if the request originates from a specific VPC endpoint or VPC, respectively.
For more details on VPC endpoints, see Using an AWS Secrets Manager VPC endpoint.
Design for least privileged access to encryption keys
To reduce unauthorized access, secrets should be encrypted at rest. Secrets Manager integrates with AWS KMS and uses envelope encryption. Every secret in Secrets Manager is encrypted with a unique data key. Each data key is protected by a KMS key. Whenever the secret value inside a secret changes, Secrets Manager generates a new data key to protect it. The data key is encrypted under a KMS key and stored in the metadata of the secret. To decrypt the secret, Secrets Manager first decrypts the encrypted data key by using the KMS key in AWS KMS.
The following is a sample AWS KMS policy that permits cryptographic operations to a KMS key only from the Secrets Manager service within an AWS account, and allows the AWS KMS decrypt action from a specific IAM principal throughout the organization.
{
"Version": "2012-10-17",
"Id": "secrets_manager_encrypt_org",
"Statement": [
{
"Sid": "Root Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::444455556666:role/platformRoles/KMS-key-admin-role", "arn:aws:iam::444455556666:role/platformRoles/KMS-key-automation-role"
]
},
"Action": [
"kms:CancelKeyDeletion",
"kms:Create*",
"kms:Delete*",
"kms:Describe*",
"kms:Disable*",
"kms:Enable*",
"kms:Get*",
"kms:List*",
"kms:Put*",
"kms:Revoke*",
"kms:ScheduleKeyDeletion",
"kms:TagResource",
"kms:UntagResource",
"kms:Update*"
],
"Resource": "*"
},
{
"Sid": "Allow Secrets Manager use of the KMS key for a specific account",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:CreateGrant",
"kms:ListGrants",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:CallerAccount": "444455556666",
"kms:ViaService": "secretsmanager.us-east-1.amazonaws.com"
}
}
},
{
"Sid": "Allow use of Secrets Manager secrets from a specific IAM role (service account) throughout your org",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "kms:Decrypt",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-exampleorgid"
},
"StringLike": {
"aws:PrincipalArn": "arn:aws:iam::*:role/platformRoles/secretsAccessRole"
}
}
}
]
}
Additionally, you can use the secretsmanager:KmsKeyId IAM condition key to allow secrets creation only when AWS KMS encryption is enabled for the secret. You can also add checks in your pipeline that allow the creation of a secret only when a KMS key is associated with the secret.
Design or update applications for efficient retrieval of secrets
In applications, you can retrieve your secrets by calling the GetSecretValue function in the available AWS SDKs. However, we recommend that you cache your secret values by using client-side caching. Caching secrets can improve speed, help to prevent throttling by limiting calls to the service, and potentially reduce your costs.
Secrets Manager integrates with the following AWS services to provide efficient retrieval of secrets:
- For Amazon RDS, you can integrate with Secrets Manager to simplify managing master user passwords for Amazon RDS database instances. Amazon RDS can manage the master user password and stores it securely in Secrets Manager, which may eliminate the need for custom AWS Lambda functions to manage password rotations. The integration can help you secure your database by encrypting the secrets, using your own managed key or an AWS KMS key provided by Secrets Manager. As a result, the master user password is not visible in plaintext during the database creation workflow. This feature is available for the Amazon RDS and Aurora engines, and more information can be found in the Amazon RDS and Aurora User Guides.
- For Amazon Elastic Kubernetes Service (Amazon EKS), you can use the AWS Secrets and Configuration Provider (ASCP) for the Kubernetes Secrets Store CSI Driver. This open-source project enables you to mount Secrets Manager secrets as Kubernetes secrets. The driver translates Kubernetes secret objects into Secrets Manager API calls, allowing you to access and manage secrets from within Kubernetes. After you configure the Kubernetes Secrets Store CSI Driver, you can create Kubernetes secrets backed by Secrets Manager secrets. These secrets are securely stored in Secrets Manager and can be accessed by your applications that are running in Amazon EKS.
- For Amazon Elastic Container Service (Amazon ECS), sensitive data can be securely stored in Secrets Manager secrets and then accessed by your containers through environment variables or as part of the log configuration. This allows for a simple and potentially safe injection of sensitive data into your containers, making it a possible solution for your needs.
- For AWS Lambda, you can use the AWS Parameters and Secrets Lambda Extension to retrieve and cache Secrets Manager secrets in Lambda functions without the need for an AWS SDK. It is noteworthy that retrieving a cached secret is faster compared to the standard method of retrieving secrets from Secrets Manager. Moreover, using a cache can be cost-efficient, because there is a charge for calling Secrets Manager APIs. For more details, see the Secrets Manager User Guide.
For additional information on how to use Secrets Manager secrets with AWS services, refer to the following resources:
Develop an incident response plan for security events
It is recommended that you prepare for unforeseeable incidents such as unauthorized access to your secrets. Developing an incident response plan can help minimize the impact of the security event, facilitate a prompt and effective response, and may help to protect your organization’s assets and reputation. The traceability and monitoring controls we discussed in the previous section can be used both during and after the incident.
The Computer Security Incident Handling Guide SP 800-61 Rev. 2, which was created by the National Institute of Standards and Technology (NIST), can help you create an incident response plan for specific incident types. It provides a thorough and organized approach to incident response, covering everything from initial preparation and planning to detection and analysis, containment, eradication, recovery, and follow-up. The framework emphasizes the importance of continual improvement and learning from past incidents to enhance the overall security posture of the organization.
Refer to the following documentation for further details and sample playbooks:
Conclusion
In this post, we discussed how organizations can take a phased approach to migrate their secrets to AWS Secrets Manager. Your teams can use the thought exercises mentioned in this post to decide if they would like to rehost, replatform, or retire secrets. We discussed what guardrails should be enabled for application teams to consume secrets in a safe and regulated manner. We also touched upon ways organizations can discover and classify their secrets.
In Part 2 of this series, we go into the details of the migration implementation phase and walk you through a sample solution that you can use to integrate on-premises applications with Secrets Manager.
If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, start a new thread on the AWS Secrets Manager re:Post or contact AWS Support.
Want more AWS Security news? Follow us on Twitter.
Rainn Wilson | Soul Boom: Why We Need a Spiritual Revolution | Talks at Google
Post Syndicated from Talks at Google original https://www.youtube.com/watch?v=DtZZAbpmYwQ
[$] Exceptions in BPF
Post Syndicated from original https://lwn.net/Articles/938435/
The BPF virtual machine in the kernel has been steadily gaining new
features for years, many of which add capabilities that C programmers do
not ordinarily have. So, from one point of view, it was only a matter of
time before BPF gained support for exceptions. As it turns out, though,
this “exceptions” feature is aimed at a specific use case, and its use in
most programs will be truly exceptional.
Solidigm has a 61.44TB SSD Coming this Quarter
Post Syndicated from Cliff Robinson original https://www.servethehome.com/solidigm-has-a-61-44tb-ssd-coming-this-quarter/
Solidigm has a massive new NVMe SSD. Dubbed the Solidigm D5-P5336, the new drive spans U.2, E3.S, and E1.L form factors reaching 61.44TB
The post Solidigm has a 61.44TB SSD Coming this Quarter appeared first on ServeTheHome.
Using A.I. to Hack the Instagram Algorithm & Censorship
Post Syndicated from Matt Granger original https://www.youtube.com/watch?v=Yo7bxh_88rg
Security updates for Friday
Post Syndicated from original https://lwn.net/Articles/938878/
Security updates have been issued by Fedora (golang, nodejs16, nodejs18, and R-jsonlite), Red Hat (java-1.8.0-openjdk and java-17-openjdk), SUSE (container-suseconnect, redis, and redis7), and Ubuntu (wkhtmltopdf).
SideWinder Force Feedback Pro – 26 Years Later
Post Syndicated from LGR original https://www.youtube.com/watch?v=evwn435x0dM
Temporal data lake architecture for benchmark and indices analytics
Post Syndicated from Krishna Gogineni original https://aws.amazon.com/blogs/architecture/temporal-data-lake-architecture-for-benchmark-and-indices-analytics/
Financial trading houses and stock exchanges generate enormous volumes of data in near real-time, making it difficult to perform bi-temporal calculations that yield accurate results. Achieving this requires a processing architecture that can handle large volumes of data during peak bursts, meet strict latency requirements, and scale according to incoming volumes.
In this post, we’ll describe a scenario for an industry leader in the financial services sector and explain how AWS services are used for bi-temporal processing with state management and scale based on variable workloads during the day, all while meeting strict service-level agreement (SLA) requirements.
Problem statement
To design and implement a fully temporal transactional data lake with the repeatable read isolation level for queries is a challenge, particularly with burst events that need the overall architecture to scale accordingly. The data store in the overall architecture needs to record the value history of data at different times, which is especially important for financial data. Financial data can include corporate actions, annual or quarterly reports, or fixed-income securities, like bonds that have variable rates. It’s crucial to be able to correct data inaccuracies during the reporting period.
The example customer seeks a data processing platform architecture to dynamically scale based on the workloads with a capacity of processing 150 million records under 5 minutes. Their platform should be capable of meeting the end-to-end SLA of 15 minutes, from ingestion to reporting, with lowest total cost of ownership. Additionally, managing bi-temporal data requires a database that has critical features, such as ACID (atomicity, consistency, isolation, durability) compliance, time-travel capability, full-schema evolution, partition layout and evolution, rollback to prior versions, and SQL-like query experience.
Solution overview
The solution architecture key building blocks are Amazon Kinesis Data Streams for streaming data, Amazon Kinesis Data Analytics with Apache Flink as processing engine, Flink’s RocksDB for state management, and Apache Iceberg on Amazon Simple Storage Service (Amazon S3) as the storage engine (Figure 1).
Data processing
Here’s how it works:
- A publisher application receives the data from the source systems and publishes data into Kinesis Data Streams using a well-defined JSON format structure.
- Kinesis Data Streams holds the data for a duration that is configurable so data is not lost and can auto scale based on the data volume ingested.
- Kinesis Data Analytics runs an Apache Flink application, with state management (RocksDB), to handle bi-temporal calculations. The Apache Flink application consumes data from Kinesis Data Streams and performs the following computations:
- Transforms the JSON stream into a row-type record, compatible with a SQL table-like structure, resolving nesting and parent–child relationships present within the stream
- Checks whether the record has already an existing state in in-memory RocksDB or disk attached to Kinesis Data Analytics computational node to avoid read latency from the database, which is critical for meeting the performance requirements
- Performs bi-temporal calculations and creates the resultant records in an in-memory data structure before invoking the Apache Iceberg sink operator
- The Apache Flink application sink operator appends the temporal states, expressed as records into existing Apache Iceberg data store. This will comply with key principles of time series data, which is immutable, and the ability to time-travel along with ACID compliance, schema evolution, and partition evolution
- Kinesis Data Analytics is resilient and provides a no-data-loss capability, with features like periodic checkpoints and savepoints. They are used to store the state management in a secure Amazon S3 location that can be accessed outside of Kinesis Data Analytics. This savepoints mechanism can be used to programmatically to scale the cluster size based on the workloads using time-driven scheduling and AWS Lambda functions.
- If the time-to-live feature of RocksDB is implemented, old records are stored in Apache Iceberg on Amazon S3. When performing temporal calculations, if the state is not found in memory, data is read from Apache Iceberg into RocksDB and the processing is completed. However, this step is optional and can be circumvented if the Kinesis Data Analytics cluster is initialized with right number of Kinesis processing units to hold the historical information, as per requirements.
- Because the data is stored in an Apache Iceberg table format in Amazon S3, data is queried using Trino, which supports Apache Iceberg table format.
- The end user queries data using any SQL tool that supports the Trino query engine.
Apache Iceberg maintenance jobs, such as data compaction, expire snapshot, delete orphan files, can be launched using Amazon Athena to optimize performance out of Apache Iceberg data store. Details of each processing step performed in Apache Flink application are captured using Amazon CloudWatch, which logs all the events.
Scalability
Amazon EventBridge scheduler invokes a Lambda function to scale the Kinesis Data Analytics. Kinesis Data Analytics has a short outage during rescaling that is proportional to the amount of data stored in RocksDB, which is why a state management strategy is necessary for the proper operation of the system.
Figure 2 shows the scaling process, which depicts:
- Before peak load: The Kinesis Data Analytics cluster is processing off-peak records with minimum configuration before the peak load. A scheduled event is launched from EventBridge that invokes a Lambda function, which shuts down the cluster using the savepoint mechanism and scales up the Kinesis Data Analytics cluster to required Kinesis processing units.
- During peak load: When the peak data burst happens, the Kinesis Data Analytics cluster is ready to handle the volume of data from Kinesis Data Stream, and processes it within the SLA of 5 minutes.
- After peak load: A scheduled event from EventBridge invokes a Lambda function to scale down the Kinesis Data Analytics cluster to the minimum configuration that holds the required state for the entire volume of records.
Performance insights
With the discussed architecture, we want to demonstrate that the we are able to meet the SLAs, in terms of performance and processing times. We have taken a subset of benchmarks and indices data and processed the same with the end-to-end architecture. During the process, we observed some very interesting findings, which we would like to share.
Processing time for Apache Iceberg Upsert vs Append operations: During our tests, we expected Upsert operation to be faster than append. But on the contrary, we noticed that Append operations were faster compared to Upsert even though more computations are performed in the Apache Flink application. In our test with 3,500,000 records, Append operation took 1556 seconds while Upsert took 1675 seconds to process the data (Figure 3).
Compute consumption for Apache Iceberg Upsert vs. Append operations: Comparing the compute consumption for 10,000,000 records, we noticed that Append operation was able to process the data in the same amount of time as Upsert operation but with less compute resources. In our tests, we have noted that Append operation only consumed 64 Kinesis processing units, whereas Upsert consumed 78 Kinesis processing units (Figure 4).
Scalability vs performance: To achieve the desired data processing performance, we need a specific configuration of Kinesis processing units, Kinesis Data Streams, and Iceberg parallelism. In our test with the data that we chose, we started with four Kinesis processing units and four Kinesis data streams for data processing. We observed an 80% performance improvement in data processing with 16 Kinesis data processing units. An additional 6% performance improvement was demonstrated when we scaled to 32 Kinesis processing units. When we increased the Kinesis data streams to 16, we observed an additional 2% performance improvement (Figure 5).
Data volume processing times for Upsert vs. Append: For this test, we started with 350,000 records of data. When we increased data volume to 3.5M records, we observed that Append performing better than Upsert, demonstrating a five-fold increase in processing time (Figure 6).
Conclusion
The architecture we explored today scales based on the data-volume requirements of the customer and is capable of meeting the end-to-end SLA of 15 minutes, with a potential lowered total cost of ownership. Additionally, the solution is capable of handling high-volume, bi-temporal computations with ACID compliance, time travel, full-schema evolution, partition layout evolution, rollback to prior versions and SQL-like query experience.
Further reading
- Enhanced monitoring and automatic scaling for Apache Flink
- Resilience in Amazon Kinesis Data Analytics for Apache Flink
- Kinesis Data Analytics for Apache Flink: How It Works
- Creating a Kinesis Data Analytics for Apache Flink Application
- State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink
- Application Scaling in Kinesis Data Analytics for Apache Flink
AWS re:Inforce 2023: Key announcements and session highlights
Post Syndicated from Nisha Amthul original https://aws.amazon.com/blogs/security/aws-reinforce-2023-key-announcements-and-session-highlights/

Thank you to everyone who participated in AWS re:Inforce 2023, both virtually and in-person. The conference featured a lineup of over 250 engaging sessions and hands-on labs, in collaboration with more than 80 AWS partner sponsors, over two days of immersive cloud security learning. The keynote was delivered by CJ Moses, AWS Chief Information Security Officer, Becky Weiss, AWS Senior Principal Engineer, and Debbie Wheeler, Delta Air Lines Chief Information Security Officer. They shared the latest innovations in cloud security from AWS and provided insights on how to foster a culture of security in your organization.
If you couldn’t join us or would like to revisit the insightful themes discussed, we’ve put together this blog post for you. It provides a comprehensive summary of all the key announcements made and includes information on where you can watch the keynote and sessions at your convenience.
Key announcements
Here are some of the top announcements that we made at AWS re:Inforce 2023:
- Amazon Verified Permissions — Verified Permissions is a scalable permissions management and fine-grained authorization service for the applications you build. The service helps your developers build secure applications faster by externalizing authorization and centralizing policy management and administration. Developers can align their application access with Zero Trust principles by implementing least privilege and continual verification within applications. Security and audit teams can better analyze and audit who has access to what within applications. Amazon Verified Permissions uses Cedar, an open-source policy language for access control that empowers developers and admins to define policy-based access controls using roles and attributes for context-aware access control.
- Amazon Inspector code scanning of Lambda functions — Amazon Inspector now supports code scanning of AWS Lambda functions, expanding the existing capability to scan Lambda functions and associated layers for software vulnerabilities in application package dependencies. Amazon Inspector code scanning of Lambda functions scans custom proprietary application code you write within Lambda functions for security vulnerabilities such as injection flaws, data leaks, weak cryptography, or missing encryption. Upon detecting code vulnerabilities within the Lambda function or layer, Amazon Inspector generates actionable security findings that provide several details, such as security detector name, impacted code snippets, and remediation suggestions to address vulnerabilities. The findings are aggregated in the Amazon Inspector console and integrated with AWS Security Hub and Amazon EventBridge for streamlined workflow automation.
- Amazon Inspector SBOM export — Amazon Inspector now offers the ability to export a consolidated Software Bill of Materials (SBOMs) for resources that it monitors across your organization in multiple industry-standard formats, including CycloneDx and Software Package Data Exchange (SPDX). With this new capability, you can use automated and centrally managed SBOMs to gain visibility into key information about your software supply chain. This includes details about software packages used in the resource, along with associated vulnerabilities. SBOMs can be exported to an Amazon Simple Storage Service (Amazon S3) bucket and downloaded for analyzing with Amazon Athena or Amazon QuickSight to visualize software supply chain trends. This functionality is available with a few clicks in the Amazon Inspector console or using Amazon Inspector APIs.
- Amazon CodeGuru Security — Amazon CodeGuru Security offers a comprehensive set of APIs that are designed to seamlessly integrate with your existing pipelines and tooling. CodeGuru Security serves as a static application security testing (SAST) tool that uses machine learning to help you identify code vulnerabilities and provide guidance you can use as part of remediation. CodeGuru Security also provides in-context code patches for certain classes of vulnerabilities, helping you reduce the effort required to fix code.
- Amazon EC2 Instance Connect Endpoint — Amazon Elastic Compute Cloud (Amazon EC2) announced support for connectivity to instances using SSH or RDP in private subnets over the Amazon EC2 Instance Connect Endpoint (EIC Endpoint). With this capability, you can connect to your instances by using SSH or RDP from the internet without requiring a public IPv4 address.
- AWS built-in partner solutions — AWS built-in partner solutions are co-built with AWS experts, helping to ensure that AWS Well-Architected security reference architecture guidelines and best security practices were rigorously followed. AWS built-in partner solutions can save you valuable time and resources by getting the building blocks of cloud development right when you begin a migration or modernization initiative. AWS built-in solutions also automate deployments and can reduce installation time from months or weeks to a single day. Customers often look to our partners for innovation and help with “getting cloud right.” Now, partners with AWS built-in solutions can help you be more efficient and drive business value for both partner software and AWS native services.
- AWS Cyber Insurance Partners — AWS has worked with leading cyber insurance partners to help simplify the process of obtaining cyber insurance. You can now reduce business risk by finding and procuring cyber insurance directly from validated AWS cyber insurance partners. To reduce the amount of paperwork and save time, download and share your AWS Foundational Security Best Practices Standard detailed report from AWS Security Hub and share the report with the AWS Cyber Insurance Partner of your choice. With AWS vetted cyber insurance partners, you can have confidence that these insurers understand AWS security posture and are evaluating your environment according to the latest AWS Security Best Practices. Now you can get a full cyber insurance quote in just two business days.
- AWS Global Partner Security Initiative — With the AWS Global Partner Security Initiative, AWS will jointly develop end-to-end security solutions and managed services, leveraging the capabilities, scale, and deep security knowledge of our Global System Integrators (GSI) partners.
- Amazon Detective finding groups — Amazon Detective expands its finding groups capability to include Amazon Inspector findings, in addition to Amazon GuardDuty findings. Using machine learning, this extension of the finding groups feature significantly streamlines the investigation process, reducing the time spent and helping to improve identification of the root cause of security incidents. By grouping findings from Amazon Inspector and GuardDuty, you can use Detective to answer difficult questions such as “was this EC2 instance compromised because of a vulnerability?” or “did this GuardDuty finding occur because of unintended network exposure?” Furthermore, Detective maps the identified findings and their corresponding tactics, techniques, and procedures to the MITRE ATT&CK framework, enhancing the overall effectiveness and alignment of security measures.
- [Pre-announce] AWS Private Certificate Authority Connector for Active Directory –— AWS Private CA will soon launch a Connector for Active Directory (AD). The Connector for AD will help to reduce upfront public key infrastructure (PKI) investment and ongoing maintenance costs with a fully managed serverless solution. This new feature will help reduce PKI complexity by replacing on-premises certificate authorities with a highly secure hardware security module (HSM)-backed AWS Private CA. You will be able to automatically deploy certificates using auto-enrollment to on-premises AD and AWS Directory Service for Microsoft Active Directory.
- AWS Payment Cryptography — The day before re:Inforce, AWS Payment Cryptography launched with general availability. This service simplifies cryptography operations in cloud-hosted payment applications. AWS Payment Cryptography simplifies your implementation of the cryptographic functions and key management used to secure data and operations in payment processing in accordance with various PCI standards.
- AWS WAF Fraud Control launches account creation fraud prevention — AWS WAF Fraud Control announces Account Creation Fraud Prevention, a managed protection for AWS WAF that’s designed to prevent creation of fake or fraudulent accounts. Fraudsters use fake accounts to initiate activities, such as abusing promotional and sign-up bonuses, impersonating legitimate users, and carrying out phishing tactics. Account Creation Fraud Prevention helps protect your account sign-up or registration pages by allowing you to continuously monitor requests for anomalous digital activity and automatically block suspicious requests based on request identifiers and behavioral analysis.
- AWS Security Hub automation rules — AWS Security Hub, a cloud security posture management service that performs security best practice checks, aggregates alerts, and facilitates automated remediation, now features a capability to automatically update or suppress findings in near real time. You can now use automation rules to automatically update various fields in findings, suppress findings, update finding severity and workflow status, add notes, and more.
- Amazon S3 announces dual-layer server-side encryption — Amazon S3 is the only cloud object storage service where you can apply two layers of encryption at the object level and control the data keys used for both layers. Dual-layer server-side encryption with keys stored in AWS Key Management Service (DSSE-KMS) is designed to adhere to National Security Agency Committee on National Security Systems Policy (CNSSP) 15 for FIPS compliance and Data-at-Rest Capability Package (DAR CP) Version 5.0 guidance for two layers of MFS U/00/814670-15 Commercial National Security Algorithm (CNSA) encryption.
- AWS CloudTrail Lake dashboards — AWS CloudTrail Lake, a managed data lake that lets organizations aggregate, immutably store, visualize, and query their audit and security logs, announces the general availability of CloudTrail Lake dashboards. CloudTrail Lake dashboards provide out-of-the-box visualizations and graphs of key trends from your audit and security data directly within the CloudTrail console. It also offers the flexibility to drill down on additional details, such as specific user activity, for further analysis and investigation using CloudTrail Lake SQL queries.
- AWS Well-Architected Profiles — AWS Well-Architected introduces Profiles, which allows you to tailor your Well-Architected reviews based on your business goals. This feature creates a mechanism for continuous improvement by encouraging you to review your workloads with certain goals in mind first, and then complete the remaining Well-Architected review questions.
Watch on demand
Leadership sessions — You can watch the leadership sessions to learn from AWS security experts as they talk about essential topics, including open source software (OSS) security, Zero Trust, compliance, and proactive security.
Breakout sessions, lightning talks, and more — Explore our content across these six tracks:
- Application Security— Discover how AWS, customers, and AWS Partners move fast while understanding the security of the software they build.
- Data Protection — Learn how AWS, customers, and AWS Partners work together to protect data. Get insights into trends in data management, cryptography, data security, data privacy, encryption, and key rotation and storage.
- Governance, Risk, and Compliance — Dive into the latest hot topics in governance and compliance for security practitioners, and discover how to automate compliance tools and services for operational use.
- Identity and Access Management — Learn how AWS, customers, and AWS Partners use AWS Identity Services to manage identities, resources, and permissions securely and at scale. Discover how to configure fine-grained access controls for your employees, applications, and devices and deploy permission guardrails across your organization.
- Network and Infrastructure Security — Gain practical expertise on the services, tools, and products that AWS, customers, and partners use to protect the usability and integrity of their networks and data.
- Threat Detection and Incident Response — Discover how AWS, customers, and AWS Partners get the visibility they need to improve their security posture, reduce the risk profile of their environments, identify issues before they impact business, and implement incident response best practices.
- You can also watch our Lightning Talks and the AWS On Air day 1 and day 2 livestream on demand.
Session presentation downloads are also available on the AWS Events Content page. If you’re interested in further in-person security learning opportunities, consider registering for AWS re:Invent 2023, which will be held from November 27 to December 1 in Las Vegas, NV. We look forward to seeing you there!
If you would like to discuss how these new announcements can help your organization improve its security posture, AWS is here to help. Contact your AWS account team today.
If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.























