【问题标题】:Automate App Service diagnostic logging to Storage自动将应用服务诊断日志记录到存储
【发布时间】:2019-03-23 18:27:33
【问题描述】:

我正在尝试自动化配置 Azure 应用服务以将诊断日志导出到 Azure 存储的过程,但我遇到了一些我不太了解的问题。我可以采取以下步骤使其正常工作。

  1. 我根据documentation 在 Azure 门户中配置诊断日志记录。一切看起来都很好。我可以看到存储容器中填充的日志。
  2. 使用Azure Resource Explorer,我导航到config/logs 资源并观察JSON:

    "applicationLogs": {
      ...
      "azureBlobStorage": {
        "level": "Information",
        "sasUrl": "https://<storagename>.blob.core.windows.net/<container>?sv=YYYY-MM-DD&sr=c&sig=<sig>&st=YYYY-MM-DDTHH:MM:SSZ&se=YYYY-MM-DDTHH:MM:SSZ&sp=rwdl",
        "retentionInDays": null
      }
    },
    "httpLogs": {
      ...
      "azureBlobStorage": {
        "sasUrl": "https://<storagename>.blob.core.windows.net/<container>?sv=YYYY-MM-DD&sr=c&sig=<sig>&st=YYYY-MM-DDTHH:MM:SSZ&se=YYYY-MM-DDTHH:MM:SSZ&sp=rwdl",
        "retentionInDays": null,
        "enabled": true
      }
    },
    
  3. 然后我可以使用config/logs 资源在ARM 模板中对sasUrl 值进行硬编码,一切仍然有效。我可以先删除存储容器并禁用诊断日志,然后重新部署 ARM 模板来验证这一点。

完成该工作后,我尝试使用 ARM 模板函数 listAccountSas 为存储资源生成新的 SAS。但是,生成的 SAS 格式与我从 Azure 资源浏览器获得的格式略有不同:sv=YYYY-MM-DD&amp;ss=b&amp;srt=s&amp;sp=rwdl&amp;st=YYYY-MM-DDTHH%3AMM%3ASS.0000000Z&amp;se=YYYY-MM-DDTHH%3AMM%3ASS.0000000Z&amp;spr=https&amp;sig=&lt;sig&gt;

那么这里发生了什么。门户如何生成 SAS? listAccountSas 函数是否生成了一个可以代替它工作的令牌?有没有办法自动化这种配置?

【问题讨论】:

    标签: azure azure-storage azure-web-app-service


    【解决方案1】:

    据我所知,ARM模板函数listAccountSas只能列出值,不能创建新值。而且你不能在模板内创建sasToken。我建议您使用 Powershell 创建一个 sasToken,将其存储在 Azure KeyVault 中,并在模板中引用该 KeyVault 机密。 关于如何在模板中使用cert,请参考document

    $name = "your account"
    $password = "your password"
    $RGname = "your resource group name"
    $accountNmae  ="your Storage Account name"
    $containerNmae ="your container name"
    $keyvaultNmae ="your Key Vault name"
    $certName = "your cert name"
    $location = ""
    
    # login Azure 
    $secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ($name, $secpasswd)
    Add-AzureRmAccount -Credential $mycreds
    
    #create Azure storage SAS URL
    $account = Get-AzureRmStorageAccount -ResourceGroupName $RGname  -Name $accountNmae
    $SASURL = New-AzureStorageContainerSASToken -Container $containerNmae -Context $account.Context -Permission rwdl -ExpiryTime (Get-Date).AddYears(1) -FullUri
    
    #create key vault
    New-AzureRmKeyVault -VaultName $keyVaultName -resourceGroupName $RGname -Location $location -EnabledForTemplateDeployment
    Set-AzureRmKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $name -PermissionsToSecrets set,delete,get,list
    
    #create cert
    $secretvalue = ConvertTo-SecureString $SASURL -AsPlainText -Force
    Set-AzureKeyVaultSecret -VaultName $keyvaultNmae -Name "test" -SecretValue $secretvalue
    

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 2021-12-24
      • 2021-04-23
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 2023-03-07
      • 2020-11-07
      • 2016-09-29
      相关资源
      最近更新 更多