Как да получите достъп до API Secrets с помощта на AWS Lambda?

Kak Da Polucite Dost P Do Api Secrets S Pomosta Na Aws Lambda



Най-добрите практики на услугите на AWS включват две действия, т.е. Store-Retrieve и Audit-Rotate. Комбинирайки тези две практики в една, AWS стартира Secret Manager, който помага на потребителя да защити секретната информация на своите приложения. AWS Secret Manager се използва широко за създаване, съхраняване , модифициране , възпроизвеждане , и ротационни идентификационни данни за база данни, API ключове, OAuth токени и др.

Бързо очертание

Тази статия обхваща следните аспекти:

Какво е AWS Lambda?

AWS Lambda е компютърна услуга за изпълнение на кодове в множество среди и езици без предоставяне и управление на сървърите. Освен това, AWS Lambda може да бъде задействана от множество различни услуги на AWS като S3 bucket, API Gateways и т.н. Тази услуга автоматично мащабира приложението и ефективно изпълнява кода, без да изисква от потребителя да инсталира допълнителни зависимости.







За да научите повече за услугата Lambda, вижте тази статия тук: „Първи стъпки с AWS Lambda“ .



Какво е AWS Secret Manager?

AWS Secret Manager позволява на потребителите да защитават и криптират конфиденциална информация на приложения като OAuth токени, идентификационни данни за бази данни, API и др. Тази поверителна информация се нарича 'тайна' . Тези тайни са достъпни само от оторизирани органи и могат да се сменят с цел подобряване на сигурността.



Научете повече за съхраняването на RDS идентификационни данни в Secret Manager, като се позовавате на тази статия: „Как да съхранявам идентификационни данни на Amazon RDS с помощта на Secret Manager?“





Как да получите достъп до API Secrets в AWS с помощта на AWS Lambda?

Lambda осигурява вградена поддръжка за множество услуги, напр. S3 кофа, API Gateway и Secret Manager. Ламбда функциите могат да се използват за получаване на стойността на конфигурираните тайни. Чрез използването на API тайните в AWS Lambda Functions потребителите могат да взаимодействат с множество услуги на AWS. Такива API тайни също са важни за оторизиране на ламбда функциите.

За достъп до API ключове в AWS Secret Manager с помощта на AWS Lambda, следвайте стъпките, посочени по-долу:



  • Стъпка 1: Създайте API Secret
  • Стъпка 2: Създайте IAM политика
  • Стъпка 3: Създайте IAM роля
  • Стъпка 4: Създайте ламбда роля

Стъпка 1: Създайте API Secret

Преди да получим достъп до API ключ в AWS Secret Manager, първо ще се научим създайте API тайна . За тази цел достъп до „Таен мениджър“ услуга от Конзола за управление на AWS:

На Главна конзола на AWS Secret Manager, щракнете върху „Запазете нова тайна“ бутон:

В „Таен тип“ блокирайте, изберете „Друг вид тайна“ опция от различните показани опции:

Превъртете надолу до „Двойки ключ/стойност“ раздел и осигурете a уникална двойка ключ-стойност за вашата API тайна. Да се добавете Повече ▼ двойки ключ-стойност , щракнете върху „Добавяне на ред“ бутон:

Следващото е „Ключ за шифроване“ раздел. AWS предоставя a ключ за шифроване по подразбиране за тайната. Потребителят обаче може също да предостави персонализирано име за ключа. Като запазите стойността по подразбиране, щракнете върху „ Следващия ” бутон:

В този интерфейс потребителят трябва да предостави a уникално име за тяхната тайна и а описание, което не е задължително поле тук:

Чрез запазване на настройките непроменени , продължете, като щракнете върху „ Следващия ” бутон:

Следва Секция за преглед. За да потвърдите всички информация предвидено е правилно , щракнете върху „ Магазин ” разположен в долната част на интерфейса:

Тайната е била успешно създаден . Кликнете върху „ Презареди ”, за да се покаже името на тайната на Табло :

Стъпка 2: Създайте IAM политика

