Импорт отчетов с помощью AWS Lambda Function в AWS Security Hub
Чтобы отправить данные сканирования из AWS Security Hub в Security Center
Для этого используется функция AWS Lambda, написанная на языке Python. Функция извлекает API-ключ из AWS Secrets Manager, формирует запрос с данными сканирования и отправляет его на указанный адрес Security Center.
Шаг 1: Подготовка к интеграции
AWS Lambda: Убедитесь, что у вас настроена и функционирует функция AWS Lambda
AWS Secrets Manager: Создайте секрет в AWS Secrets Manager, содержащий API-ключ для доступа к Security Center. Убедитесь, что у вас есть права на чтение этого секрета
Шаг 2: Создание функции AWS Lambda
Перейдите в консоль AWS Lambda
Создайте новую лямбда-функцию согласно вашим требованиям
Убедитесь, что функция имеет необходимые разрешения для доступа к Secrets Manager и выполнения HTTP-запросов.
Вставьте код в редактор кода вашей функции:
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
Сохраните изменения, внесенные в функцию
Шаг 3: Запустите функцию
В разделе "Тест" консоли AWS Lambda создайте тестовое событие с содержимым, аналогичным вашему отчету, чтобы проверить работу функции
Если функция успешно прошла тестирование, опубликуйте ее
Поздравляем! Теперь ваша функция готова отправлять отчеты на Security Center