Спецификация службы регистрации

Служба регистриции сайтов

Автор:Крюков А.П.
Версия:0.1

Введение

В настоящем документе описывается спецификация на API Службы регистриции сайтов ГридННС - "RegServ". Основное назначение системы |---| регистрация сайтов ГридННС, их сервисов и администраторов сайтов и сервисов.,

Общие положения

Сайт

Сайт |---| это административный домен, в рамках которого управляются зарегистрированные службы и сервисы.

Службы и сервисы

Набор Веб-сервисов, которые предоставляются данным сайтом и управляются персоналом сайта.

Персонал сайта

Персонал сайта, зарегистрированные в Службе регистрации (далее СРРГ), который обеспечивает работ сайта и его сервисов. В чило персонала сайта, который должен быть зарегистрирован в СРРГ входят:

  • менеджер сайта
  • ответственный за безопасность сайта
  • системый администратор службы/сервиса.

Допускается совмещение ряда ролей. Например системный администратор может обслуживать несколько служб и сервисов одноваременно. Таким образом минимальное количество персонала является три человека.

Менеджер сайта

Менеджер сайта отвечает за функционирование сайта в целом и является представителем собственика ресурсов, на которых развернуты службы и сервисы ГридННС, в вышестоящих органах ГридННС.

Ответственный за безопасность сайта

Ответственный за безопасность отвечает за безопасность сайта, сооветствие его эксплуатации регламентам ГридННС, а так же участвует в разборах инцендентов, связанных с безопасностью инфраструктуры ГридННС, в том числе предоставлении файлов-протоколов в случае их необходимости.

Системый администратор службы/сервиса

Системный администратор отвечает за устанвку, настройку и эксплуатацию сервиса на сайте в соответствии с регламентирующей локументацией.

API

Служьа СРРГ реализована как веб-сервис, следующий концепции REST, с представлением документов в виде JSON-документов.

Описание протокола

Используемые URI

Далее будем считать, что элементу |base| соответствует корневой URI всех сервисов, например, https://regserv.ngrid.ru/.

Ресурсы сервиса:

  • <base>/sites/ |---| все сайты, зарегистрированные службой;
  • <base>/sites/<site_name>/ |---| описание сайта;
  • <base>/sites/<site_name>/management/ |---| список должностей персонала сайта;
  • <base>/sites/<site_name>/management/manager/< |---| менеджер сайта;
  • <base>/sites/<site_name>/management/manager_alt/< |---| заместитель менеджера сайта;
  • <base>/sites/<site_name>/management/security/< |---| ответственный за безопасность;

Возможны и другие должности, которые должны войти в соответствующий сисок.

  • <base>/sites/<site_name>/services/ |---| сервисы и службы, зарегистрированные для данного сайта;
  • <base>/sites/<site_name>/services/<service_name>/ |---| сервис, зарегистрированные для данного сайта;
  • <base>/sites/<site_name>/services/<service_name>/management/ |---| список лиц, обслуживающих этот сервис;
  • <base>/sites/<site_name>/services/<service_name>/management/sysadmin/ |---| системный администратор службы;
  • <base>/sites/<site_name>/services/<service_name>/EPR/ |---| End-point-refernce службы;
URI Метод Действие Входное представление Выходное представление Коды состояния
<base>/sites/ GET Сайтов --- Site List Format 200_, 401_
<base>/sites/ POST Создание нового сайта `Site Format`_ Site List Format 201_, 400_, 401_, 412_
<base>/sites/<site_name>/ GET Получение описание сайта --- `Site Format`_ 200_, 401_, 404_
<base>/jobs/<site_name>/ PUT Изменение параметров сайта. `Site Modification Format`_ --- 204_, 401_, 404_
<base>/jobs/<site_name>/ DELETE Удаление сайта. --- --- 204_, 401_, 404_

Общие параметры запросов

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

Все запросы, отправляемые на сервер, имеющие не пустое тело, должны содержать заголовок Content-MD5. Все ответы сервера, имеющие не пустое тело, всегда содержат заголовок Content-MD5.

Коды состояния и ошибок

200 OK

Запрос обработан без ошибок, тело ответа содержит ответ на запрос в указанном выше формате.

201 Created

Запрос обработан без ошибок, ответ имеет пустое тело и заголовок Location, содержащий URI созданного ресурса.