Да се създайте IAM политика, достъп до IAM услуга от конзолата за управление на AWS:

От странична лента на IAM услуга, щракнете върху „ Политики ” опция:

На Конзола за правила , щракнете върху „Създаване на политика“ бутон:

Научете повече за политиката на AWS IAM, като се позовавате на тази статия: „Примери за политика на AWS IAM“

Следващото е „Определяне на разрешения“ раздел. Търсете и изберете „Таен мениджър“ обслужване:

Превъртете надолу до „Разрешени действия“ блок. Тук от различните нива на достъп докоснете „ Прочети ” опция. Изберете „Всички действия за четене“ опция за активирайте всички Прочетете услуги за тази политика:

Превърти надолу към ' Ресурси ” и щракнете върху „Добавяне на ARN“ опция:

Навигирайте обратно към Табло за управление на AWS Secret Manager и щракнете върху името на тайната. Копирайте „ РНК ” на тайната под „ Тайна ARN ” етикет от показания интерфейс:

На Конзола сега , поставете копирания ARN в „ РНК ” поле:

Преди да щракнете върху „Добавяне на ARN“ бутон, щракнете върху 'Този акаунт' бутон, за да потвърдите, че тайните съществуват в същия акаунт. След като конфигурирате настройките, щракнете върху „Добавяне на ARN“ бутон:

След конфигуриране всички настройки на политиката, щракнете върху „ Следващия ” бутон:

В Раздели с подробности за правилата , въведете името на политиката в „ Име на политиката ” поле:

Кликнете върху „ Създайте политика ” бутон:

The политика е създадена успешно :

Стъпка 3: Създайте IAM роля

В този раздел създайте IAM роля, която съдържа необходимите разрешения за Lambda функции за достъп до тайните. За целта кликнете върху „ Роли ” от страничната лента на IAM ролята и след това докоснете „Създаване на роля“ бутон от интерфейса:

След като щракнете върху „Създаване на роля“ бутон, ще ви се покаже следният интерфейс. Изберете „Услуга AWS“ опция от следните опции, тъй като ще прикачим това IAM роля с ламбда функция:

В „Случай на употреба“ раздел, потърсете в Ламбда сервиз и го изберете. Удари ' Следващия ” в долната част на интерфейса, за да продължите по-нататък:

На следващ интерфейс , потърсете името на Името на политиката които конфигурирахме по-рано. От показаните резултати изберете име на политика:

Щракнете върху „ Следващия ” в долната част на интерфейс, за да продължите по-нататък:

Осигурете a уникален идентификатор за вашия IAM роля в следното маркирано поле:

Поддържане на останалите настройки по подразбиране , щракнете върху „Създаване на роля“ чрез превъртане надолу до дъното на интерфейса:

Ролята е била успешно създадено:

За да научите повече за създаването на IAM роля в AWS, вижте тази статия: „Как да създадете IAM роли в AWS“ .

Стъпка 4: Създайте ламбда функция

Следващата стъпка е да създадете ламбда функцията. Тази ламбда функция ще съдържа IAM ролята и ще получи стойността на тайните, когато бъде изпълнена. За достъп до услугата Lambda потърсете „ Ламбда ” в лентата за търсене на Конзола за управление на AWS . Кликнете върху името на услугата от резултата, за да посетите конзолата:

В началния интерфейс на услугата Lambda щракнете върху „Създаване на функция“ бутон:

Това ще покаже „Създаване на функция“ интерфейс. Изберете „Автор от нулата“ опция и продължете по-нататък, като предоставите името за Ламбда функция в маркираното поле:

В Поле за изпълнение , изберете „ Python 3.9 ' заобикаляща среда:

Под Секция по време на изпълнение , има „Промяна на ролята за изпълнение по подразбиране“ раздел. Изберете „Използване на съществуваща роля“ опция и след това посочете ролята в „Съществуваща роля“ поле:

На същия интерфейс докоснете „Създаване на функция“ бутон в долната част на интерфейса:

За да научите повече за създаването на ламбда функция, вижте тази статия: „Как да създадете ламбда функция с Pyhton Runtime“ .

