Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Токен операций DR

Чтобы повысить роль вторичного кластера Disaster Recovery (DR), нужен токен операций DR. Тот же токен нужен, чтобы сменить назначенный основной кластер.

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

Если пакетный токен не подготовлен, в момент переключения токен выпускают на вторичном кластере по частям ключа распечатывания. Этот порядок приведен в статье Генерация токена операций DR.

Процедура повышения роли приведена в статье Повышение роли вторичного кластера DR до первичного.

У токена операций DR нет TTL. Удалите токен после завершения операции. Вы можете сделать это с помощью конечной точки Удаление токена операций DR.

1. Генерация токена операций DR

С помощью веб-интерфейса
  1. Откройте окно браузера и запустите пользовательский интерфейс кластера A (основного кластера).

  2. Перейдите на вкладку Политики и нажмите Создать политику ACL.

    operation token 1
  3. Введите имя политики ACL dr-secondary-promotion в поле Название. В основное поле добавьте следующие разрешения:

    path "sys/replication/dr/secondary/promote" {
      capabilities = [ "update" ]
    }
    
    path "sys/replication/dr/secondary/update-primary" {
        capabilities = [ "update" ]
    }
    
    path "sys/storage/raft/autopilot/state" {
        capabilities = [ "update" , "read" ]
    }

    Необходимо добавить политику, разрешающую доступ к пути sys/replication/dr/secondary/update-primary, в случае, когда в качестве постоянного хранилища для кластера StarVault используется встроенное хранилище. Подробнее об Автопилоте читайте в статье Автопилоты.

    Нажмите Создать.

  4. Откройте командную строку. Для этого нажмите на значок command в правом верхнем углу интерфейса.

  5. Выполните следующую команду, чтобы создать роль токена с именем failover-handler и прикрепленной политикой dr-secondary-promotio.

    starvault write auth/token/roles/failover-handler \
        allowed_policies=dr-secondary-promotion \
        orphan=true \
        renewable=false \
        token_type=batch
    Пример вывода
    Success! Data written to: auth/token/roles/failover-handler
  6. Создайте токен для роли failover-handler, выполнив следующую команду.

    starvault write -force auth/token/create/failover-handler
    Пример вывода
    Key                 Value
    client_token        b.AAAAAQLrXdVKfEpJdCxviVNYHOhk3J3X9g4fM3VB1M6v7rfkIL-f1NY1-p1D0OKxEuNpU31Q-BcwFzEq_6ze9hqtZItUTBV1UV9WZsJyrIYicCxdxUtGa4se0Y97D5dQ17Rnh
    accessor
    policies            ["default", "dr-secondary-promotion"]
    token_policies      ["default", "dr-secondary-promotion"]
    metadata            null
    lease_duration      2764800
    renewable           false
    entity_id
    token_type          batch
    orphan              true
    mfa_requirement     null
    num_uses            0

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

С помощью CLI
  1. На кластере A (основном кластере) создайте политику с именем dr-secondary-promotion и добавьте в нее следующие разрешения:

    starvault policy write dr-secondary-promotion - <<EOF
    path "sys/replication/dr/secondary/promote" {
    capabilities = [ "update" ]
    }
    
    path "sys/replication/dr/secondary/update-primary" {
       capabilities = [ "update" ]
    }
    
    
    path "sys/replication/dr/secondary/generate-operation-token/attempt" {
      capabilities = ["create", "update", "delete"]
    }
    
    path "sys/storage/raft/autopilot/state" {
       capabilities = [ "update" , "read"]
    }
    EOF

    Кроме того, можно добавить политику для пути sys/replication/dr/secondary/update-primary, чтобы можно было использовать один и тот же токен операции DR для обновления первичного кластера, на который указывает вторичный кластер.

    Необходимо добавить политику, разрешающую доступ к пути sys/replication/dr/secondary/update-primary, в случае, когда в качестве постоянного хранилища для кластера StarVault используется встроенное хранилище. Подробнее об Автопилоте читайте в статье Автопилоты.

  2. Убедитесь, что политика создана, выполнив команду:

    starvault policy list
    Пример вывода
    default
    dr-secondary-promotion
    root
  3. Создайте роль токена с именем failover-handler.

    $ starvault write auth/token/roles/failover-handler \
       allowed_policies=dr-secondary-promotion \
       orphan=true \
       renewable=false \
       token_type=batch
  4. Создайте токен для роли failover-handler.

    $ starvault token create -role=failover-handler
    Пример вывода
    Key                  Value
    ---                  -----
    token                hvb.AAAAAQIL13E0DXo9sq-1vaLJD1_69nfgb-qojEets9EkDTvWs_L_lXVFplXpIpXivr1qlrppxA0tqM4ckYG4dzISLMWqwpqLSQBgfllkd7N-xzsS0Bg7lVO7sb7B2FcWogM64SJshk9VDQajRskb3jZutWW_FLrUhWl5lKfL3j9CxIe5I73NRoYLbtLDEVsGOwQIYgTdNg
    token_accessor       n/a
    token_duration       8h
    token_renewable      false
    token_policies       ["default" "dr-secondary-promotion"]
    identity_policies    []
    policies             ["default" "dr-secondary-promotion"]

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

С помощью API
  1. На кластере A (основном кластере) создайте политику с именем dr-secondary-promotion, разрешающую выполнение update операции.

    Сначала создайте полезную нагрузку JSON API, указав путь и возможности:

    tee policy-payload.json <<'EOF'
    {
      "policy": "path \"sys/replication/dr/secondary/promote\" {\n  capabilities = [ \"update\" ]\n}\n\npath \"sys/replication/dr/secondary/update-primary\" {\n  capabilities = [ \"update\" ]\n}\n\npath \"sys/storage/raft/autopilot/state\" {\n  capabilities = [ \"update\", \"read\" ]\n}\n"
    }
    EOF

    Необходимо добавить политику, разрешающую доступ к пути sys/replication/dr/secondary/update-primary, в случае, когда в качестве постоянного хранилища для кластера StarVault используется встроенное хранилище. Подробнее об Автопилоте читайте в статье Автопилоты.

  2. Создайте новую политику с именем dr-secondary-promotion.

    curl --request PUT \
         --header "X-Vault-Token: $VAULT_TOKEN" \
         --data @policy-payload.json \
         http://127.0.0.1:8200/v1/sys/policies/acl/dr-secondary-promotion
  3. Создайте роль токена с именем failover-handler. Сначала создайте полезную нагрузку JSON API для dr-secondary-promotion политики разрешений.

    $ tee role-payload.json <<EOF
    {
     "allowed_policies": [ "dr-secondary-promotion" ],
     "orphan": true,
     "renewable": false,
     "token_type": "batch"
    }
    EOF
  4. Выполните API-запрос, используя role-payload.json, созданный на предыдущем шаге.

    curl --request PUT \
      --header "X-Vault-Token: $VAULT_TOKEN" \
      -d @role-payload.json \
      http://127.0.0.1:8200/v1/auth/token/roles/failover-handler
  5. Создайте токен для роли failover-handler.

    curl --request POST \
      --header "X-Vault-Token: $VAULT_TOKEN" \
      http://127.0.0.1:8200/v1/auth/token/create/failover-handler | jq ".auth"
    Пример ответа:
    {
      "client_token": "hvs.CAES...",
      "accessor": "AbCdEf...",
      "policies": ["default", "failover-handler"],
      "token_policies": ["default", "failover-handler"],
      "metadata": null,
      "lease_duration": 2764800,
      "renewable": true,
      "entity_id": "...",
      "token_type": "service",
      "orphan": false
    }