204 No Content

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

400 Bad Request

Ошибка обработки запроса. Запрос содержал данные в неправильном формате, либо пытался изменить параметры, которые нельзя изменить. Тело ответа содержит подробное описание ошибки в формате `Error Format`_.

401 Unauthorized

Ошибка обработки запроса. Доступ к запрашиваемому объекту запрещен. Тело ответа содержит подробное описание ошибки в формате `Error Format`_.

404 Not Found

Ошибка обработки запроса. Запрашиваемый ресурс не существует. Тело ответа содержит подробное описание ошибки в формате `Error Format`_.

412 Precondition Failed

Ошибка обработки запроса. Контролная сумма тела запроса не соответствует заголовку Content-MD5 запроса. Тело ответа пустое.

Форматы данных

Все данные передаются в формате JSON. Формальные описания форматов приводятся в виде JSON Schema

Site List Format

Формальное описание
{ "description": "Список зарегистрированных сайтов",
  "type": "array",
  "items":
  { "type": "object",
    "properties":
    { "site_name":
      { "type": "string",
        "description": "Имя сайта",
        "format": "string"
      }
    "additionalProperties": false
  }
}
Назначение полей

Данный формат представляет собой список названий зарегистрированных сайтов. Каждое задание является объектом, у которого атрибут site_name является названием соответствующего сайта.

Пример списка заданий
[ { "site_name": "sinpNNN" },
  { "site_name": "jinrNNN" } ]

Site Creation Format

Формальное описание
{ "description": "Запрос на создание сайта",
  "type": "array",
  "items":
  {
    "type": "object",
    "properties":
    { "manager":
      { "type": "string",
        "description": "DN сертификата зарегистрированного пользователя СРРГ с ролью менеджера",
        "format": "DN"
      }
    },
    { "site_name":
       { "type": "string",
         "description": "Название сайта",
         "format": "string"
       }
    }
  }
  "additionalProperties": false
}
Пример запроса
{
  "manager": "C=RU, O=RDIG, OU=users, OU=sinp.msu.ru, CN=Alexander Kryukov",
  "site_name": "sinpNNN"
]

Docutils System Messages

System Message: ERROR/3 (<string>, line 22); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 30); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 80); backlink

Undefined substitution referenced: "base".

System Message: ERROR/3 (<string>, line 85); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 86); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 87); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 88); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 90); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 94); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 95); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 96); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 97); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 99); backlink

Undefined substitution referenced: "---".

System Message: ERROR/3 (<string>, line 107); backlink

Unknown target name: "200".

System Message: ERROR/3 (<string>, line 107); backlink

Unknown target name: "401".

System Message: ERROR/3 (<string>, line 109); backlink

Unknown target name: "site format".

System Message: ERROR/3 (<string>, line 109); backlink

Unknown target name: "201".

System Message: ERROR/3 (<string>, line 109); backlink

Unknown target name: "400".

System Message: ERROR/3 (<string>, line 109); backlink

Unknown target name: "401".

System Message: ERROR/3 (<string>, line 109); backlink

Unknown target name: "412".

System Message: ERROR/3 (<string>, line 111); backlink

Unknown target name: "site format".

System Message: ERROR/3 (<string>, line 111); backlink

Unknown target name: "200".

System Message: ERROR/3 (<string>, line 111); backlink

Unknown target name: "401".

System Message: ERROR/3 (<string>, line 111); backlink

Unknown target name: "404".

System Message: ERROR/3 (<string>, line 113); backlink

Unknown target name: "site modification format".

System Message: ERROR/3 (<string>, line 113); backlink

Unknown target name: "204".

System Message: ERROR/3 (<string>, line 113); backlink

Unknown target name: "401".

System Message: ERROR/3 (<string>, line 113); backlink

Unknown target name: "404".

System Message: ERROR/3 (<string>, line 115); backlink

Unknown target name: "204".

System Message: ERROR/3 (<string>, line 115); backlink

Unknown target name: "401".

System Message: ERROR/3 (<string>, line 115); backlink

Unknown target name: "404".

System Message: ERROR/3 (<string>, line 155); backlink

Unknown target name: "error format".

System Message: ERROR/3 (<string>, line 163); backlink

Unknown target name: "error format".

System Message: ERROR/3 (<string>, line 170); backlink

Unknown target name: "error format".