Инвентаризация BLOB-объектов службы хранилища Azure

служба хранилища Azure инвентаризация BLOB-объектов предоставляет список контейнеров, больших двоичных объектов, версий BLOB-объектов и моментальных снимков в учетной записи хранения, а также их связанных свойств. Он создает выходной отчет в значениях, разделенных запятыми (CSV) или в формате Apache Parquet на ежедневной или еженедельной основе. Отчет можно использовать для аудита хранения, юридического хранения или шифрования содержимого учетной записи хранения или его использования, чтобы понять общий размер данных, возраст, распределение по уровням или другие атрибуты данных. Вы также можете использовать инвентаризацию BLOB-объектов для упрощения рабочих процессов бизнес-процессов или ускорения выполнения заданий обработки данных с помощью инвентаризации BLOB-объектов в качестве запланированной автоматизации API-интерфейсов контейнеров списка и больших двоичных объектов. Правила инвентаризации BLOB-объектов позволяют фильтровать содержимое отчета по типу, префиксу или выбору свойств BLOB-объектов для включения в отчет.

служба хранилища Azure инвентаризация BLOB-объектов доступна для следующих типов учетных записей хранения:

  • Стандартная общего назначения версии 2
  • Хранилище BLOB-объектов класса Premium
  • Хранилище BLOB-объектов

Функции инвентаризации

В списке ниже перечислены функции и возможности, доступные в текущем выпуске службы инвентаризации хранилища BLOB-объектов Azure.

  • Отчеты об инвентаризации для BLOB-объектов и контейнеров

    Для BLOB-объектов и контейнеров можно создавать отчеты об инвентаризации. Отчет для больших двоичных объектов может содержать базовые BLOB-объекты, моментальные снимки, длину содержимого, версии BLOB-объектов и связанные с ними свойства, такие как время создания, время последнего изменения. Пустые контейнеры не перечислены в отчете инвентаризации BLOB-объектов. Отчет по контейнерам описывает контейнеры и связанные с ними свойства, такие как состояние политики неизменности или состояние удержания по юридическим причинам.

  • Настраиваемая схема

    Вы можете выбрать поля, которые будут отображаться в отчетах. Они выбираются из списка поддерживаемых полей. Этот список будет описан далее в этой статье.

  • Формат выходных данных CSV и Apache Parquet

    Вы можете создать отчет об инвентаризации в выходном формате CSV или Apache Parquet.

  • Файл манифеста и событие службы "Сетка событий Azure" на отчет об инвентаризации

    Для каждого отчета инвентаризации создаются файл манифеста и событие службы "Сетка событий Azure". Они описаны далее в этой статье.

Включение отчетов об инвентаризации

Чтобы включить отчеты об инвентаризации BLOB-объектов, добавьте одно или несколько правил в свою учетную запись хранения. Соответствующие инструкции см. в статье о включении отчетов по инвентаризации BLOB-объектов службы хранилища Azure.

Обновление политики инвентаризации

Если вы являетесь существующим пользователем инвентаризации BLOB-объектов служба хранилища Azure, который настроил инвентаризацию до июня 2021 года, вы можете начать использовать новые функции, загрузив политику, а затем сохраните политику обратно после внесения изменений. При повторной загрузке политики новые поля в политике будут заполнены значениями по умолчанию. Эти значения можно изменить. Кроме того, будут доступны две указанные ниже функции.

  • Контейнер назначения теперь поддерживается для каждого отдельного правила, а не только для политики в целом.

  • Файл манифеста и событие службы "Сетка событий Azure" теперь формируются для каждого отдельного правила, а не для политики в целом.

Политика инвентаризации

Отчет об инвентаризации настраивается путем добавления политики инвентаризации с одним или несколькими правилами. Политика инвентаризации — это коллекция правил в документе JSON.

{
  "enabled": true,
  "rules": [
  {
    "enabled": true,
    "name": "inventoryrule1",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  },
  {
    "enabled": true,
    "name": "inventoryrule2",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  }]
}

Просмотрите JSON для политики инвентаризации, выбрав вкладку Представление кода в разделе Инвентаризация BLOB-объектов на портале Azure.

Наименование параметра Тип параметра Примечания. Обязательное?
включена boolean Используется для отключения всей политики. Если задано значение true, то поле с включенным уровнем правила переопределяет этот параметр. Если этот параметр отключен, инвентаризация для всех правил будет отключена. Да
rules Массив объектов правил Для каждой политики должно существовать хотя бы одно правило. Поддерживается до 100 правил на политику. Да

Правила инвентаризации

Правило покрывает условия фильтрации и выходные параметры для создания отчета об инвентаризации. Каждое правило создает отчет об инвентаризации. Правила могут иметь перекрывающиеся префиксы. BLOB-объект может отображаться в нескольких отчетах в зависимости от определений правил.

Каждое правило в политике имеет несколько параметров.

Наименование параметра Тип параметра Примечания. Обязательное?
name строка Имя правила может содержать до 256 буквенно-цифровых символов с учетом регистра. Имя должно быть уникальным в пределах проекта. Да
включена boolean Флаг включения или отключения правила. Значение по умолчанию — true Да
Определение Определение правила инвентаризации JSON Каждое определение состоит из набора фильтров для правила. Да
destination строка Целевой контейнер, в котором создаются все файлы инвентаризации. К этому моменту целевой контейнер уже должен существовать.

Флаг глобального хранилища BLOB-объектов имеет приоритет над параметром, включенным в правиле.

Определение правила

Наименование параметра Тип параметра Примечания. Обязательное поле
фильтры json Фильтры определяют, участвуют ли BLOB-объект или контейнер в инвентаризации. Да
format строка Определяет выходные данные файла инвентаризации. Допустимые значения: csv (для формата CSV) и parquet (для формата Apache Parquet). Да
objectType строка Указывает, является ли это данное правило правилом инвентаризации для BLOB-объектов или контейнеров. Допустимые значения — blob и container. Да
планирование строка Расписание выполнения этого правила. Допустимые значения — daily и weekly. Да
schemaFields Массив JSON Список полей схемы, которые участвуют в инвентаризации. Да

Фильтры правила

Для настройки отчета по инвентаризации BLOB-объектов можно использовать несколько фильтров.

Имя фильтра Тип фильтра Примечания. Обязательное?
blobTypes Массив предустановленных значений перечисления. Допустимые значения: blockBlob и appendBlob для иерархических учетных записей с включенным пространством имен, blockBlob, appendBlob и pageBlob для других учетных записей. Это поле не применимо для инвентаризации в контейнере (objectType: container). Да
creationTime Число Указывает количество дней назад, в течение которого должен быть создан большой двоичный объект. Например, значение 3 включает в отчет только те большие двоичные объекты, которые были созданы за последние три дня. No
prefixMatch Массив из 10 строк для сопоставления префиксов. Если не определить параметр prefixMatch или указать пустой префикс, правило применяется ко всем BLOB-объектам в учетной записи хранения. Префикс должен быть префиксом имени контейнера или его именем. Например, container, container1/foo. No
excludePrefix Массив из 10 строк для исключения префиксов. Указывает пути больших двоичных объектов, которые следует исключить из отчета инвентаризации.

Префикс excludePrefix должен быть префиксом имени контейнера или его именем. Пустой префикс исключениеPrefix означает, что все большие двоичные объекты с именами, соответствующими любой строке prefixMatch, будут перечислены.

Если вы хотите включить определенный префикс, но исключить из него определенное подмножество, вы можете использовать фильтр excludePrefix. Например, если вы хотите включить все большие двоичные объекты в container-a, кроме тех, которые входят в папку container-a/folder, для prefixMatch необходимо задать значение container-a, а для excludePrefix — значение container-a/folder.
No
includeSnapshots boolean Указывает, должна ли инвентаризация включать моментальные снимки. По умолчанию — false. Это поле не применимо для инвентаризации в контейнере (objectType: container). No
includeBlobVersions boolean Указывает, должна ли инвентаризация включать версии BLOB-объектов. По умолчанию — false. Это поле не применимо для инвентаризации в контейнере (objectType: container). No
includeDeleted boolean Указывает, должна ли инвентаризация включать удаленные BLOB-объекты. По умолчанию — false. В учетных записях с иерархическим пространством имен этот фильтр включает папки, а также большие двоичные объекты, которые находятся в обратимом состоянии.

