你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何配置 AWS 环境,以便Microsoft Sentinel可以在触发警报时对承担 SAML 角色的用户或 AWS IAM 帐户执行自动操作。 攻击中断使用高置信度信号来遏制已泄露的资产,并限制攻击造成的损害,包括对 AWS 中标识的操作。
先决条件
在开始之前,需要满足以下先决条件:
- 你有一个具有管理权限的活动 AWS 帐户。
- Microsoft Sentinel分析工作区已连接到统一安全操作门户。
- 已部署并启用适用于Microsoft Sentinel的 AWS 连接器
- AWS CloudTrail 日志正在引入Microsoft Sentinel请参阅:将Microsoft Sentinel连接到 Amazon Web Services 以引入 AWS 服务日志数据
- AWS 中配置了相应的 IAM 角色和权限,以允许Microsoft Sentinel对 IAM 帐户执行操作。
步骤 1:准备 AWS 进行集成
1.1 为Microsoft Sentinel创建专用 IAM 角色
- 在 AWS 管理控制台中创建新的 IAM 角色。
选择 “AWS 服务 ”作为受信任的实体,然后选择 “EC2 ” (接下来) 更新 信任关系。
将以下策略附加到角色, (根据需要替换 <YOUR_ACCOUNT_ID>) :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:UpdateLoginProfile", "iam:DeactivateMFADevice", "iam:DeleteAccessKey", "iam:DeleteLoginProfile", "iam:DeleteUser", "iam:RemoveUserFromGroup", "iam:ResetServiceSpecificCredential", "iam:ResyncMFADevice", "iam:DeleteUserPermissionsBoundary", "iam:DeleteUserPolicy", "iam:DetachUserPolicy" ], "Resource": "arn:aws:iam::<YOUR_ACCOUNT_ID>:user/*" } ] }
1.2 配置信任关系
为 IAM 角色 创建自定义信任策略 。
使用以下信任策略,指定Microsoft Sentinel集成主体 (替换为<YOUR_AZURE_SUBSCRIPTION_ID>实际Azure订阅 ID) :
{
"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
在 AWS 控制台中,转到 “CloudTrail”。
确保已启用 CloudTrail,并且所有区域的日志记录都处于活动状态。
步骤 3:在 Microsoft Sentinel 中部署和启用 AWS 连接器
在Azure 门户,转到Microsoft Sentinel>数据连接器。
从数据连接器库中选择 “Amazon Web Services S3 ”。
如果未看到连接器,请从 Microsoft Sentinel 中的内容中心安装 Amazon Web Services 解决方案。
按照官方文档中的说明设置 AWS 环境并将其连接到Microsoft Sentinel。
根据需要提供 IAM 角色 ARN 和 SQS 队列 URL。
步骤 4:验证集成
在“Microsoft Sentinel”中,确认连接器状态为“已连接”。
使用 SentinelHealth 日志和 AWS SQS 队列状态验证日志引入和连接器运行状况。
在 AWS 中,检查将 CloudTrail 和 GuardDuty 事件发送到Microsoft Sentinel。
步骤 5:测试集成
在 AWS (触发测试警报,例如,模拟凭据泄露) 。
确认Microsoft Sentinel可以对受影响的 IAM 帐户执行配置的操作。
查看 AWS 中的审核日志并Microsoft Sentinel以验证成功执行。
步骤 6:监视和维护
- 定期查看 AWS 中的 IAM 角色权限和审核日志。
- 根据需要更新Microsoft Sentinel分析规则和自动化 playbook,以反映 AWS 环境中的更改。
- 监视Microsoft Sentinel门户中的警报和响应操作。
以下脚本可以自动执行与 Microsoft Sentinel 和 AWS 的集成以启用攻击中断的过程:
将以下代码片段保存为 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"