如何通过PowerShell创建排除SigninLogs的Entra ID诊断设置?
通过PowerShell自动化创建Entra ID租户级诊断设置
完全可以实现,要注意的是:你提到的非资源特定的Entra ID诊断设置属于租户级日志配置,不能用Az模块的Set-AzDiagnosticSetting操作,必须使用Microsoft Graph PowerShell模块来完成,以下是具体的自动化实现步骤:
1. 准备工作
首先安装并导入所需的Microsoft Graph模块:
Install-Module Microsoft.Graph -Force -AllowClobber Import-Module Microsoft.Graph.DeviceManagement.Administration
2. 身份验证
使用具有对应权限的账户登录Microsoft Graph,需要的权限为Directory.ReadWrite.All和DiagnosticSettings.ReadWrite.All:
# 交互式登录(适合测试) Connect-MgGraph -Scopes "Directory.ReadWrite.All", "DiagnosticSettings.ReadWrite.All" # 服务主体登录(适合自动化场景) $clientId = "你的服务主体ID" $clientSecret = "你的服务主体密钥" | ConvertTo-SecureString -AsPlainText -Force $tenantId = "你的租户ID" $credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret) Connect-MgGraph -TenantId $tenantId -ClientSecretCredential $credential -Scopes "Directory.ReadWrite.All", "DiagnosticSettings.ReadWrite.All"
3. 获取目标资源ID
获取Log Analytics工作区和存储账户的资源ID(如果已经知道ID可以直接赋值):
# 获取Log Analytics工作区ID $workspaceId = (Get-AzOperationalInsightsWorkspace -Name "你的工作区名称" -ResourceGroupName "资源组名称").ResourceId # 获取存储账户ID $storageAccountId = (Get-AzStorageAccount -Name "你的存储账户名称" -ResourceGroupName "资源组名称").ResourceId
4. 定义日志收集规则
指定除SigninLogs外的所有Entra ID日志类别:
$logCategories = @( "AuditLogs", "NonInteractiveUserSignInLogs", "ServicePrincipalSignInLogs", "ManagedIdentitySignInLogs", "ProvisioningLogs", "ADFSSignInLogs", "RiskyUsers", "RiskyServicePrincipals", "RiskDetected" )
5. 创建诊断设置
执行命令创建租户级诊断设置,同时将日志发送到Log Analytics和存储账户:
New-MgTenantDiagnosticSetting -Name "EntraID-AllLogs-ExceptSignins" ` -LogAnalyticsWorkspaceId $workspaceId ` -StorageAccountId $storageAccountId ` -Logs @($logCategories | ForEach-Object { @{Category = $_; Enabled = $true } })
验证配置
可以使用以下命令确认诊断设置是否创建成功:
Get-MgTenantDiagnosticSetting
内容的提问来源于stack exchange,提问作者mohamed sabeq
相关产品推荐
相关产品推荐

