Последняя активность 1756719043

imxored ревизий этого фрагмента 1756719043. К ревизии

1 file changed, 41 insertions, 4 deletions

\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265 \320\277\320\260\321\200\320\276\320\273\320\265\320\271.md"

@@ -176,8 +176,45 @@
176 176 #### Данные внешних соединений
177 177 Заполнить креды соединений
178 178
179 + ## Hashi Corp Vault
180 + ### Создание хранилище
181 + Для всех баз 1с используем одно хранилище: storage_1c, тип key-value
182 + ### Создание секрета
183 + Для каждой базый добавляем два пути к секретам:
184 + 1. Тестовый контур (test)
185 + 2. Продакшн контур (prod)
186 +
187 + ### Сопоставление секретов HCV и 1С
188 + Для каждой записи справоника внешних соединений в HCV должно быть две записи:
189 + 1. Логин
190 + 2. Пароль
191 + Обе записи формируются по обному правилу:
192 + ```
193 + Префикс + "_" + Логин
194 + Префикс + "_" + Пароль
195 + ```
196 + #### Стандартный сервис
197 + Сопоставление выполняется по имени перечисления
198 + > ЛКСБ_Логин
199 + #### Произвольный сервис
200 + Сопоставление выполняется по префиксу HCV
201 + > DEMICON_Логин
202 +
203 + #### Пример (база ЕРП, сервис БСО)
204 + В HCV должно быть под две записи для каждого контура:
205 + **Продакшн контур**
206 + Путь:
207 + > /storage_1c/ERP_USO2/prod
208 + ```
209 + БСО_Логин: obmen
210 + БСО_Пароль: StrongPassword
211 + ```
212 + **Тестовый контур**
213 + Путь:
214 + > /storage_1c/ERP_USO2/test
215 + ```
216 + БСО_Логин: user123
217 + БСО_Пароль: password
218 + ```
179 219
180 -
181 - # TODO
182 - - добавить в модуль менеджера заполнение настроек по умолчанию
183 - - добавить в обработку использование созданных внешних настроек из этого регистра
220 + PS. Если поменяется имя БД - ничего страшного, путь фиксирован в настройках подключения к HCV.

imxored ревизий этого фрагмента 1756717162. К ревизии

1 file changed, 22 insertions, 14 deletions

\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265 \320\277\320\260\321\200\320\276\320\273\320\265\320\271.md"

