Автоматизация ведения журнала диагностики службы приложений в хранилище - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь автоматизировать процесс настройки службы приложений Azure для экспорта журналов диагностики в хранилище Azure, но я сталкиваюсь с тем, что не совсем понимаю.Чтобы заставить его работать, я могу предпринять следующие шаги:

  1. Я настраиваю ведение журнала диагностики на портале 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. Затем я могу жестко закодировать значения sasUrl в шаблоне ARM с ресурсом config/logs, и все по-прежнему работает.Я могу убедиться в этом, сначала удалив контейнеры хранения и отключив диагностические журналы, а затем повторно развернув шаблон ARM.

После того, как это работает, я пытаюсь использовать функцию шаблона ARM listAccountSas для генерации новогоSAS для ресурса хранения.Однако полученный SAS имеет немного другой формат, чем тот, который я получил в Azure Resource Explorer: sv=YYYY-MM-DD&ss=b&srt=s&sp=rwdl&st=YYYY-MM-DDTHH%3AMM%3ASS.0000000Z&se=YYYY-MM-DDTHH%3AMM%3ASS.0000000Z&spr=https&sig=<sig>.

Итак, что здесь происходит.Как портал генерирует SAS?Функция listAccountSas генерирует токен, который будет работать на своем месте?Есть ли способ автоматизировать эту конфигурацию?

1 Ответ

0 голосов
/ 19 октября 2018

Насколько я знаю, функция шаблона ARM listAccountSas может только перечислять значения, она не может создавать новые vaule. И вы не можете создать sasToken в шаблоне.Я предлагаю вам использовать Powershell для создания sasToken, хранить его в Azure KeyVault и ссылаться на этот секрет KeyVault в шаблоне.Относительно того, как использовать сертификат в шаблоне, пожалуйста, обратитесь к документу .

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...