Включение действий по нарушению атак в AWS с помощью Microsoft Sentinel (предварительная версия)

В этой статье описывается, как настроить среду AWS, чтобы Microsoft Sentinel могли выполнять автоматические действия с пользователем, который принимает роль SAML, или с учетной записью AWS IAM при активации оповещения. Прерывание атак использует сигналы высокой достоверности для изоляции скомпрометированных ресурсов и ограничения ущерба от атак, включая действия с учетными записями в AWS. Прежде чем начать, убедитесь, что необходимые aws и Microsoft Sentinel предварительные требования выполнены.

Предварительные условия

Перед началом работы необходимо выполнить следующие предварительные требования:

  • У вас есть активная учетная запись AWS с правами администратора.
  • Рабочая область аналитики Microsoft Sentinel подключена к единому порталу операций безопасности.
  • Соединитель AWS для Microsoft Sentinel развернут и включен.
  • Журналы AWS CloudTrail загружаются в Microsoft Sentinel. См. статью: Подключение Microsoft Sentinel к Amazon Web Services для загрузки данных журналов служб AWS
  • Соответствующие роли и разрешения IAM настроены в AWS, чтобы позволить Microsoft Sentinel выполнять действия с учетными записями IAM.

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

Выполните следующие задачи, чтобы подготовить среду AWS для интеграции Microsoft Sentinel.

1.1. Создание выделенной роли IAM для Microsoft Sentinel

  1. Создайте роль IAM в консоли управления AWS.
  • Выберите службу AWS в качестве доверенной сущности и выберите EC2 в качестве временного заполнителя. Замените это отношение доверия на правильный субъект безопасности Microsoft Sentinel в разделе "Настройка отношения доверия".

  • Прикрепите следующую политику IAM к роли. Эта политика предоставляет Microsoft Sentinel разрешения, необходимые для управления политиками IAM для пользователей и ролей при выполнении действий по прерыванию атак. При необходимости замените <YOUR_ACCOUNT_ID> :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:GetUserPolicy",
            "iam:DeleteRolePolicy",
            "iam:PutUserPolicy",
            "iam:AttachUserPolicy",
            "iam:ListUserPolicies",
            "iam:PutRolePolicy",
            "iam:GetUser",
            "iam:DetachUserPolicy",
            "iam:GetRolePolicy",
            "iam:DeleteUserPolicy", 
         ],
         "Resource": "*"
        }
      ]
    }
    

1.2. Настройка отношения доверия

Создайте настраиваемую политику доверия для роли IAM.

Используйте следующую политику доверия, указав субъект интеграции Microsoft Sentinel (замените <YOUR_AZURE_SUBSCRIPTION_ID> фактическим идентификатором подписки Azure):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com",
        "AWS": "arn:aws:iam::<YOUR_AZURE_SUBSCRIPTION_ID>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Шаг 2. Включение CloudTrail

Включите ведение журнала CloudTrail во всех регионах AWS, чтобы Microsoft Sentinel могли получать необходимые данные о действиях.

  1. В консоли AWS перейдите в раздел CloudTrail.

  2. Убедитесь, что CloudTrail включен и ведение журнала активно для всех регионов.

Шаг 3. Развертывание и включение соединителя AWS в Microsoft Sentinel

Разверните и включите соединитель данных AWS S3 в Microsoft Sentinel, чтобы он мог получать данные журнала из среды AWS. Прежде чем начать, убедитесь, что решение Amazon Web Services установлено из Content Hub в Microsoft Sentinel, чтобы соединитель Amazon Web Services S3 появился в коллекции соединителей данных.

  1. На портале Azure перейдите в Microsoft Sentinel > Соединители данных.

  2. Выберите Amazon Web Services S3 из коллекции соединителей данных.

  3. Следуйте инструкциям в разделе "Подключение Microsoft Sentinel к Amazon Web Services" для приема данных журнала служб AWS, чтобы настроить среду AWS и подключить ее к Microsoft Sentinel.

  4. Укажите роль IAM ARN и URL-адрес очереди Amazon SQS, который получает уведомления журнала S3 из среды AWS. Эти значения создаются во время установки соединителя, описанной на предыдущем шаге.

Шаг 4. Проверка интеграции