@@ -67,11 +67,11 @@
67 67 Я для заполнения использую обработку [ВстраиваниеХранениеПаролей.epf](#встраивание-хранение-паролей)
68 68
69 69 #### **Константа**
70 - **Д_ПСВ_ИмяБазы** - имя базы в продукшене.
71 - > "ERP_USO2"
70 + **Д_ПСВ_ИмяБазы** - имя базы в продакшене.
71 + > ERP_USO2
72 72
73 73 #### **Параметры подключения к HashiCorp Vault**
74 - Пока опустим это.
74 + Пока опустим это, т.к. хранилище запаковано и там ничего не показать, могу только на копии.
75 75
76 76 #### **Дополнительные настройки**
77 77 > Не обязательно, нужно только при использовании произвольных сервисов.
@@ -82,7 +82,7 @@
82 82 Заполнение справочника Д_ПСВ_ВнешниеСоединения
83 83
84 84 ### Вызовы
85 - При любом из двух вариантв в ответ мы получил или Неопределено или структуру с четыремя полями:
85 + При любом из двух вариантв в ответ мы получиv Неопределено или структуру с четыремя полями:
86 86 - ИмяБазы
87 87 - Логин
88 88 - Секрет
@@ -93,7 +93,7 @@
93 93 ЛогинПубликации = "";
94 94 ПарольПубликации = "";
95 95 СерверПубликации = "ba.dogma.ru";
96 -
96 +
97 97 Сервис = Перечисления.Д_ПСВ_Сервисы.БСО;
98 98 ПараметрыСоединения = Д_ПСВ_ХранениеПаролей.ПолучитьПараметрыСоединения(Сервис);
99 99 Если Не ПараметрыСоединения = Неопределено Тогда
@@ -103,20 +103,20 @@
103 103 СерверПубликации = ПараметрыСоединения.АдресСервера;
104 104 КонецЕсли;
105 105 ```
106 - Нам нужно указать лишь сервис от которого требуются креды.
106 + Нужно указать лишь сервис от которого требуются креды.
107 107 #### Произвольный сервис
108 108 ``` 1C
109 109 АдресСервера= "";
110 110 Логин = "";
111 111 Секрет = "";
112 112 ИмяБазы = "";
113 -
113 +
114 114 Если Д_ПСВ_ХранениеПаролей.УстановитьТестовыйКонтур() Тогда
115 115 Д_ВнешнееСоединение = РегистрыСведений.Д_ПВС_ДополнительныеНастройки.Сервис_dimeco_ТК();
116 116 Иначе
117 117 Д_ВнешнееСоединение = РегистрыСведений.Д_ПВС_ДополнительныеНастройки.Сервис_dimeco();
118 118 КонецЕсли;
119 -
119 +
120 120 ПараметрыСоединения = Д_ПСВ_ХранениеПаролей.ПолучитьПараметрыПроизвольногоСервиса(Д_ВнешнееСоединение);
121 121 Если Не ПараметрыСоединения = Неопределено Тогда
122 122 АдресСервера = ПараметрыСоединения.АдресСервера;
@@ -125,7 +125,7 @@
125 125 ИмяБазы = ПараметрыСоединения.ИмяБазы;
126 126 КонецЕсли;
127 127 ```
128 - Тут нужно предварительно [создать](#создание-доп-настройки) описание сервиса в регистре Дополнительные настройки, в этом примере:
128 + Тут требуется предварительно [создать](#создание-доп-настройки) описание сервиса в регистре Дополнительные настройки, в этом примере:
129 129 - Сервис_dimeco_ТК()
130 130 - Сервис_dimeco()
131 131
@@ -137,7 +137,7 @@
137 137
138 138 #### Описание настройки
139 139 ```1C
140 - // ПарольНовогоПользователяИзДО
140 + // ПарольНовогоПользователяИзДО
141 141 ОписаниеТипа = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки("20"));
142 142 Настройка = ОписаниеНастройки(
143 143 "ПарольНовогоПользователяИзДО",
@@ -148,7 +148,6 @@
148 148 Группа_Общее(),
149 149 Истина);
150 150 Результат.Добавить(Настройка);
151 -
152 151 ```
153 152 Параметры:
154 153 1. Имя настройки - должно быть уникальным, кратко отражает смысл настройки.
@@ -159,14 +158,23 @@
159 158 6. Группа - группа в которой будет отображаться настройка в форме списка.
160 159 7. Чуствительные данные - признак того, что полю нужно выставить признак Пароль (звездочки вместо данных), так же значение будет скрыто на форме списка.
161 160
161 + #### Получение значения настройки
162 + Добавить экспортную функцию аналогичную названию настройки в область **ПолучениеЗначенийНастроек** пример:
163 + ```1C
164 + Функция ПарольНовогоПользователяИзДО() Экспорт
165 + Возврат ПолучитьЗначениеНастройки("ПарольНовогоПользователяИзДО");
166 + КонецФункции
167 + ```
168 +
169 +
162 170 ### Встраивание хранение паролей
163 171 Весь код расположен в модуле формы, нас интересует две функции:
164 172 - ПриСозданииНаСервере
165 173 - ДанныеВнешнихСоединений
166 174 #### При создании на сервере
167 - Тут нужно указать **ИмяБазыБудетУстановлено**
168 - #### Даныне вшених соединений
169 - Расширить взаимодействие с доп настройками.
175 + Указать **ИмяБазыБудетУстановлено**
176 + #### Данные внешних соединений
177 + Заполнить креды соединений
170 178
171 179
172 180

imxored ревизий этого фрагмента 1756480320. К ревизии

1 file changed, 175 insertions

\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265 \320\277\320\260\321\200\320\276\320\273\320\265\320\271.md" (файл создан)

@@ -0,0 +1,175 @@
1 + # Хранилище паролей
2 + ## Основные объекты
3 + ### Общие модули
4 + #### Внешние соединения
5 + Имя: Д_ПСВ_ХранениеПаролей
6 + Тут сосредоточено 90% функционала, получение секретов, обновление серкетов из HCV, генерация токенов, всевозможное взаимодействоия итп.
7 +
8 + ### Роли
9 + #### Основная роль
10 + Имя: Д_ПСВ_ОсновнаяРоль
11 + Дает право на чтение секретов.
12 +
13 + #### Администрирование
14 + Имя: Д_ПСВ_Администрирование
15 + В интерфейсе появляется подсистема, дает право на все настройки и установку секретов.
16 +
17 + #### Чтение ключа
18 + Имя: Д_ПСВ_ЧтениеКлюча
19 + Служебная, используется при работе через базу-посредний, дает право на чтение JWT ключа через HTTP сервис.
20 +
21 + #### Установка секретов
22 + Имя: Д_ПСВ_УстановкаСекретов
23 + Служебная, используется при работе через базу-посредний, дает обновить секреты в текущей базе через HTTP сервис.
24 +
25 + ### Регламентные задания
26 + #### Получение секретов
27 + Имя: Д_ПСВ_ПолучениеСекретов
28 + Получает секреты из HCV и записывает в безопасное хранилище.
29 + > Обновляются только те, что с галочкой **ХранениеПароляВоВнешнейСистеме**
30 +
31 + #### Получение секретов
32 + Имя: Д_ПСВ_ОбновитьАрендуТокена
33 + Обновляет токен доступа в HCV.
34 +
35 + ### Справочники
36 + #### Внешние соединения
37 + Имя: Д_ПСВ_ВнешниеСоединения
38 + > Тут находятся данные для подключения: логины, адрес сервера итп, так же эти объекты являются владельцами секретов в безопасном хранилище.
39 +
40 + #### Настройки соединения КХП
41 + Имя: Д_ПСВ_НастройкиСоединенияКХП
42 + > Тут лежат настройки подключения и протокола взаимодействия с HashiCorp Vault.
43 +
44 + ### Регистры сведений
45 + #### Дополнительные настройки
46 + Имя: Д_ПВС_ДополнительныеНастройки
47 + > Служит для хранения доп настроек :)
48 +
49 + #### Безопасное хранилище
50 + Имя: БезопасноеХранилищеДанных
51 + > Заимствован только для назначения прав на чтение секретов.
52 +
53 + ## Встраивание
54 + ### Подключаем расширение
55 + - Выбрать картинку для подсистемы **Д_ПСВ_ХранениеПаролей**
56 + - Проверить заимствование регистра сведений **БезопасноеХранилищеДанных**
57 +
58 + ### Настройка прав
59 + Если доступ к секретам нужен **только** служебным пользователям которым назначены полные права - дополнительная настройка не требуется.
60 +
61 + #### Общий случай
62 + Выдать всем пользователям роль Д_ПСВ_ОсновнаяРоль, для этого ее нужно добавить в какой-то профиль назначенный всем пользователям.
63 +
64 + > Эта роль в основном дает право только на чтение объектов, так что назначение его всем пользователям не несет угрозы, посто это может занимать длительное время.
65 +
66 + ### Заполнение настроек
67 + Я для заполнения использую обработку [ВстраиваниеХранениеПаролей.epf](#встраивание-хранение-паролей)
68 +
69 + #### **Константа**
70 + **Д_ПСВ_ИмяБазы** - имя базы в продукшене.
71 + > "ERP_USO2"
72 +
73 + #### **Параметры подключения к HashiCorp Vault**
74 + Пока опустим это.
75 +
76 + #### **Дополнительные настройки**
77 + > Не обязательно, нужно только при использовании произвольных сервисов.
78 +
79 + Заполнение регистра сведений Д_ПВС_ДополнительныеНастройки
80 +
81 + #### **Настройки соединений**
82 + Заполнение справочника Д_ПСВ_ВнешниеСоединения
83 +
84 + ### Вызовы
85 + При любом из двух вариантв в ответ мы получил или Неопределено или структуру с четыремя полями:
86 + - ИмяБазы
87 + - Логин
88 + - Секрет
89 + - АдресСервера
90 + #### Стандартный сервис
91 + ``` 1C
92 + ИмяПубликации = "BSO";
93 + ЛогинПубликации = "";
94 + ПарольПубликации = "";
95 + СерверПубликации = "ba.dogma.ru";
96 +
97 + Сервис = Перечисления.Д_ПСВ_Сервисы.БСО;
98 + ПараметрыСоединения = Д_ПСВ_ХранениеПаролей.ПолучитьПараметрыСоединения(Сервис);
99 + Если Не ПараметрыСоединения = Неопределено Тогда
100 + ИмяПубликации = ПараметрыСоединения.ИмяБазы;
101 + ЛогинПубликации = ПараметрыСоединения.Логин;
102 + ПарольПубликации = ПараметрыСоединения.Секрет;
103 + СерверПубликации = ПараметрыСоединения.АдресСервера;
104 + КонецЕсли;
105 + ```
106 + Нам нужно указать лишь сервис от которого требуются креды.
107 + #### Произвольный сервис
108 + ``` 1C
109 + АдресСервера= "";
110 + Логин = "";
111 + Секрет = "";
112 + ИмяБазы = "";
113 +
114 + Если Д_ПСВ_ХранениеПаролей.УстановитьТестовыйКонтур() Тогда
115 + Д_ВнешнееСоединение = РегистрыСведений.Д_ПВС_ДополнительныеНастройки.Сервис_dimeco_ТК();
116 + Иначе
117 + Д_ВнешнееСоединение = РегистрыСведений.Д_ПВС_ДополнительныеНастройки.Сервис_dimeco();
118 + КонецЕсли;
119 +
120 + ПараметрыСоединения = Д_ПСВ_ХранениеПаролей.ПолучитьПараметрыПроизвольногоСервиса(Д_ВнешнееСоединение);
121 + Если Не ПараметрыСоединения = Неопределено Тогда
122 + АдресСервера = ПараметрыСоединения.АдресСервера;
123 + Логин = ПараметрыСоединения.Логин;
124 + Секрет = ПараметрыСоединения.Секрет;
125 + ИмяБазы = ПараметрыСоединения.ИмяБазы;
126 + КонецЕсли;
127 + ```
128 + Тут нужно предварительно [создать](#создание-доп-настройки) описание сервиса в регистре Дополнительные настройки, в этом примере:
129 + - Сервис_dimeco_ТК()
130 + - Сервис_dimeco()
131 +
132 + ## Дополнительные материалы
133 + ### Создание доп настройки
134 + Весь функционал находится в модуле менеджера.
135 + #### Функция СписокНастроек
136 + Здесь содержится перечень описаний всех доп. [настроек](#описание-настройки)
137 +
138 + #### Описание настройки
139 + ```1C
140 + // ПарольНовогоПользователяИзДО
141 + ОписаниеТипа = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки("20"));
142 + Настройка = ОписаниеНастройки(
143 + "ПарольНовогоПользователяИзДО",
144 + ОписаниеТипа,
145 + "Пароль123",
146 + "Пароль нового пользователя создаваемого из ДО.",
147 + "Тут очень важный комментарий",
148 + Группа_Общее(),
149 + Истина);
150 + Результат.Добавить(Настройка);
151 +
152 + ```
153 + Параметры:
154 + 1. Имя настройки - должно быть уникальным, кратко отражает смысл настройки.
155 + 2. Описание типа - возможны простые типы и любая ссылка.
156 + 3. Значение по умолчанию - допустимо вызывать другие функции.
157 + 4. Представление - имя настройки, которое будет видеть пользователь.
158 + 5. Комментарий - любые пояснения к настройке.
159 + 6. Группа - группа в которой будет отображаться настройка в форме списка.
160 + 7. Чуствительные данные - признак того, что полю нужно выставить признак Пароль (звездочки вместо данных), так же значение будет скрыто на форме списка.
161 +
162 + ### Встраивание хранение паролей
163 + Весь код расположен в модуле формы, нас интересует две функции:
164 + - ПриСозданииНаСервере
165 + - ДанныеВнешнихСоединений
166 + #### При создании на сервере
167 + Тут нужно указать **ИмяБазыБудетУстановлено**
168 + #### Даныне вшених соединений
169 + Расширить взаимодействие с доп настройками.
170 +
171 +
172 +
173 + # TODO
174 + - добавить в модуль менеджера заполнение настроек по умолчанию
175 + - добавить в обработку использование созданных внешних настроек из этого регистра
Новее Позже