Я пытаюсь обновить таблицы Azure Analysys, используя rest api (https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-async-refresh) и питон. Я создал пользователя с ролью администратора сервера и рекламное приложение Azure с ролью владельца, но остальные API-интерфейсы отклоняют токены доступа. Как мне назначить нужные права или что делаю некорректно. Я пытаюсь получить доступ к службам Analysis Services, например, так:
import adal
tenant_id = '...'
authentication_endpoint = f'https://login.windows.net/{tenant_id}'
resource = 'https://westeurope.asazure.windows.net/'
client_id = '...'
client_secret = '...'
# get an Azure access token using the adal library
context = adal.AuthenticationContext(authentication_endpoint)
token_response = context.acquire_token_with_client_credentials(resource, client_id, client_secret)
access_token = token_response.get('accessToken')
print(access_token)
#####################################################
import json
import requests
location = 'westeurope'
server_name = '...'
model = '...'
url = f'https://{location}.asazure.windows.net/servers/{server_name}/models/{model}/refreshes'
table = '...'
objects = [ dict(table=table) ]
data = dict(
type = 'Full',
# CommitMode = 'transactional',
# MaxParallelism = 2,
RetryCount = 2,
Objects = objects,
)
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {access_token}',
}
response = requests.post(url=url, headers=headers, data = json.dumps(data))
print(response.text)
print(response.status_code)
Ответ такой:
{"code":"Unauthorized","subCode":0,"message":"An internal error occurred.","timeStamp":"...","httpStatusCode":400,"details":[{"code":"RootActivityId","message":"..."},{"code":"Param1","message":"asazure://asazureweu3-westeurope.asazure.windows.net/..."}]}
400
Чтобы позвонить refreshes
API субъект-служба должен иметь разрешения администратора в SSAS. Это достигается не через портал Azure, а через SQL Server Management Studio, как описано. Вот.
После создания субъекта-службы его идентификатору приложения можно назначить разрешения на сервере служб Azure Analysis Services или в ролях модели, используя следующий синтаксис. В приведенном ниже примере субъект-служба добавляется в группу администраторов сервера в SSMS.
app:<app guid>@<tenant guid>