Функцията Lambda е създадена. Следващата стъпка е да предоставите кода на функцията Lambda. Когато този код се изпълни, той ще покаже стойностите на Таен мениджър:

импортиране json
импортиране boto3
импортиране база64
от botocore. изключения импортиране ClientError

def ламбда_обработчик ( събитие , контекст ) :
заобикаляща среда = събитие [ 'env' ]
тайно_име = 'shmaster19/%s/ключ' % заобикаляща среда
име_на_регион = 'ap-southeast-1'

сесия = boto3. сесия . Сесия ( )
клиент = сесия. клиент (
име_на_услуга = 'секретен мениджър' ,
име_на_регион = име_на_регион
)

опитвам :
тайна_стойност_отговор = клиент. get_secret_value (
SecretId = тайно_име
)
с изключение на ClientError като грешка :
печат ( грешка )
друго :
ако 'Таен низ' в тайна_стойност_отговор :
тайна = json. товари ( тайна_стойност_отговор [ 'Таен низ' ] )
връщане тайна
друго :
декодирана_двоична_тайна = база64. b64decode ( тайна_стойност_Отговор [ 'SecretBinary' ] )
връщане декодирана_двоична_тайна
  • импортиране на json: използвани за извършване на JSON операции.
  • импортиране на boto3: е SDK за комуникация между AWS и Python.
  • импортиране на база 64: Използва се за извършване на функции за кодиране и декодиране на двоични данни като Base64.
  • импортиране на ClientError: Това позволява на потребителите да обработват изключения в писмения код.
  • тайно_име: В тази променлива въведете името на вашата тайна. Имайте предвид, че тази тайна съдържа '%с' . Това е, когато потребителят има множество ключове с подобен формат. Например, ако потребител е създал две тайни, напр. „apikey/dev/key“ и „apikey/prod/key” . Тогава в '%с' , ако потребителят предостави „ разработка ”, функцията Lambda ще осигури ключ за развитие (apikey/dev/key) и обратно.
  • бото. session.Session(): позволява на потребителите да създават клиенти за услуги и отговори.
  • име_на_регион: Посочете името на региона, в който е конфигурирана вашата AWS тайна.
  • Secret_value_response: В тази променлива използваме „ client.get_secret_value ”, която ще върне стойността на тайната.
  • Декодиран_двоичен_секрет: След придобиване на стойността на тайната, тя ще бъде допълнително декодирана в база 64 формат .

След като поставите кода във функцията Lambda, щракнете върху „ Разположете ”, за да запазите и приложите промените:

Стъпка 5: Тестване на кода

В този раздел на блога ще проверим дали кодът работи или не. За целта кликнете върху „ Тест ” след успешно внедряване на промените във функцията Lambda:

На следващия интерфейс предоставете име за теста събитие в „Име на събитието“ поле:

Превъртете надолу до Раздел JSON за събитие , посочете „ околна среда ” и предоставете стойността във формат JSON. „ стойност ” на ключа ще бъде предаден на '%с' . Тъй като тайните, които посочихме, съдържат „ разработка ” стойност, „ разработка ” стойността се предава на „ околна среда ” променлива. Функцията Lambda ще идентифицира тайната, когато кодът се изпълни, тъй като идентификаторът на конкретната тайна е предоставен в кода. След като посочите подробностите, щракнете върху „ Запазване ” бутон:

Когато събитието е създадено успешно, щракнете върху „ Тест ” бутон:

Ето, имаме успешно получени стойността на нашата посочена тайна:

Това е всичко от това ръководство.

Заключение

За достъп до API ключове в Secret Manager с помощта на Lambda, първо създайте API Secret, IAM Policy, Role и Lambda Function и изпълнете кода на функцията. Ламбда функциите могат да бъдат извикани за получаване на стойностите на AWS Secret Manager чрез указване на идентификатора на тайната при изпълнение на кода. Тази статия предоставя насоки стъпка по стъпка за достъп до API ключове в AWS Secret Manager с помощта на AWS Lambda.