AWS - Lambda Enum
Lambda
Amazon Web Services (AWS) Lambda описується як сервіс обчислення, який дозволяє виконувати код без необхідності управління сервером. Він характеризується можливістю автоматично керувати розподілом ресурсів, необхідних для виконання коду, забезпечуючи такі функції, як висока доступність, масштабованість та безпека. Важливим аспектом Lambda є його модель ціноутворення, де оплата здійснюється виключно за використаний час обчислень, усуваючи потребу в початкових інвестиціях або довгострокових зобов'язаннях.
Для виклику лямбди можна викликати її настільки часто, наскільки ви хочете (за допомогою Cloudwatch), викласти URL-точку доступу та викликати її, викликати через API Gateway або навіть на основі подій, таких як зміни даних у буфері S3 або оновлення таблиці DynamoDB.
Код лямбди зберігається в /var/task
.
Ваги псевдонімів Lambda
У лямбди може бути кілька версій. І вона може мати більше 1 версію, викладену через псевдоніми. Ваги кожної з версій, викладених у псевдонімі, визначать, який псевдонім отримає виклик (наприклад, це може бути 90%-10%). Якщо один з псевдонімів вразливий, ви можете надсилати запити, поки вразлива версія отримає експлойт.
Політики ресурсів Lambda
Політики ресурсів Lambda дозволяють надавати доступ іншим сервісам/акаунтам для виклику лямбди, наприклад. Наприклад, це політика, щоб дозволити кожному отримати доступ до лямбди, викладеної через URL:
Або це, щоб дозволити API Gateway викликати його:
Проксі-бази даних Lambda
Коли є сотні одночасних запитів до лямбди, якщо кожен з них потребує підключення та закриття з'єднання з базою даних, це просто не працюватиме (лямбди є безстандартними, не можуть підтримувати відкриті з'єднання). Тоді, якщо ваші функції Lambda взаємодіють з RDS Proxy замість вашого екземпляра бази даних, він обробляє пул підключень, необхідний для масштабування багатьох одночасних з'єднань, створених конкурентними функціями Lambda. Це дозволяє вашим додаткам Lambda повторно використовувати існуючі з'єднання, а не створювати нові з'єднання для кожного виклику функції.
Файлові системи Lambda EFS
Для збереження та навіть спільного доступу до даних лямбди можуть отримувати доступ до EFS та монтувати їх, тому Lambda зможе читати та записувати з них.
Шари Lambda
Шар Lambda - це .zip-архів файлу, який може містити додатковий код або інший вміст. Шар може містити бібліотеки, власний рантайм, дані або файли конфігурації.
Можливо включити до п'яти шарів на функцію. Коли ви включаєте шар у функцію, вміст розпаковується в каталог /opt
в середовищі виконання.
За замовчуванням шари, які ви створюєте, приватні для вашого облікового запису AWS. Ви можете вибрати поділитися шаром з іншими обліковими записами або зробити шар публічним. Якщо ваші функції використовують шар, який опублікував інший обліковий запис, ваші функції можуть продовжувати використовувати версію шару після його видалення або після скасування вашого дозволу на доступ до шару. Однак ви не можете створити нову функцію або оновити функції, використовуючи видалену версію шару.
Функції, розгорнуті як контейнерне зображення, не використовують шари. Замість цього ви упаковуєте ваш вибраний рантайм, бібліотеки та інші залежності в контейнерне зображення під час побудови зображення.
Розширення Lambda
Розширення Lambda покращують функції, інтегруючись з різними інструментами моніторингу, спостереження, безпеки та управління. Ці розширення, додані за допомогою .zip-архівів, використовуючи шари Lambda або включені в розгортання контейнерних зображень, працюють у двох режимах: внутрішній та зовнішній.
Внутрішні розширення зливаються з процесом виконання, маніпулюючи його запуск за допомогою змінних середовища, специфічних для мови програмування та обгорткових сценаріїв. Ця настройка застосовується до ряду рантаймів, включаючи Java Correto 8 і 11, Node.js 10 і 12, та .NET Core 3.1.
Зовнішні розширення працюють як окремі процеси, зберігаючи відповідність операцій з життєвим циклом функції Lambda. Вони сумісні з різними рантаймами, такими як Node.js 10 і 12, Python 3.7 і 3.8, Ruby 2.5 і 2.7, Java Corretto 8 і 11, .NET Core 3.1, та власними рантаймами.
Перелік
Викликати лямбду
Вручну
Через викритий URL
Виклик Lambda-функції через URL
Тепер час дізнатися можливі Lambda-функції для виконання:
Функція lambda під назвою "Level6" доступна. Давайте дізнаємося, як її викликати:
Тепер, коли ви знаєте назву та ID, ви можете отримати назву:
І, нарешті, викличте функцію, звертаючись до (зверніть увагу, що ID, Name та function-name з'являються в URL): https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6
URL:
https://<rest-api-id>.execute-api.<region>.amazonaws.com/<stageName>/<funcName>
Інші тригери
Є багато інших джерел, які можуть викликати лямбду
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами Lambda для підвищення привілеїв:
pageAWS - Lambda PrivescНеаутентифікований доступ
pageAWS - Lambda Unauthenticated AccessПісляексплуатаційна діяльність
pageAWS - Lambda Post ExploitationПостійність
pageAWS - Lambda PersistenceПосилання
Last updated