Импорт отчетов с помощью AWS Lambda Function в AWS Security Hub

Чтобы отправить данные сканирования из AWS Security Hub в Security Center

Для этого используется функция AWS Lambda, написанная на языке Python. Функция извлекает API-ключ из AWS Secrets Manager, формирует запрос с данными сканирования и отправляет его на указанный адрес Security Center.

Шаг 1: Подготовка к интеграции

  1. AWS Lambda: Убедитесь, что у вас настроена и функционирует функция AWS Lambda

  2. AWS Secrets Manager: Создайте секрет в AWS Secrets Manager, содержащий API-ключ для доступа к Security Center. Убедитесь, что у вас есть права на чтение этого секрета

Шаг 2: Создание функции AWS Lambda

  1. Перейдите в консоль AWS Lambda

  2. Создайте новую лямбда-функцию согласно вашим требованиям

  3. Убедитесь, что функция имеет необходимые разрешения для доступа к Secrets Manager и выполнения HTTP-запросов.

  4. Вставьте код в редактор кода вашей функции:

import json
import boto3
import urllib.request
import urllib3


def lambda_handler(event, context):
    
    # Fetch Security Center API key from AWS Secrets Manager
    client_sm = boto3.client('secretsmanager')
    security_center_secret_raw = client_sm.get_secret_value(
        SecretId="<secret_name>"
    )
    security_center_api_json = json.loads(security_center_secret_raw["SecretString"])
    security_center_api_token = "Token " + security_center_api_json['key']
    
    while True:
        try:
            url = 'https://<security_center_address>/api/v1/scan/import/'
            body = {
                "file": ("event.json", json.dumps(event)),
                "product_name": "AWS",
                "product_type": "AWS",
                "scanner_name": "AWS Security Hub Scan"
            }
            data, header = urllib3.encode_multipart_formdata(body)
            r = urllib.request.Request(url, data=data)
            r.add_header('Authorization', security_center_api_token)
            r.add_header('Content-Type', header)
            response = urllib.request.urlopen(r)
            print(response.getcode())
        except Exception as e:
            raise e
        break
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

Замените "<secret_name>" на имя секрета в AWS Secrets Manager, содержащего ваш API-ключ для Security Center

Замените "<security_center_address>" адресом вашего Security Center

  1. Сохраните изменения, внесенные в функцию

Шаг 3: Запустите функцию

  1. В разделе "Тест" консоли AWS Lambda создайте тестовое событие с содержимым, аналогичным вашему отчету, чтобы проверить работу функции

  2. Если функция успешно прошла тестирование, опубликуйте ее

Поздравляем! Теперь ваша функция готова отправлять отчеты на Security Center

Last updated