本文說明如何配置您的 AWS 環境,使 Microsoft Sentinel 能對擔任 SAML 角色的使用者,或在警報觸發時對 AWS IAM 帳號自動執行行動。 Microsoft Defender 全面偵測回應 中的自動攻擊中斷利用高信心訊號來遏止被入侵的資產,並限制攻擊造成的損害,包括對 AWS 身份的行動。 在開始之前,請確保具備AWS和Microsoft Sentinel所需的先決條件。
必要條件
在開始之前,你需要具備以下先決條件:
- 你有一個有效的 AWS 帳號,擁有管理員權限。
- 您的 Microsoft Sentinel 分析工作空間連接至統一安全運營入口網站。
- Microsoft Sentinel 的 AWS 連接器已部署並啟用。
- AWS CloudTrail 日誌正在被導入 Microsoft Sentinel;請參見「Connect Microsoft Sentinel to Amazon Web Services」以匯入 AWS 服務日誌資料。
- AWS 已設定適當的 IAM 角色與權限,讓 Microsoft Sentinel 能對 IAM 帳號執行操作。
- Amazon Web Services 解決方案是從 Microsoft Sentinel 的 Content Hub 安裝,因此 Amazon Web Services S3 連接器會顯示在資料連接器圖庫中。
步驟 1:準備 AWS 進行整合
完成以下任務,為您的 AWS 環境準備整合 Microsoft Sentinel。
1.1 為 Microsoft Sentinel 建立專用的 IAM 角色
在 AWS 管理主控台建立一個新的 IAM 角色。
選擇 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 訂用帳戶 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"
}
]
}
步驟二:啟用 CloudTrail
在所有 AWS 區域啟用 CloudTrail 日誌功能,讓 Microsoft Sentinel 能接收所需的活動資料。
在 AWS 控制台,前往 CloudTrail。
確保所有區域都啟用 CloudTrail,且日誌記錄都已啟用。
步驟 3:部署並啟用 Microsoft Sentinel 中的 AWS 連接器
在 Microsoft Sentinel 中部署並啟用 AWS S3 資料連接器,使其能從你的 AWS 環境接收日誌資料。 在開始之前,請確保 Amazon Web Services 解決方案是從 Microsoft Sentinel 的 Content Hub 安裝,這樣 Amazon Web Services S3 連接器才會出現在資料連接器的圖庫中。
在 Azure 入口網站中,前往 Microsoft Sentinel > 資料連接器。
從資料連接器圖庫中選擇 Amazon Web Services S3 。
請依照「Connect Microsoft Sentinel to Amazon Web Services」中的指示,匯入 AWS 服務日誌資料,建立您的 AWS 環境並將其連接到 Microsoft Sentinel。
提供 IAM 角色 ARN,以及接收來自 AWS 環境之 S3 記錄通知的 Amazon SQS 佇列 URL。 這些值是在你設定連接器時產生的,方法是依照 Connect Microsoft Sentinel 到 Amazon Web Services 來匯入 AWS 服務日誌資料。
步驟 4:驗證整合
請使用以下檢查來確認 AWS 連接器整合是否正常運作。
在 Microsoft Sentinel 中,確認連接器狀態為已連接。
使用 SentinelHealth 診斷資料表驗證記錄擷取與連接器健康情況,該資料表會在您的 Log Analytics 工作區中回報連接器與擷取的健康情況狀態。 同時檢查 AWS SQS 佇列狀態,確認日誌通知是否正在處理中。
在 AWS 中,請檢查 CloudTrail 和 GuardDuty 事件是否被傳送到 Microsoft Sentinel。
步驟 5:測試整合
請執行以下測試以驗證自動化攻擊中斷回應動作是否如預期般運作。
在 AWS 中觸發測試警示(例如模擬憑證外洩)。
確認 Microsoft Sentinel 是否能對受影響的 IAM 帳戶執行已設定的操作。
在 AWS 和 Microsoft Sentinel 中檢視稽核日誌,以驗證執行成功。
步驟六:監控並維持
請運用以下做法來監控並持續維護整合。
- 定期檢視 AWS 中的 IAM 角色權限和稽核日誌。
- 根據需要更新 Microsoft Sentinel 的分析規則與自動化手冊,以反映您的 AWS 環境變化。
- 監控 Microsoft Sentinel 入口網站中的警報與回應動作。
以下腳本自動化 AWS IAM 角色及 OIDC 提供者設定,以整合 Microsoft Sentinel 與 AWS 以實現攻擊中斷:
以下 Bash 腳本自動化 AWS OIDC 提供者設定及 Microsoft Sentinel 整合的 IAM 角色建立。 執行前,請確認 AWS CLI 已安裝並以擁有 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"