Поделиться через


Создание политик защиты данных Azure для баз данных Azure PostgreSQL с помощью REST API

Политика резервного копирования управляет хранением резервных копий и расписанием резервного копирования. Резервное копирование баз данных Azure PostgreSQL обеспечивает долгосрочное хранение и поддерживает одну резервную копию в день.

Вы можете повторно использовать существующую политику резервного копирования для настройки резервного копирования баз данных PostgreSQL в хранилище или создать политику резервного копирования для хранилища Служб восстановления Azure с помощью REST API.

Понимание политики резервного копирования PostgreSQL

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

  • Правило политики
    • BackupRule
      • BackupParameter
        • BackupType (тип резервной копии — в этом случае полная резервная копия базы данных)
        • Исходное хранилище данных (где первоначально будут храниться резервные копии)
        • Триггер (активация резервной копии)
          • По расписанию
          • Стандартные условия добавления тегов (тег по умолчанию для всех запланированных операций резервного копирования; этот тег связывает резервные копии с правилом хранения)
    • Правило хранения по умолчанию (правило, которое будет по умолчанию применяться ко всем резервным копиям в начальном хранилище данных)

Таким образом, этот объект определяет, какой тип резервного копирования запускается, как он запускается (по расписанию), какие теги содержат резервные копии, где они находятся (в хранилище данных), а также каков жизненный цикл резервных копий данных в хранилище. По умолчанию объект PowerShell для PostgreSQL запускает полное резервное копирование каждую неделю, и такие копии будут попадать в хранилище, где они хранятся в течение трех месяцев.

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

  • Правило политики
    • BackupRule
      • BackupParameter
        • BackupType (тип резервной копии — в этом случае полная резервная копия базы данных)
        • Исходное хранилище данных (где первоначально будут храниться резервные копии)
        • Триггер (активация резервной копии)
          • Основано на расписании
          • Стандартные условия добавления тегов (тег по умолчанию для всех запланированных операций резервного копирования; этот тег связывает резервные копии с правилом хранения)
          • Новые критерии тегирования для нового правила хранения с тем же именем "X"
    • Правило хранения по умолчанию (правило, которое будет по умолчанию применяться ко всем резервным копиям в начальном хранилище данных)
    • Новое правило хранения под названием "X"
      • Жизненный цикл
        • Исходное хранилище данных
        • Удаление по истечении периода хранения в исходном хранилище данных
        • Копирование в целевое хранилище данных

Чтобы создать политику для резервного копирования баз данных PostgreSQL, выполните следующие действия:

Создание политики

Внимание

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

Для создания политики Azure Backup используйте следующую операцию PUT:

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01

{policyName} и {vaultName} предоставляются в URI. Дополнительные сведения предоставляются в тексте запроса.

Создание текста запроса

Например, чтобы создать политику резервного копирования PostgreSQL, текст запроса должен иметь следующие компоненты:

Имя Обязательно Тип Описание
свойства Истина BaseBackupPolicy:BackupPolicy Свойства BaseBackupPolicyResource

Полный список определений в тексте запроса см. в документе REST API о политике резервного копирования.

Примеры текста запроса

Политика включает:

  • Запланируйте триггер для еженедельного резервного копирования и выберите время начала (Время + P1W).
  • Хранилище данных — это основное хранилище, так как непосредственно в него передаются резервные копии.
  • Резервные копии остаются в хранилище в течение трех месяцев (P3M).
{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/servers/databases"
  ],
  "name": "OssPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Full",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "VaultStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupWeekly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2021-08-15T06:30:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Внимание

Поддерживаемые форматы времени: только дата и время; время по отдельности не поддерживается. Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено.

Обновим приведенный выше файл JSON, внеся два изменения: резервное копирование в разные дни недели и добавление архивного хранилища данных для долгосрочного хранения резервных копий баз данных PostgreSQL.

В следующем примере еженедельное резервное копирование изменяется на резервное копирование каждую неделю в воскресенье, среду и пятницу. В массиве дат расписания указаны даты, и дни недели, соответствующие этим датам, принимаются за дни недели. Кроме того, необходимо указать, что эти расписания должны повторяться каждую неделю. Таким образом, интервал расписания — 1, а тип интервала — Weekly (Еженедельно).

Запланированный триггер:

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2021-08-15T22:00:00+00:00/P1W",
            "R/2021-08-18T22:00:00+00:00/P1W",
            "R/2021-08-20T22:00:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        }

Если вы хотите добавить защиту архива, измените файл JSON политики по образцу ниже.