В отчетах отображаются только папки и файлы (большие двоичные объекты), которые явно удаляются. Дочерние папки и файлы, удаленные в результате удаления родительской папки, не включаются в отчет.
No

Просмотрите JSON для правил инвентаризации, выбрав вкладку Представление кода в разделе Инвентаризация Blob-объектов на портале Azure. Фильтры указываются в определении правила.

{
  "destination": "inventory-destination-container",
  "enabled": true,
  "rules": [
  {
    "definition": {
      "filters": {
        "blobTypes": ["blockBlob", "appendBlob", "pageBlob"],
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"],
        "excludePrefix": ["inventorytestcontainer10", "etc/logs"],
        "includeSnapshots": false,
        "includeBlobVersions": true,
      },
      "format": "csv",
      "objectType": "blob",
      "schedule": "daily",
      "schemaFields": ["Name", "Creation-Time"]
    },
    "enabled": true,
    "name": "blobinventorytest",
    "destination": "inventorydestinationContainer"
  },
  {
    "definition": {
      "filters": {
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"]
      },
      "format": "csv",
      "objectType": "container",
      "schedule": "weekly",
      "schemaFields": ["Name", "HasImmutabilityPolicy", "HasLegalHold"]
    },
    "enabled": true,
    "name": "containerinventorytest",
    "destination": "inventorydestinationContainer"
    }
  ]
}

Настраиваемые поля схемы, поддерживаемые для инвентаризации BLOB-объектов

Примечание.

Столбец Data Lake Storage отображает поддержку в учетных записях с включенным функцией иерархического пространства имен.

Поле Служба хранилища BLOB-объектов (поддержка по умолчанию) Data Lake Storage
Name (обязательное) Да Да
Creation-Time Да Да
Last-Modified Да Да
LastAccessTime1 Да Да
ETag Да Да
content-length: 0 Да Да
Тип контента Да Да
Content-Encoding Да Да
Content-Language; Да Да
Content-CRC64 Да Да
Content-MD5; Да Да
Cache-Control Да Да
Cache-Disposition Да Да
BlobType Да Да
AccessTier Да Да
AccessTierChangeTime Да Да
LeaseStatus Да Да
LeaseState Да Да
ServerEncrypted Да Да
CustomerProvidedKeySHA256 Да Да
Метаданные Да Да
Expiry-Time No Да
hdi_isfolder No Да
Ответственный No Да
Групповой No Да
Разрешения No Да
Acl No Да
Моментальный снимок (доступно и требуется, если вы включаете в отчет моментальные снимки) Да Да
Deleted Да Да
DeletedId No Да
DeletedTime No Да
RemainingRetentionDays Да Да
VersionId (доступно и требуется, если вы включаете в отчет версии BLOB-объектов) Да Нет
IsCurrentVersion (доступно и требуется, если вы включаете в отчет версии BLOB-объектов) Да Нет
TagCount Да Нет
Теги Да Нет
CopyId Да Да
CopySource Да Да
CopyStatus Да Да
CopyProgress Да Да
CopyCompletionTime Да Да
CopyStatusDescription Да Да
ImmutabilityPolicyUntilDate Да Да
ImmutabilityPolicyMode Да Да
LegalHold Да Да
RehydratePriority Да Да
ArchiveStatus Да Да
EncryptionScope Да Да
IncrementalCopy Да Да
x-ms-blob-sequence-number Да Нет

1 Отключено по умолчанию. При необходимости включите отслеживание времени доступа.

Настраиваемые поля схемы, поддерживаемые для инвентаризации контейнеров

Примечание.

Столбец Data Lake Storage отображает поддержку в учетных записях с включенным функцией иерархического пространства имен.

