Показать сообщение отдельно
Старый 14.02.2023, 15:26   #16  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
  • Кластер DAX2012 (несколько десятков АОС).
  • Пакетное задание DAX (любой из этих АОС теоретически может быть назначен пакетным сервером) при выполнении обращается к неким внешним ресурсам, используя при этом логин и пароль.
  • Этих ресурсов несколько десятков.
То есть аксапта должна уметь расшифровать хранящийся пароль и передать его внешнему ресурсу при авторизации.
Так вот в чем собственно вопрос:
  • каким образом организовывать шифрование-дешифрование
  • каким образом организовывать хранение и доступ к ключам шифрования
Обычный подход в таких случаях следующий:
  • на любом хосте генерится экспортируемый (!) самоподписанный сертификат с использованием асимметричного алгоритма шифрования, такого как RSA или Diffie–Hellman (например, RSA2048), лучше всего со сроком действия лет на 100. В справке по развертыванию D365FO есть рекомендации по настройкам генерации сертификатов. Сгенерить сертификат можно с помощью PowerShell, см. New-SelfSignedCertificate
  • сам сертификат на хосте, где он сгенерирован, экспортируется с закрытым ключом в pfx-файл (скажем, с помощью MMC-оснастки Certificates), при этом закрытый ключ защищается паролем.
  • экспортированный сертификат с закрытым ключом на всех хостах, где им нужно будет что-то расшифровывать, импортируется в cert:\LocalMachine\My в терминах PowerShell (он же Computer\Personal в MMC-оснастке Certificates)
  • на закрытый ключ с помощью MMC-оснастки Certificates или с помощью PowerShell дается доступ на чтение той учетке или доменной группе, под которой запускаются сервисы AOS-ов. По умолчанию доступ будет только у LocalSystem, локального администратора и того, кто импортировал сертификат.
  • на открытом ключе сертификата зашифровываются приватные данные и сохраняются в базе или еще где, да хоть на сетевой шаре.
  • в коде, где нужно прочитать приватные данные, тому же RSACryptoServiceProvider говорится "расшифруй массив байт". Класс сам из зашифрованных данных извлекает отпечаток сертификата, сам запрашивает его закрытый ключ на хосте и расшифровывает данные (если что не так - будет исключение)
  • после использования расшифрованных данных не забыть выжечь их в оперативной памяти каленым железом, чтобы кто-нить дамп не снял
  • profit!
За это сообщение автора поблагодарили: Logger (3), LETTO (1), raz (10), S.Kuskov (10), sukhanchik (15), fed (10).