Используйте следующие проверки, чтобы убедиться, что интеграция соединителя AWS работает правильно.

  1. В Microsoft Sentinel убедитесь, что соединитель находится в состоянии Подключено.

  2. Проверьте приём журналов и работоспособность коннектора с помощью диагностической таблицы SentinelHealth, в которой отображается состояние коннектора и приёма данных в вашей рабочей области Log Analytics. Также проверьте состояние очереди AWS SQS, чтобы убедиться, что уведомления о записях журнала обрабатываются.

  3. В AWS проверьте, что события CloudTrail и GuardDuty отправляются в Microsoft Sentinel.

Шаг 5. Тестирование интеграции

Выполните следующий тест, чтобы убедиться, что действия реагирования на нарушения автоматической атаки работают должным образом.

  1. Активируйте тестовое оповещение в AWS (например, имитация компрометации учетных данных).

  2. Убедитесь, что Microsoft Sentinel может выполнять настроенные действия с затронутой учетной записью IAM.

  3. Просмотрите журналы аудита в AWS и Microsoft Sentinel, чтобы проверить успешное выполнение.

Шаг 6. Мониторинг и обслуживание

Используйте следующие методики для мониторинга и поддержания интеграции с течением времени.

  • Регулярно просматривайте разрешения ролей IAM и журналы аудита в AWS.
  • При необходимости обновляйте правила аналитики и сборники схем автоматизации Microsoft Sentinel, чтобы отразить изменения в среде AWS.
  • Мониторинг оповещений и действий реагирования на портале Microsoft Sentinel.

Следующие скрипты автоматизируют настройку роли AWS IAM и провайдера OIDC для интеграции Microsoft Sentinel с AWS, чтобы включить функцию прерывания атак:

Следующий сценарий Bash автоматизирует настройку поставщика AWS OIDC и создание роли IAM для интеграции Microsoft Sentinel. Перед запуском убедитесь, что интерфейс командной строки AWS установлен и прошел проверку подлинности с учетной записью с правами администратора IAM. Сохраните фрагмент кода в виде файла Bash и выполните его.

#!/bin/bash
# AWS Sentinel OIDC Setup Script
# Configures IAM roles and policies for Microsoft Sentinel integration

set -e  # Exit on error

# Color codes for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

ms_federated_endpoint="sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d"
actions_audience="api://b7c1e142-0933-4310-ba00-8b28878bfece"
role_name="OIDC_Actions_Sentinel"
policy_name="SentinelActionsPolicy"

# Verify AWS credentials are configured
echo -e "${CYAN}Verifying AWS credentials...${NC}"
if ! account_id=$(aws sts get-caller-identity --query Account --output text 2>&1); then
    echo -e "\n${RED}ERROR: AWS credentials not configured or invalid${NC}"
    echo -e "${RED}Details: $account_id${NC}"
    echo -e "\n${YELLOW}Please authenticate using one of these methods:${NC}"
    echo -e "${YELLOW}  1. Run 'aws configure' to set up credentials${NC}"
    echo -e "${YELLOW}  2. Set AWS environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)${NC}"
    echo -e "${YELLOW}  3. Use 'aws sso login --profile <profile-name>' for SSO${NC}"
    exit 1
fi
echo -e "${GREEN}✓ AWS authenticated (Account: $account_id)${NC}"
trust_policy_document=$(cat << EOM
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::$account_id:oidc-provider/$ms_federated_endpoint/"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "$ms_federated_endpoint/:aud": "$actions_audience",
                    "sts:RoleSessionName": "MicrosoftSentinel_$account_id"
                }
            }
        }
    ]
}
EOM
)
permissions_policy_document=$(cat << EOM
{
  "Statement": [
    {
      "Sid": "SentinelActionsPermissions",
      "Effect": "Allow",
      "Action": [
        "iam:GetUserPolicy",
        "iam:DeleteRolePolicy",
        "iam:PutUserPolicy",
        "iam:AttachUserPolicy",
        "iam:ListUserPolicies",
        "iam:PutRolePolicy",
        "iam:GetUser",
        "iam:DetachUserPolicy",
        "iam:GetRolePolicy",
        "iam:DeleteUserPolicy",
        "s3:PutBucketPublicAccessBlock"
      ],
      "Resource": "*"
    }
  ]
}
EOM
)

aws iam add-client-id-to-open-id-connect-provider --open-id-connect-provider-arn arn:aws:iam::$account_id:oidc-provider/$ms_federated_endpoint/ --client-id $actions_audience
aws iam create-role --role-name $role_name --assume-role-policy-document "$trust_policy_document" || aws iam update-assume-role-policy --role-name $role_name --policy-document "$trust_policy_document"
aws iam put-role-policy --role-name $role_name --policy-name $policy_name --policy-document "$permissions_policy_document"