Поле Служба хранилища BLOB-объектов (поддержка по умолчанию) Data Lake Storage
Name (обязательное) Да Да
Last-Modified Да Да
ETag Да Да
LeaseStatus Да Да
LeaseState Да Да
LeaseDuration Да Да
Метаданные Да Да
PublicAccess Да Да
DefaultEncryptionScope Да Да
DenyEncryptionScopeOverride Да Да
HasImmutabilityPolicy Да Да
HasLegalHold Да Да
ImmutableStorageWithVersioningEnabled Да Да
Удален (отображается только в том случае, если выбраны удаленные контейнеры) Да Да
Версия (отображается только в том случае, если выбраны удаленные контейнеры) Да Да
DeletedTime (будет отображаться, только если выбраны удаленные контейнеры) Да Да
RemainingRetentionDays (будет отображаться, только если выбраны удаленные контейнеры) Да Да

Inventory run

Если вы настраиваете правило для ежедневного выполнения, оно будет выполняться каждый день. Если вы настраиваете правило для еженедельного запуска, оно будет запланировано на каждую неделю в воскресенье в формате UTC.

Большинство инвентаризаций выполняется в течение 24 часов. Для учетных записей с включенными иерархическими пространствами имен выполнение может занять до двух дней, а в зависимости от количества обрабатываемых файлов оно может продлиться дольше. Максимальное время выполнения, которое может завершиться до сбоя, составляет шесть дней.

Выполнение не перекрывается, поэтому выполнение должно завершиться до начала другого запуска того же правила. Например, если правило планируется выполнять ежедневно, но выполнение предыдущего дня этого же правила по-прежнему выполняется, новое выполнение не будет инициировано в тот день. Правила, запланированные для еженедельного запуска, будут выполняться каждую воскресенье независимо от того, успешно ли выполнен предыдущий запуск или завершится сбоем. Если выполнение не завершено успешно, проверьте последующие запуски, чтобы узнать, завершены ли они перед обращением в службу поддержки. Производительность выполнения может быть разной, поэтому если оно завершилось ошибкой, возможно, последующие выполнения завершатся корректно.

Политики инвентаризации считываются или записываются полностью. Частичное обновление не поддерживается. Правила инвентаризации оцениваются ежедневно. Таким образом, если вы измените определение правила, но правила политики уже были оценены в течение этого дня, обновления не будут оцениваться до следующего дня.

Событие завершения инвентаризации

BlobInventoryPolicyCompletedСобытие создается при завершении инвентаризации для правила. Это событие также возникает, если в ходе инвентаризации возникла ошибка пользователя. Например, недопустимая политика или ошибка, возникающая, когда целевой контейнер не присутствует, активирует событие. Ниже приведен фрагмент JSON с примером события BlobInventoryPolicyCompleted.

