Извлечение журналов аудита из хранилища озера данных Azure (Gen 2) - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь получить журналы аудита из хранилища озера данных Azure (Gen 2) ..

До сих пор я пытался использовать AZCOPY, REST API (пока не поддерживается) в Gen 2 для извлечения (подключения) журналов аудита и поиска альтернативного решения для извлечения журналов

При подключении с использованием AZCOPY он использует только вызовы на основе API и когдаЯ попытался получить журнал, я получил ошибку, что вызовы API не поддерживаются для иерархических учетных записей пространства имен.Изображение добавлено для справки. Снимок ошибки AZCOPY

Есть ли обходной путь для этого варианта использования или любого другого подхода, который я могу попытаться получить из журналов?

1 Ответ

0 голосов
/ 12 июня 2019

Обновление:

Я могу получить содержимое файла из ADLS GEN2 с помощью read api.Я могу предоставить вам пример, написанный с помощью кода Python (вы можете перейти на любой другой язык в соответствии с моим кодом).Из приведенного ниже кода вы можете напрямую получить содержимое файла или получить Authorization, который можно использовать в почтальоне.

Код Python 3.7, как показано ниже:

import requests
import datetime
import hmac
import hashlib
import base64

storage_account_name = 'xxx'
storage_account_key = 'xxx'
api_version = '2018-11-09'
request_time = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
#the file path on adls gen2
FILE_SYSTEM_NAME='dd1/myfile.txt'

string_params = {
    'verb': 'GET',
    'Content-Encoding': '',
    'Content-Language': '',
    'Content-Length': '',
    'Content-MD5': '',
    'Content-Type': '',
    'Date': '',
    'If-Modified-Since': '',
    'If-Match': '',
    'If-None-Match': '',
    'If-Unmodified-Since': '',
    'Range': '',
    'CanonicalizedHeaders': 'x-ms-date:' + request_time + '\nx-ms-version:' + api_version,
    'CanonicalizedResource': '/' + storage_account_name+'/'+FILE_SYSTEM_NAME
    }

string_to_sign = (string_params['verb'] + '\n' 
                  + string_params['Content-Encoding'] + '\n'
                  + string_params['Content-Language'] + '\n'
                  + string_params['Content-Length'] + '\n'
                  + string_params['Content-MD5'] + '\n' 
                  + string_params['Content-Type'] + '\n' 
                  + string_params['Date'] + '\n' 
                  + string_params['If-Modified-Since'] + '\n'
                  + string_params['If-Match'] + '\n'
                  + string_params['If-None-Match'] + '\n'
                  + string_params['If-Unmodified-Since'] + '\n'
                  + string_params['Range'] + '\n'
                  + string_params['CanonicalizedHeaders']+'\n'
                  + string_params['CanonicalizedResource'])

signed_string = base64.b64encode(hmac.new(base64.b64decode(storage_account_key), msg=string_to_sign.encode('utf-8'), digestmod=hashlib.sha256).digest()).decode()

#print out the datetime
print(request_time)
#print out the Authorization
print('SharedKey ' + storage_account_name + ':' + signed_string)

headers = {
    'x-ms-date' : request_time,
    'x-ms-version' : api_version,
    'Authorization' : ('SharedKey ' + storage_account_name + ':' + signed_string)
}
url = ('https://' + storage_account_name + '.dfs.core.windows.net/'+FILE_SYSTEM_NAME)
#print out the url
print(url)
r = requests.get(url, headers = headers)

#print out the file content
print(r.text)

После запускакод, содержимое файла извлекается:

enter image description here

И вы также можете использовать сгенерированные значения, такие как авторизация / дата в приведенном выше коде, в почтальоне:

enter image description here


Как вы, возможно, знаете, SDK не готов для лазурных данных озера 2-го поколения, поэтому на данный момент решение использует ADLS Gen2 Read api .

После извлечения содержимого файла вы можете сохранить его.

И вы можете выполнить свою работу для аутентификации.Если у вас есть какие-либо вопросы о том, как читать с использованием API ADLS Gen 2, пожалуйста, дайте мне знать.

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