需要powershell脚本来启用存储帐户和密钥库的诊断日志记录

时间:2020-05-28 20:41:16

标签: azure powershell azure-storage azure-keyvault azure-diagnostics

我正在使用以下脚本创建存储帐户,Key Vault和ADF。我还想在存储帐户和Key Vault上启用诊断日志记录。脚本可以正常运行并创建资源,但是不会启用KV和存储帐户的诊断日志。如果您能提供帮助,将不胜感激。

$subscription="Azure subscription 1"
$rgName = "Test"
$location = "eastus"
$storageaccountName = "tempaccountlogs"
$adfName = "tempdpadf"
$department = "Testtemp"
$kvname = "kvnamAkbt"

$sa = New-AzStorageAccount -ResourceGroupName $rgName -AccountName $storageaccountName -Location $location -SkuName Standard_LRS -Kind BlobStorage -AccessTier Hot -Tag @{department=$department}
$DataFactory = Set-AzDataFactoryV2 -Name $adfName -ResourceGroupName $rgName -Location $location -Tag @{chargecode=$chargeCode;department=$department;environment=$environment;project=$project}
$kv = New-AzKeyVault -VaultName $kvname -ResourceGroupName $rgName -Location $location


set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Categories AuditEvent
set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -RetentionEnabled $true -RetentionInDays 90

3 个答案:

答案 0 :(得分:1)

您的脚本的问题是它给出了错误:

找不到与参数名称“类别”匹配的参数。

您使用的是“类别”参数,而不是“类别”。如果您检查此documentation正确的参数为-Category,请使用此参数,如下所示:

set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Category AuditEvent
set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -RetentionEnabled $true -RetentionInDays 90

要启用存储帐户的日志记录,请查看此documentation

答案 1 :(得分:1)

$diagname = "storage logs"
    
$ErrorActionPreference = "SilentlyContinue"
Import-Module -Name Az
    
Import-Csv "$home\azuresubscription.csv" |`
ForEach-Object{
        
    #CentralLogAnalytics
    $workspaceid = "your central logging resource id - exact object"
    Select-AzSubscription -Subscription $_.Name
    $storageAccounts = Get-AzStorageAccount | Select-Object Id

    foreach ($stor in $storageAccounts)
    {
        Set-AzDiagnosticSetting -Name $diagname -ResourceId $stor.Id -WorkspaceId $workspaceid -Enabled $true
    
        $blobid = -join($stor.id,"/blobServices/default")
        $fileid = -join($stor.id, "/fileServices/default")
        $queueid = -join($stor.id, "/queueServices/default")
        $tableid = -join($stor.id, "/tableServices/default")
    
        $resourcetypeid = @($blobid, $fileid, $queueid, $tableid)
        foreach ($item in $resourcetypeid)
        {
            Set-AzDiagnosticSetting -Name $diagname -ResourceId $item -WorkspaceId $workspaceid -Enabled $true 
        }        
    }
}

先决条件: 该脚本需要 CSV 文件中的 azure 订阅列表。放入 CSV 最好在 NonProd 订阅中轻松测试。订阅的对象也可以在这里提供。

功能: 这将启用 Blob、队列、文件和表以及父级别的指标。

答案 2 :(得分:0)

您应该在cmd中包括-WorkspaceId参数。参见参考文献here

我成功运行的示例:

set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Category AuditEvent -WorkspaceId {resource id of the Log Analytics workspace}

有关如何创建Log Analytics工作区的信息,请参阅Create workspace


更新

有关如何为ADF启用诊断日志的信息,请参考以下示例:

$ws = Get-AzOperationalInsightsWorkspace -Name "testLAW" -ResourceGroupName "test"
$DataFactory = Set-AzDataFactoryV2 -ResourceGroupName "test" -Name "testADF" -Location "WestUS"
set-AzDiagnosticSetting -ResourceId $DataFactory.DataFactoryId  -Enabled $true -WorkspaceId $ws.ResourceId