{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/BlobInventory/providers/Microsoft.EventGrid/topics/BlobInventoryTopic",
  "subject": "BlobDataManagement/BlobInventory",
  "eventType": "Microsoft.Storage.BlobInventoryPolicyCompleted",
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "data": {
    "scheduleDateTime": "2021-05-28T03:50:27Z",
    "accountName": "testaccount",
    "ruleName": "Rule_1",
    "policyRunStatus": "Succeeded",
    "policyRunStatusMessage": "Inventory run succeeded, refer manifest file for inventory details.",
    "policyRunId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "manifestBlobUrl": "https://testaccount.blob.core.windows.net/inventory-destination-container/2021/05/26/13-25-36/Rule_1/Rule_1-manifest.json"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2021-05-28T15:03:18Z"
}

Схема события BlobInventoryPolicyCompleted описана в таблице ниже.

Поле Тип Описание
scheduleDateTime строка Время запланированного правила инвентаризации.
accountName строка имя учетной записи хранения.
ruleName строка Имя правила.
policyRunStatus строка Состояние выполнения инвентаризации. Возможные значения: Succeeded, PartiallySucceededи Failed.
policyRunStatusMessage строка Сообщение о состоянии выполнения инвентаризации.
policyRunId строка Идентификатор запуска политики для выполнения инвентаризации.
manifestBlobUrl строка URL-адрес BLOB-объекта для файла манифеста при выполнении инвентаризации.

Выходные данные инвентаризации

При каждом запуске инвентаризации для правила создается набор файлов в указанном контейнере назначения инвентаризации. Выходные данные инвентаризации формируются по следующему пути https://<accountName>.blob.core.windows.net/<inventory-destination-container>/YYYY/MM/DD/HH-MM-SS/<ruleName, где:

  • accountName — имя учетной записи хранилища BLOB-объектов Azure;
  • inventory-destination-container — целевой контейнер, указанный в правиле инвентаризации;
  • YYYY/MM/DD/HH-MM-SS — время начала инвентаризации;
  • ruleName — имя правила инвентаризации.

Файлы инвентаризации

При каждом запуске инвентаризации для правила создаются указанные ниже файлы.

  • Файл инвентаризации: запуск инвентаризации для правила создает csv-файл или файл в формате Apache Parquet. Каждый из них содержит совпадающие объекты и их метаданные.

    Внимание

    Начиная с октября 2023 года инвентаризация будет производить несколько файлов, если количество объектов большое. Дополнительные сведения см. в разделе "Вопросы и ответы о нескольких выходных данных файла инвентаризации".

    Отчеты в формате Apache Parquet содержат даты в следующем формате: timestamp_millis [number of milliseconds since 1970-01-01 00:00:00 UTC]. В CSV-файле первая строка всегда является строкой схемы. На следующем рисунке показан CSV-файл инвентаризации, открытый в Microsoft Excel.

    Снимок экран: CSV-файл инвентаризации, открытый в Microsoft Excel

    Внимание

    Пути к файлам BLOB-объектов, которые отображаются в файле запасов, могут быть указаны в произвольном порядке.

  • Файл контрольной суммы. Файл, содержащий контрольную сумму MD5 содержимого файла manifest.json. Имя файла контрольной суммы — <ruleName>-manifest.checksum. Создание файла контрольной суммы указывает, что выполнение правила инвентаризации завершено.

  • Файл манифеста. Файл manifest.json, содержащий сведения о файлах инвентаризации, которые созданы для данного правила. Имя этого файла — <ruleName>-manifest.json. Файл манифеста также содержит пользовательское определение правила и путь инвентаризации для него. В JSON-файле ниже показан пример содержимого manifest.json.

    {
    "destinationContainer" : "inventory-destination-container",
    "endpoint" : "https://testaccount.blob.core.windows.net",
    "files" : [
      {
        "blob" : "2021/05/26/13-25-36/Rule_1/Rule_1.csv",
        "size" : 12710092
      }
    ],
    "inventoryCompletionTime" : "2021-05-26T13:35:56Z",
    "inventoryStartTime" : "2021-05-26T13:25:36Z",
    "ruleDefinition" : {
      "filters" : {
        "blobTypes" : [ "blockBlob" ],
        "includeBlobVersions" : false,
        "includeSnapshots" : false,
        "prefixMatch" : [ "penner-test-container-100003" ]
      },
      "format" : "csv",
      "objectType" : "blob",
      "schedule" : "daily",
      "schemaFields" : [
        "Name",
        "Creation-Time",
        "BlobType",
        "Content-Length",
        "LastAccessTime",
        "Last-Modified",
        "Metadata",
        "AccessTier"
      ]
    },
    "ruleName" : "Rule_1",
    "status" : "Succeeded",
    "summary" : {
      "objectCount" : 110000,
      "totalObjectSize" : 23789775
    },
    "version" : "1.0"
    }
    

    Этот файл создается при запуске. Поле status этого файла установлено до Pending завершения выполнения. После завершения выполнения это поле имеет состояние завершения (например, Succeeded или Failed).

Цены и выставление счетов

Цены на инвентаризацию зависят от количества BLOB-объектов и контейнеров, которые сканируются в течение расчетного периода. На странице цен на Хранилище BLOB-объектов Azure отображается цена за один миллион отсканированных объектов. Например, если цена на сканирование одного миллиона объектов , $0.003ваша учетная запись содержит три миллиона объектов, и вы создаете четыре отчета в месяц, то ваш счет будет.4 * 3 * $0.003 = $0.036

После создания файлов инвентаризации будет взиматься дополнительная стандартная плата за хранение и обработку данных, т. е. хранение, чтение и запись файлов, созданных для инвентаризации в учетной записи.

Если правило содержит префикс, который пересекается с префиксом любого другого правила, то один BLOB-объект может отобразиться в нескольких отчетах инвентаризации. В этом случае счета выставляются для обоих экземпляров. Например, предположим, что элемент prefixMatch одного правила имеет значение ["inventory-blob-1", "inventory-blob-2"], а элемент другого правила prefixMatch — значение ["inventory-blob-10", "inventory-blob-20"]. Объект с именем inventory-blob-200 отображается в обоих отчетах инвентаризации.

Моментальные снимки и версии BLOB-объекта также учитываются при начислении платы, даже если для фильтров includeSnapshots и includeVersions задано значение false. Эти значения фильтров не влияют на начисление платы. Их можно использовать только для фильтрации отображаемых в отчете данных.

Дополнительные сведения о ценах на учетные записи хранилища BLOB-объектов Azure см. на этой странице.

Поддерживаемые компоненты

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Сведения о поддержке функций хранилища BLOB-объектов в учетных записях хранения Azure, чтобы оценить поддержку данной функции.

Известные проблемы и ограничения

В этом разделе описаны ограничения и известные проблемы, связанные с инвентаризацией BLOB-объектов службы хранилища Azure.

Выполнение заданий инвентаризации занимает больше времени для выполнения в определенных случаях

Задание инвентаризации может занять больше времени в следующих случаях:

  • Добавляется большой объем новых данных

  • Правило или набор правил выполняется в первый раз

    Выполнение инвентаризации может занять больше времени, чем последующие запуски инвентаризации.

  • Запуск инвентаризации обрабатывает большой объем данных в учетных записях с поддержкой иерархического пространства имен.

    Задание инвентаризации может занять несколько дней для учетных записей с включенным иерархическим пространством имен, которые имеют сотни миллионов больших двоичных объектов. Иногда задание инвентаризации завершается сбоем и не создает файл инвентаризации. Если задание не завершено успешно, проверьте последующие задания, чтобы узнать, завершены ли они перед обращением в службу поддержки.

  • Нет возможности создать отчет ретроспективно для определенной даты.

Задания инвентаризации не могут записывать отчеты в контейнеры с политикой репликации объектов

Политика репликации объектов может препятствовать созданию отчетов инвентаризации в целевом контейнере для задания инвентаризации. Некоторые другие сценарии могут архивировать отчеты или сделать отчеты неизменяемыми при частичном завершении, что может привести к сбою заданий инвентаризации.

Инвентаризация и неизменяемое хранилище

Политику инвентаризации нельзя настроить в учетной записи, если в этой учетной записи включена поддержка неизменяемости на уровне версии или включена поддержка неизменяемости на уровне версии в целевом контейнере, определенном в политике инвентаризации.

Отчеты могут исключить обратимо удаленные большие двоичные объекты в учетных записях с иерархическим пространством имен.

Если контейнер или каталог удаляется с поддержкой обратимого удаления, контейнер или каталог и все его содержимое помечаются как обратимое удаление. Однако в отчете инвентаризации отображаются только контейнер или каталог (как большой двоичный объект нулевой длины), а не обратимо удаленные большие двоичные объекты в этом контейнере или каталоге, даже если includeDeleted для поля политики задано значение true. Это может привести к разнице между метриками емкости, получаемыми в портал Azure, и тем, что сообщается отчетом инвентаризации.

В отчетах отображаются только большие двоичные объекты, которые явно удалены. Таким образом, чтобы получить полный список всех обратимо удаленных BLOB-объектов (каталогов и всех дочерних BLOB-объектов), рабочие нагрузки должны удалить каждый большой двоичный объект в каталоге перед удалением самого каталога.

Следующие шаги