Приведенный выше файл JSON содержит жизненный цикл для начального хранилища данных в соответствии с правилом хранения по умолчанию. В этом сценарии правило предписывает удалять резервные копии данных через три месяца. Необходимо добавить новое правило хранения, которое определяет, когда данные перемещаются в архивное хранилище данных, то есть резервная копия данных сначала копируется в архивное хранилище, а затем удаляется из основного хранилища данных. Кроме того, правило должно определять длительность хранения данных в архиве*. Назовем это новое правило Monthly (Ежемесячное). Оно определяет, что резервные копии должны храниться в основном хранилище в течение 6 месяцев, а затем копироваться в архивное хранилище данных. Затем удалите данные из основного хранилища, храните их в архивном хранилище в течение 24 месяцев, а затем удалите данные из архивного хранилища.

Жизненный цикл хранения:

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }

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

В этом примере условия тега должны называться Monthly (Ежемесячно).

Условия добавления тегов:

{
  "criteria": [
    {
      "absoluteCriteria": [
        "FirstOfMonth"
      ],
      "objectType": "ScheduleBasedBackupCriteria"
    }
  ],
  "isDefault": false,
  "tagInfo": {
    "tagName": "Monthly"
  },
  "taggingPriority": 15
}

После внесения всех изменений JSON политики будет выглядеть следующим образом:

{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/servers/databases"
  ],
  "name": "OssPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Full",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "VaultStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupWeekly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2021-08-15T22:00:00+00:00/P1W",
            "R/2021-08-18T22:00:00+00:00/P1W",
            "R/2021-08-20T22:00:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          },
          {
            "criteria": [
              {
                "absoluteCriteria": [
                  "FirstOfMonth"
                ],
                "objectType": "ScheduleBasedBackupCriteria"
              }
            ],
            "isDefault": false,
            "tagInfo": {
              "tagName": "Monthly"
            },
            "taggingPriority": 15
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Дополнительные сведения о создании политики см. в документе политики резервного копирования базы данных PostgreSQL .

Отклики

Создание или обновление политики резервного копирования является синхронной операцией, которая возвращает значение ОК после успешного выполнения операции.

Имя Тип Описание
200 OK BaseBackupPolicyResource ОК

Примеры ответов

После завершения операции возвращается код 200 (ОК) с содержимым политики в тексте ответа.

{
    "properties": {
        "policyRules": [
            {
                "backupParameters": {
                    "backupType": "Full",
                    "objectType": "AzureBackupParams"
                },
                "trigger": {
                    "schedule": {
                        "repeatingTimeIntervals": [
                            "R/2021-08-15T22:00:00+00:00/P1W",
                            "R/2021-08-18T22:00:00+00:00/P1W",
                            "R/2021-08-20T22:00:00+00:00/P1W"
                        ],
                        "timeZone": "UTC"
                    },
                    "taggingCriteria": [
                        {
                            "tagInfo": {
                                "tagName": "Monthly",
                                "id": "Monthly_"
                            },
                            "taggingPriority": 15,
                            "isDefault": false,
                            "criteria": [
                                {
                                    "absoluteCriteria": [
                                        "FirstOfMonth"
                                    ],
                                    "objectType": "ScheduleBasedBackupCriteria"
                                }
                            ]
                        },
                        {
                            "tagInfo": {
                                "tagName": "Default",
                                "id": "Default_"
                            },
                            "taggingPriority": 99,
                            "isDefault": true
                        }
                    ],
                    "objectType": "ScheduleBasedTriggerContext"
                },
                "dataStore": {
                    "dataStoreType": "VaultStore",
                    "objectType": "DataStoreInfoBase"
                },
                "name": "BackupWeekly",
                "objectType": "AzureBackupRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P6M"
                        },
                        "targetDataStoreCopySettings": [
                            {
                                "dataStore": {
                                    "dataStoreType": "ArchiveStore",
                                    "objectType": "DataStoreInfoBase"
                                },
                                "copyAfter": {
                                    "objectType": "CopyOnExpiryOption"
                                }
                            }
                        ],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    },
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P24M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "ArchiveStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": false,
                "name": "Monthly",
                "objectType": "AzureRetentionRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P3M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": true,
                "name": "Default",
                "objectType": "AzureRetentionRule"
            }
        ],
        "datasourceTypes": [
            "Microsoft.DBforPostgreSQL/servers/databases"
        ],
        "objectType": "BackupPolicy"
    },
    "id": "/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/DebRG1/providers/Microsoft.DataProtection/backupVaults/DebBackupVault/backupPolicies/OssPolicy1",
    "name": "OssPolicy1",
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

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

Включение защиты дисков Azure

Подробнее о REST API Azure Backup см. в следующих статьях: