SignVersion в токене SAS неправильно сгенерирован из шаблона ARM - PullRequest
3 голосов
/ 02 апреля 2019

Я использую следующий пример для генерации SAS и настройки службы приложений для отправки https и журналов приложений на blob .

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "type": "string",
            "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]",
            "metadata": {
                "description": "The name of Storage Account."
            }
        },
        "blobContainerName": {
            "type": "string",
            "defaultValue": "[concat(parameters('webAppName'), '-logs')]",
            "metadata": {
                "description": "The name of Blob Container to store diagnostics logs from Web App."
            }
        },
        "storageAccountSkuName": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "metadata": {
                "description": "The name of the App Service Plan."
            }
        },
        "storageAccountKind": {
            "type": "string",
            "defaultValue": "StorageV2",
            "metadata": {
                "description": "The name of the Storage Account Type."
            }
        },
        "appServicePlanName": {
            "type": "string",
            "defaultValue": "[concat('appServicePlan', '-', uniqueString(resourceGroup().id))]",
            "metadata": {
                "description": "The name of the App Service Plan."
            }
        },
        "appServicePlanSkuName": {
            "type": "string",
            "defaultValue": "F1",
            "metadata": {
                "description": "The SKU name of the App Serivce Plan."
            }
        },
        "webAppName": {
            "type": "string",
            "defaultValue": "[concat('webApp', '-', uniqueString(resourceGroup().id))]",
            "metadata": {
                "description": "The name of the Web App."
            }
        },
        "diagnosticsLogsLevel": {
            "type": "string",
            "defaultValue": "Verbose",
            "allowedValues": [
                "Verbose",
                "Information",
                "Warning",
                "Error"
            ],
            "metadata": {
                "description": "The degree of severity for diagnostics logs."
            }
        },
        "diagnosticsLogsRetentionInDays": {
            "type": "int",
            "defaultValue": 10,
            "metadata": {
                "description": "Number of days for which the diagnostics logs will be retained."
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Location for all resources."
            }
        }
    },
    "variables": {
        "blobContainerName": "[toLower(parameters('blobContainerName'))]",
        "listAccountSasRequestContent": {
            "signedServices": "bfqt",
            "signedPermission": "rwdlacup",
            "signedStart": "2018-10-01T00:00:00Z",
            "signedExpiry": "2218-10-30T00:00:00Z",
            "signedResourceTypes": "sco"
        }
    },
    "resources": [
        {
            "apiVersion": "2018-02-01",
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[parameters('storageAccountName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "[parameters('storageAccountSkuName')]"
            },
            "kind": "[parameters('storageAccountKind')]",
            "resources": [
                {
                    "name": "[concat('default/', variables('blobContainerName'))]",
                    "type": "blobServices/containers",
                    "apiVersion": "2018-02-01",
                    "dependsOn": [
                        "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
                    ],
                    "properties": {
                        "publicAccess": "Blob"
                    }
                }
            ]
        },
        {
            "apiVersion": "2018-02-01",
            "type": "Microsoft.Web/serverfarms",
            "name": "[parameters('appServicePlanName')]",
            "location": "[parameters('location')]",
            "sku": {
                "Name": "[parameters('appServicePlanSkuName')]"
            }
        },
        {
            "apiVersion": "2018-02-01",
            "type": "Microsoft.Web/sites",
            "name": "[parameters('webAppName')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
            ],
            "properties": {
                "name": "[parameters('webAppName')]",
                "serverFarmId": "[concat('/subscriptions/', subscription().id,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', parameters('appServicePlanName'))]"
            },
            "resources": [
                {
                    "apiVersion": "2018-02-01",
                    "type": "config",
                    "name": "logs",
                    "dependsOn": [
                        "[concat('Microsoft.Web/sites/', parameters('webAppName'))]"
                    ],
                    "properties": {
                        "applicationLogs": {
                            "azureBlobStorage": {
                                "level": "[parameters('diagnosticsLogsLevel')]",
                                "sasUrl": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))).primaryEndpoints.blob, variables('blobContainerName'), '?', listAccountSas(parameters('storageAccountName'), '2018-02-01', variables('listAccountSasRequestContent')).accountSasToken)]",
                                "retentionInDays": "[parameters('diagnosticsLogsRetentionInDays')]"
                            }
                        }
                    }
                }
            ]
        }
    ]
}

Когда я пытался протоколировать поток, один из моих AppServiceПри развертывании с этим шаблоном ARM я увидел следующее сообщение об ошибке: Отсутствуют обязательные параметры для действительной подписи общего доступа.listAccountSasRequestContent

https://xxxstorage.blob.core.windows.net/httplogs?sv=2015-04-05&ss=bfqt&srt=sco&sp=rwdlacup&st=2018-01-01T00:00:00.0000000Z&se=2118-01-01T00:00:00.0000000Z&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Что может быть основной причиной этой ошибки?

PS Если я генерируюSAS вручную из портала или обозревателя хранилища Azure Я вижу, что sv = 2018-03-28, также SAS из портала и обозревателя хранилища Azure имеют параметр sr = c.

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Инженеру группы Azure предоставляется рабочий фрагмент кода.Увидеть ниже.

 "variables": {
    "blobContainerName": "[toLower(parameters('blobContainerName'))]",
    "serviceSasProperties": {
        "canonicalizedResource": "[concat('/blob/', parameters('storageAccountName'),'/',parameters('blobContainerName'))]",
        "signedResource": "c",
        "signedPermission": "rwdl",
        "signedstart":"2017-08-20T11:00:00Z",
        "signedExpiry": "2020-08-20T11:00:00Z",
        "signedversion": "2015-04-05"
    }
},

"sasUrl": "[concat('https://',parameters('storageAccountName'),'.blob.core.windows.net/',parameters('blobContainerName'),'?',listServiceSas(parameters('storageAccountName'), '2018-07-01', variables('serviceSasProperties')).serviceSasToken)]",
0 голосов
/ 04 апреля 2019

Кажется, что указанный вами SAS URI неверен, он смешивает параметры учетной записи SAS и службы SAS. Эта часть https://xxxstorage.blob.core.windows.net/httplogs выглядит как URI службы SAS, но имеет параметры ss=bfqt и srt=sco, которые относятся к параметрам для токена SAS учетной записи.

Для получения более подробной информации вы можете обратиться к этим ссылкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...