Как перенести контейнер закрытого ключа на другой компьютер из реестра


Перенос сертификатов КриптоПРО на другой компьютер, за минуту

Добрый день! Уважаемые читатели и гости крупнейшего IP блога России pyatilistnik.org. В прошлый раз я вам рассказал, о том, как установить сертификат в реестр Windows . Сегодня я вам расскажу, каким образом вы можете выполнить перенос сертификата на другой компьютер, это очень частая и жизненная ситуация с которой сталкиваются многие системные администраторы. Захотелось с вами поделиться опытом, о массовом переносе контейнеров с закрытыми ключами, находящимися в области реестра Windows. Использовать мы будем как КриптоПРО, так и встроенные механизмы. Уверен будет интересно.

Когда нужно переносить сертификаты в другое место?

И так давайте рассмотрим по каким причинам у вас может появиться необходимость в копировании ваших ЭЦП в другое место.

  1. На текущем физическом компьютере начинает умирать жесткий диск или SSD накопитель (Как проверить жизненные показатели жесткого диска), очень частая история и жизненная, когда люди теряли все свои данные, из-за банальной жадности в покупке нового оборудования и элементарного незнания принципов резервного копирования.
  2. У вас производится модернизация оборудования, его улучшение и вам нужно перенести все сертификаты с закрытыми ключами на другую систему
  3. Вы создали отдельный сервер, в виде виртуальной машины, где будут находится все ваши сертификаты и с ними смогут работать все необходимые сотрудники, терминал для бухгалтерии. Простой пример СБИС, и когда у вас 10-20 организаций.

Как видите предпосылок и вариантов переноса сертификатов из реестра на другой компьютер, предостаточно.

Какие есть варианты по копированию контейнеров закрытых ключей?

Перенос сертификатов в виде пошаговой инструкции

Первые два пункта я описывать тут не стану, так как я уже это подробно рассказывал, посмотрите по ссылкам. Я расскажу, об остальных методах и начнем мы с классического КриптоПРО.

Данный метод подойдет для тех ситуаций, когда у вас один или 2 сертификата (ЭЦП). Если же их несколько десятков, а это не такая уж и редкость, то такой путь вам не подходит, и там придется выбирать 4-й метод.

Важное замечание. Я буду переносить контейнеры закрытого ключа, которые хранятся в реестре. Если вы храните их только на токене, то переносить контейнеры вам не надо, только сертификаты

Копирование закрытого ключа из КриптоПро

Это самый простой способ, и будет актуальным при небольшом количестве контейнеров с закрытыми ключами. Чтобы выполнить перенос сертификатов из реестра, откройте ваш КриптоПРО, вкладка "Сервис", нажимаем кнопку "Сервис", далее через кнопку "Обзор", откройте "Выбор ключевого контейнера" и укажите, какой сертификат вы будите переносить. В моем примере это контейнер "Копия сертификата в реестре (Семин Иван)".

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

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

Задаем обязательно пароль, с точки зрения безопасности, так как файлы в таком виде просто скомпрометировать.

Все, на выходе я получил папку со случайным названием и набором ключей в формате key.

Если вы пытаетесь копировать сертификат с токена, то в ряде случаев у вас может появиться ошибка: Ошибка копирования контейнера. У вас нет разрешений на экспорт ключа, потому что при создании ключа не был установлен соответствующий флаг. Ошибка 0x8009000B (-2146893813) Ключ не может быть использован в указанном состоянии.

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

Если вы получили ошибку копирования контейнера. У вас нет разрешений на экспорт ключа, то метод с КРиптоПРО вам не поможет

Перенос сертификатов из реестра без КриптоПРО

Существуют методы экспортировать закрытый ключ и без изспользования утилиты КриптоПРО. Представим себе ситуацию, что у вас на него кончилась лицензия и вы не успели ее купить. Вам нужно сдать отчетность в СБИС. Вы развернули CryptoPRO на другом компьютере, так как он позволяет 3 месяца бесплатного использования, осталось для СБИС выполнить перенос сертификатов, которые у вас в реестре Windows.

У нас два варианта:

  • Использование оснастки mmc-Сертификаты пользователя.
  • Использование Internet Explore

Как открыть оснастку сертификаты я уже подробно рассказывал, посмотрите. Откройте там контейнер "Личное - Сертификаты". Если у вас в контейнере не один сертификат с одинаковым именем, такое может быть, то откройте сертификат в оснастке mmc и в КриптоПРО и сравните серийные номера сертификата.

В Internet Explore, откройте "Свойства браузера - Содержание - Сертификаты"

Теперь нам необходимо его экспортировать, в оснастке "Сертификаты", через правый клик, это можно сделать, в Internet Explorer, сразу видно кнопку, экспорт.

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

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

Следующим этапом в мастере экспорта сертификатов, вам необходимо выбрать формат выгрузки, это будет PFX архив.

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

 

Мастер экспорта сертификатов, выведет вам сводные данные, нажимаем "Готово".

Отрываем локацию, куда вы его выгрузили, и найдите свой pfx архив.

Теперь вам нужно еще выгрузить открытый ключ в формате cer, для этого так же зайдите в мастер экспорта, но на этот раз выберите "Нет, не экспортировать закрытый ключ".

Выберите формат файла "X.509 (.CER) в кодировке DEP", задайте ему имя и место сохранения. На выходе у вас появятся два файла.

Одни открытый ключ в формате cer и закрытый ключ в формате pfx. Этого набора вам будет достаточно, чтобы перенести сертификаты СБИС, Контура и остальных программ на другой компьютер.

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

На втором шаге проверяем импортируемый сертификат.

Указываем пароль, который задавали при выгрузке.

Оставляем автоматический выбор хранилища на основе типа сертификатов.

Готово. Со вторым файлом то же самое. После чего у вас будут перенесены нужные вам ключи и сам сертификат, можно работать.


Массовый перенос ключей и сертификатов CryptoPro на другой компьютер

Выше описанные методы хороши, когда у вас один или 5 ключиков в реестре, а как быть если их десятки. Помню лет 5 назад, когда я еще был младшим администратором, то я очень часто устанавливал электронные цифровые подписи главбуху, так как она работала в СБИС++ и сдавала там постоянно отчетность по огромному количеству организаций, по типу рога и копыта. Держать кучу токенов было не вариант, и для таких вещей у нее все хранилось в реестре и копия сертификатов была на флешке в сейфе. Флешку потом потеряли, встал вопрос сделать резервную копию всего и плюс обновить систему, в виду нового компьютера, на операционной системе Windows 8.1. ЭЦП было штук 50, а так как я ценю свое время, то и искал методы, выполнить это быстрее, к счастью я его нашел.

Заключался метод переноса сертификатов из реестра, в выгрузке веток и подмене SID значения, но обо всем по порядку. О том, как посмотреть SID пользователя и что это такое я рассказывал.

Открываете командную строку cmd и вводите команду:

Вот это S-1-5-21-551888299-3078463796-888888888-46162 и есть SID, вашей учетной записи. Теперь когда вы его знаете, то вам нужно выгрузить ваши закрытые ключи из реестра Windows. Для этого откройте вот такую ветку:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\Номер вашего SID, который мы узнали\Keys

В контейнере Keys, вы найдете все ваши закрытые ключи от ЭЦП. С правой стороны вы увидите файлы:
* header.key
* masks.key
* masks2.key
* name.key
* primary.key
* primary2.key

Щелкаем правым кликом по контейнеру Keys и экспортируем его.

Сохраняем нашу ветку реестра с контейнерами закрытых ключей. Далее нам нужно скопировать открытые ключи, которые лежат по пути:

C:\Users\имя вашего пользователя\AppData\Roaming\Microsoft\SystemCertificates\My

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

Как только вы поместили на новом компьютере папку Key, вы можете перенести реестровую выгрузку. Сохраненный файл в формате reg, вы должны открыть в любом текстовом редакторе.

Как я показывал выше, определите SID нового пользователя, скопируйте его полностью и замените им значение в файле reg, я отметил это стрелками.

SID начинается с S-1 и так далее

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

Как видите импорт успешно завершен. Все теперь ваши закрытые и открытые ключи на месте и вы можете работать с вашими ЭЦП, и можно считать, что перенос сертификатов с одного компьютера на другой в массовом масштабе, осуществлен успешно. Если остались вопросы, то жду их в комментариях.

Переносим неэкспортируемые контейнеры Крипто-ПРО / Хабр

Иногда случается так что необходимо перенести клиент-банк или другое разнообразное бухгалтерское и не очень ПО с одного компьютера на другой. В том случае когда в качестве криптопровайдера выступает СКЗИ Крипто-ПРО обычно проблем не возникает — СКЗИ имеет штатные средства копирования ключей. Но не всегда все гладко — в том случае, когда ключевой контейнер находится в реестре Windows, и при генерации ключа не была выставлена галочка «Пометить ключ как экспортируемый» то при попытке скопировать куда-либо этот ключ Крипто-ПРО будет ругаться и не скопирует ключ.
Из этой ситуации есть очень простой выход — выгружаем ветку реестра HKLM\SOFTWARE\CryptoPro\Settings\Users\{SID}\Keys\(в x64 операционках контейнеры лежат в HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\{SID}\Keys\), а на том ПК куда необходимо импортировать смотрим разрядность ОС\SID пользователя, блокнотом правим .reg файл(меняем SID и, если необходимо, путь к конечной ветке), и импортируем его в реестр.
Также этим методом очень удобно бекапить и клонировать ключи тогда, когда их много(например в аутсорс-бухгалтериях).
P.S. Не забывайте после переноса установить сертификаты из криптоконтейнеров в «Личные».

Добавление от Ghool

В крипто-про на контейнеры можно ставить пин-код.
А так же при вводе этого пин-кода можно поставить галочку «сохранить» — и в дальнейшем его вводить не придётся.
Иногда после этого пин-код благополучно забывают (что и произошло у нас в компании).

При копировании вышеописанным методом, контейнер остаётся защищён пин-кодом — а вот «сохранение» этого пин-кода не переносится на новый компьютер.

Что можно сделать в таком случае?

Если исходный компьютер ещё жив — заходим в панель управления -> КриптоПро CSP -> Сервис -> Скопировать
Выбираем нужный контейнер (кнопка «обзор» или «по сертификату», как проще найти) -> Далее -> вводим название нового контейнера -> далее -> устанавливаем на него новый пароль. Или не устанавливаем.

И вот после этого уже копируем ветку реестра на новый комп.

Кстати, что бы не мучаться с подменой SID — можно копировать сертификаты в контейнер компьютера а не пользователя, тогда они будут храниться тут:

Win32
HKLM\SOFTWARE\CryptoPro\Settings\Keys\

Win64
HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Keys\

Как скопировать контейнер/закрытую часть ключа?

Если для работы используется дискета или flash-накопитель, копирование можно выполнить средствами Windows (этот способ подходит для версий КриптоПро CSP не ниже 3.0). Папку с закрытым ключом (и файл сертификата — открытый ключ, если он есть) необходимо поместить в корень дискеты (flash-накопителя). Название папки при копировании рекомендуется не изменять.  Папка с закрытым ключом должна содержать 6 файлов с расширением .key.

Пример закрытого ключа — папки с шестью файлами, и открытого ключа — файла с расширением .cer.



Копирование контейнера также можно выполнить с помощью КриптоПро CSP.  Для этого необходимо выполнить следующие шаги:Как правило, в закрытом ключе присутствует открытый ключ (файл header.key в этом случае будет весить больше 1 Кб). В этом случае копирование открытого ключа выполнять не обязательно.  

Копирование с помощью КриптоПро CSP   

     1. Выбрать Пуск / Панель Управления / КриптоПро CSP.

     2. Перейти на вкладку Сервис и кликнуть по кнопке Скопировать контейнер

     3. В окне «Копирование контейнера закрытого ключа» нажмите на кнопку «Обзор».

     4. Выберите контейнер, который необходимо скопировать, и кликните по кнопке «Ок», затем «Далее». 

     5. Если вы копируете с защищённого ключевого носителя, то появится окно ввода, в котором следует указать pin-код. 

     6. Если вы не меняли pin-код на носителе, стандартный pin-код необходимо вводить соответственно его типу:

Rutoken - стандартный pin-код 12345678
eToken /JaCarta  – 1234567890

     7. В следующем окне необходимо ввести имя Вашей копии. Придумайте и укажите вручную имя для нового контейнера. В названии контейнера допускается русская раскладка и пробелы. Затем кликните «Готово».

     8. В окне «Выбор ключевого носителя» выберите носитель, на который будет помещен новый контейнер.

     9. На новый контейнер будет предложено установить пароль. Рекомендуем установить такой пароль, чтобы вам было легко его запомнить, но посторонние не могли его угадать или подобрать. Если вы не хотите устанавливать пароль, можно оставить поле пустым и нажать «ОК».

В случае утери пароля/pin-кода использование контейнера станет невозможным.

     10. Если вы копируете контейнер на смарт-карту ruToken/eToken /JaCarta, окно запроса будет выглядеть так: 

     11. В окне ввода укажите pin-код. Если вы не меняли pin-код на носителе, стандартный pin-код 

Rutoken - 12345678
eToken /JaCarta  – 1234567890

     12. После копирования система вернется на вкладку «Сервис» КриптоПро CSP. Копирование завершено. 

     13. Для работы с копией ключевого контейнера необходимо установить личный сертификат.

     14. В меню Пуск выберите пункт «КРИПТО-ПРО», запустите приложение «КриптоПро CSP»

     15. Перейдите на вкладку «Сервис» и нажмите кнопку «Просмотреть сертификаты в контейнере»:

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

     17. После выбора контейнера нажмите кнопку Ок, затем Далее

     18. Если после нажатия на кнопку Далее Вы видите такое сообщение:

     19. «В контейнере закрытого ключа отсутствует открытый ключ шифрования», следует установить сертификат по рекомендациям, описанным в разделе «Установка через меню «Установить личный сертификат».

     20. В окне Сертификат для просмотра нажмите кнопку Установить:

     21. Если откроется сообщение «Этот сертификат уже присутствует в хранилище сертификатов. Заменить существующий сертификат новым, с проставленной ссылкой на закрытый ключ?», нажмите Да:

     22. Дождитесь сообщения об успешной установке:


     23. Сертификат установлен. Можно закрыть все открытые окна КриптоПро.

 

Установка через меню «Установить личный сертификат».

     1. Для установки сертификата этим способом Вам понадобится файл сертификата (файл с расширением.cer). 
 

     2. В меню Пуск выберите пункт «КРИПТО-ПРО», запустите приложение «КриптоПро CSP»

     3. Перейдите на вкладку «Сервис» и нажмите кнопку «Установить личный сертификат»:

     4. В следующем окне нажмите кнопку Обзор, чтобы выбрать файл сертификата. Укажите путь к файлу сертификата и нажмите кнопку Открыть (в нашем примере файл сертификата находится на Рабочем столе):

     5. В следующем окне нажмите кнопку Далее; в окне Сертификат для установки нажмите Далее.

     6. Поставьте галку в окне Найти контейнер автоматически (в нашем примере контейнер находится в Реестре компьютера) и нажмите Далее:

     7. В следующем окне отметьте пункт Установить сертификат (цепочку сертификатов) в контейнер и нажмите Далее:

     8. В окне Завершение мастера установки личного сертификата нажмите Готово.

     9. Если КриптоПро CSP запрашивает pin-код от контейнера, введите нужный код или попробуйте стандартные pin-коды носителей:

Rutoken - 12345678
eToken /JaCarta  – 1234567890

     10. Если откроется сообщение «Этот сертификат уже присутствует в хранилище сертификатов. Заменить существующий сертификат новым, с проставленной ссылкой на закрытый ключ?», нажмите Да:

     11. Сертификат установлен. Можно закрыть все открытые окна КриптоПро.


Остались вопросы? 

Отдел технической поддержки
 
тел.: 8 (800) 333-91-03, доб. 2400
email: [email protected]

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

В случае, если для работы используется flash-накопитель или дискета, копирование можно выполнить средствами Windows (этот способ подходит для версий КриптоПро CSP не ниже 3.0). Папку с закрытым ключом (и файл сертификата, если он есть) необходимо поместить в корень flash-накопителя (дискеты). Название папки при копировании рекомендуется не изменять. 

Папка с закрытым ключом должна содержать 6 файлов с расширением.key. Ниже приведен пример содержимого такой папки.

Копирование контейнера также может быть выполнено с помощью криптопровайдера КриптоПро CSP. Для этого необходимо выполнить следующие шаги:

1. Выбрать Пуск / Панель Управления / КриптоПро CSP.

2. Перейти на вкладку Сервис и кликнуть по кнопке Скопировать. (см. рис. 1).

Рис. 1. Окно «Свойства КриптоПро CSP»

3. В окне Копирование контейнера закрытого ключа нажать на кнопку Обзор (см. рис. 2).

Рис. 2. Копирование контейнера закрытого ключа

4. Выбрать контейнер из списка, кликнуть по кнопке Ок, затем Далее.

5. Далее необходимо указать вручную имя контейнера, на который будет выполнено копирование. В названии контейнера допускается русская раскладка и пробелы. Затем выбрать Готово (см. рис. 3).

Рис. 3. Имя ключевого контейнера

6. В окне «Вставьте и выберите носитель для хранения контейнера закрытого ключа» необходимо выбрать носитель, на который будет помещен новый контейнер (см. рис. 4).

Рис. 4. Выбор чистого ключевого носителя

7. На новый контейнер будет предложено установить пароль. Установка пароля не является обязательной, можно оставить поле пустым и нажать на кнопку Ок (см. рис. 5).

Рис. 5. Установка пароля на контейнер

Если копирование выполняется на носитель Rutoken, сообщение будет звучать иначе (см. рис. 6)

Рис. 6. Pin-код для контейнера

Рекомендуется указать стандартный pin-код (12345678)

Обращаем ваше внимание: в случае утери пароля/pin-кода использование контейнера станет невозможным.

8. После выполнения копирования система вернется на вкладку Сервис в окне КриптоПро CSP. Копирование завершено. Если планируется использовать для работы в системе «Контур-Экстерн» новый ключевой контейнер, необходимо установить личный сертификат (см. Как установить личный сертификат?).

Для массового копирования скачайте и запустите утилиту Certfix. 

  1. После запуска дождитесь загрузки всего списка контейнеров\сертификатов.
  2. Отметьте нужные контейнеры галочками.
  3. Нажмите на меню «Массовые действия» и нажмите на кнопку «Копирование контейнеров»
  4. Выберите носитель для хранения копии контейнера и нажмите на ОК
  5. При копировании в реестр можно поставить галочку на пункте «Копировать в ключевой контейнер компьютера» — после копирования контейнер будет доступен всем пользователям данного компьютера.
  6. После копирования нажмите внизу слева кнопку Обновить
  7. Если хотите работать со скопированными контейнерами — необходимо установить сертификаты. Сделать это можно массово по кнопке «Импорт в хранилище личных».

: Руководство по использованию сервиса "1С-Отчетность" в 1С:Бухгалтерии 8

CSP , :

  1. (), "1-".
  2. - CSP , "1-".
  3. , "1-".

, , 1-.

CSP

, 1-, (. 1):

  1. "" 1-.
  2. " ".

1-, , . 3.

. 1

. , " " (. 2).

" " . , .

: REGISTRY\\1cmastersystem_2017

, , .

. 2

CSP ( "" - " - "-" - " CSP") (. 3, 4).

. 3

. 4

"" "" (. 5).

. 5

(. 6).

"", "". , " ".

. 6

(. 7). "".

. 7

"" (. 8).

. 8

-, , "" "" (. 9).

. 9

"" (. 10).

. 10

-.

CSP

() CSP.

-.

, .

:

  1. - .
  2. CSP ( "" - " - "-" - " CSP") (. . 3).
  3. "" "" (. 11).
  4. "". , , .. -.
  5. , - "".

. 11

(. 12). "".

, , "".

. 12

( ) "" (. 13).

"" "" "".

. 13

"" (. 14).

. 14

.

CSP ( "" - " - "-" - " CSP") (. . 3).

"" " " (. 15).

. 15

"" " " (. 16).

, , ( ""). - - , -.

"".

. 16

" " (. 17). "".

. 17

(. 18). "".

. 18

(. 19).

. 19

Перенос КриптоПро, ключей ЭЦП, сертификатов с одного компьютера на другой

Инструкция по переносу лицензии КриптоПро, закрытых ключей ЭЦП и сертификатов с одного компьютера на другой.

1. Перенос лицензии криптопро.

Серийный номер КриптоПро CSP 3.6 находится в ветке реестра

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\05480A45343B0B0429E4860F13549069\InstallProperties]

в значении параметра ProductID (имя раздела 05480A45343B0B0429E4860F13549069 может оказаться другим).

2. Перенос закрытых ключей ЭЦП. (Имеются ввиду ЭЦП хранящиеся в реестре, для ключей хранящихся на флешках, и токенах действие не требуется.)

2.1 Узнать SID текущего пользователя (нужен пользователь у которого ключи).

Способ 1: командой

whoami /user

Способ 2:Найти ветку реестра[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList].Выбрать SID (имеет вид, например, S-1-5-21-1993962763-492894223-1202660629-6195), и посмотреть ProfileImagePath, в конце строки найдете имя пользователя, которому принадлежит этот SID.

2.2. Для 32 битных систем нужно экспортировать ветку [HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\SID_текущего_пользователя\Keys] в reg-файл.
Для 64-битных систем нужно экспортировать ветку [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\USERS\SID_текущего_пользователя\Keys].

Эти ветки доступны только для текущего пользователя и при попытке открыть их от имени другого получим: "Не удается открыть <SID>. Не удается открыть этот раздел из-за ошибки. Сведения: Отказано в доступе."  Если у вас нет возможности залогиниться под нужным пользователем, то вам поможет утилита Марка Руссиновича psexec (скачать можно с течнета или отсюда) , которая позволяет запускать процессы от имени системной учетки. С помощью psexec запускаем regedit от имени системы:

psexec -i -d -s c:\windows\regedit.exe

и нам становятся доступны все разделы. Этот же трюк спасет если система вообще не загружается, нужно скопировать файл C:\Windows\System32\config\SOFTWARE и загрузить его как куст реестра, главное, чтобы файл не был поврежден.

2.3. В reg-файле меняем через автозамену SID_текущего_пользователя, на SID пользователя в новой сисмеме.

2.4. Запускаем reg-файл, после этого все готово, но необходимо будет заново установить личные сертификаты для того что бы привязать сертификаты к контейнерам. Если не видно контейнеров, то неправильно указали SID_пользователя, т.к. контейнеры видны только под тем пользователем, под SID’ом которого они находятся.

Если перенести ключи данным способом не получается можно скопировать ЭЦП на флешку (КриптоПро: Перенос ключей ЭЦП с дискет на флешку или в реестр).

3. Перенос сертификатов. 

Способ 1. Экспорт-импорт сертификатов. Выполнить certmgr.msc. В открывшемся окне переходим Личное->Сертификаты. Далее правой кнопкой по сертификату -> Все задачи -> Экспорт... В мастере экспорта нажимаем далее, выбираем экспортировать закрытый ключ или нет, выбираем нужный формат и нажимаем далее. Импорт личных сертификатов, которые используются в КриптоПро, нужно делать через

Панель управления -> КриптоПро -> вкладка "Сервис" -> "Установить личный сертификат".

При установке личных сертификатов средствами Windows не выполняется привязка закрытого ключа ЭЦП, и, очевидно, работать ничего не будет.

Способ 2. Установка сертификатов из контейнеров ЭЦП. При установке личного сертификата в КриптоПро версии 3.6 и выше существует возможность скопировать сертификат в контейнер закрытого ключа. Данная процедура позволяет значительно облегчить процесс переноса. Если сертификат установлен в контейнер закрытого ключа, не нужно ни чего экспортировать, достаточно просто перенести контейнеры, а потом зайти в

Панель управления -> КриптоПро -> вкладка "Сервис" ->"Просмотреть сертификаты в контейнере"

выбрать нужный контейнер и нажать кнопки "Далее" и "Установить".

В том случае, если нужно перенести 100500 ключей сразу, поможет одна из составляющих пакета PKI Tools, которая автоматизирует процесс установки сертификатов из контейнеров. Скачать пакет можно отсюда или отсюда.

 

Шифрование

- как перенести закрытый и открытый ключ pgp на другой компьютер?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

tomcat - Как экспортировать закрытый ключ из хранилища ключей самозаверяющего сертификата

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

Настройка частной ссылки - Реестр контейнеров Azure

  • 13 минут на чтение

В этой статье

Ограничьте доступ к реестру, назначив частные IP-адреса виртуальной сети конечным точкам реестра и используя частную ссылку Azure. Сетевой трафик между клиентами в виртуальной сети и частными конечными точками реестра проходит через виртуальную сеть и частный канал в магистральной сети Microsoft, исключая доступ из общедоступного Интернета.Private Link также обеспечивает доступ к частному реестру из локальной сети через частный пиринг Azure ExpressRoute или шлюз VPN.

Вы можете настроить параметры DNS для частных конечных точек реестра, чтобы параметры соответствовали выделенному частному IP-адресу реестра. При настройке DNS клиенты и службы в сети могут продолжать получать доступ к реестру с полным доменным именем реестра, например myregistry.azurecr.io .

Эта функция доступна на уровне службы реестра контейнеров Premium .В настоящее время для реестра можно настроить не более 10 частных конечных точек. Дополнительные сведения об уровнях и ограничениях служб реестра см. В разделе Уровни реестра контейнеров Azure.

Важно

  • Центр безопасности Azure в настоящее время не может выполнять сканирование уязвимостей образа в реестре, который ограничивает доступ к частным конечным точкам, выбранным подсетям или IP-адресам.
  • Экземпляры
  • некоторых служб Azure, включая службы Azure DevOps, веб-приложения и экземпляры контейнеров Azure, также не могут получить доступ к сетевому реестру контейнеров.

Предварительные требования

  • Чтобы использовать шаги Azure CLI, описанные в этой статье, рекомендуется Azure CLI версии 2.6.0 или более поздней. Если вам нужно установить или обновить, см. Установка Azure CLI. Или запустите в Azure Cloud Shell.

  • Если у вас еще нет реестра контейнеров, создайте его (требуется уровень Premium) и импортируйте образец общедоступного образа, например mcr.microsoft.com/hello-world , из реестра контейнеров Microsoft. Например, используйте портал Azure или Azure CLI для создания реестра.

  • Чтобы настроить доступ к реестру с использованием частной ссылки в другой подписке Azure, вам необходимо зарегистрировать поставщика ресурсов для реестра контейнеров Azure в этой подписке. Например:

      az account set --subscription <Имя или идентификатор подписки частной ссылки> az поставщик реестра - пространство имен Microsoft.ContainerRegistry  

В примерах интерфейса командной строки Azure в этой статье используются следующие переменные среды.Подставьте значения, подходящие для вашей среды. Все примеры отформатированы для оболочки Bash:

  REGISTRY_NAME =  REGISTRY_LOCATION =  # регион Azure, например westeurope, где был создан реестр RESOURCE_GROUP = <имя-группы-ресурсов> VM_NAME = <имя-виртуальной-машины>  

Создание виртуальной машины с поддержкой Docker

В целях тестирования используйте виртуальную машину Ubuntu с поддержкой Docker для доступа к реестру контейнеров Azure.Чтобы использовать аутентификацию Azure Active Directory в реестре, также установите Azure CLI на виртуальную машину. Если у вас уже есть виртуальная машина Azure, пропустите этот шаг создания.

Вы можете использовать одну и ту же группу ресурсов для своей виртуальной машины и своего реестра контейнеров. Эта настройка упрощает очистку в конце, но не требуется. Если вы решили создать отдельную группу ресурсов для виртуальной машины и виртуальной сети, запустите az group create. В следующем примере предполагается, что вы установили переменные среды для имени группы ресурсов и расположения в реестре:

  az group create --name $ RESOURCE_GROUP --location $ REGISTRY_LOCATION  

Теперь разверните виртуальную машину Ubuntu Azure по умолчанию с помощью команды az vm create.В следующем примере создается виртуальная машина с именем myDockerVM .

  VM_NAME = myDockerVM az vm create \ --resource-group $ RESOURCE_GROUP \ --name $ VM_NAME \ --image UbuntuLTS \ --admin-username azureuser \ --generate-ssh-keys  

Создание виртуальной машины занимает несколько минут. Когда команда завершится, обратите внимание на publicIpAddress , отображаемый Azure CLI. Используйте этот адрес для SSH-подключений к виртуальной машине.

Установите Docker на ВМ

После запуска виртуальной машины установите SSH-подключение к виртуальной машине.Замените publicIpAddress общедоступным IP-адресом вашей виртуальной машины.

  ssh azureuser @ publicIpAddress  

Выполните следующие команды, чтобы установить Docker на виртуальную машину Ubuntu:

  sudo apt-get update sudo apt install docker.io -y  

После установки выполните следующую команду, чтобы убедиться, что Docker правильно работает на виртуальной машине:

  sudo docker run -it привет-мир  

Выход:

  Привет от Докера! Это сообщение показывает, что ваша установка работает правильно.[...]  

Установите Azure CLI

Следуйте инструкциям в разделе Установка Azure CLI с apt, чтобы установить Azure CLI на вашей виртуальной машине Ubuntu. Например:

  curl -sL http://aka.ms/InstallAzureCLIDeb | sudo bash  

Выйти из SSH-соединения.

Настройка частной ссылки - CLI

Получить имена сети и подсети

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

При создании виртуальной машины Azure по умолчанию создает виртуальную сеть в той же группе ресурсов. Имя виртуальной сети основано на имени виртуальной машины. Например, если вы назовете свою виртуальную машину myDockerVM , имя виртуальной сети по умолчанию будет myDockerVMVNET с подсетью myDockerVMSubnet .Задайте эти значения в переменных среды, выполнив команду az network vnet list:

  NETWORK_NAME = $ (az список сетевых vnet \ --resource-group $ RESOURCE_GROUP \ --query '[]. {Name: name}' --output tsv) SUBNET_NAME = $ (az список сетевых vnet \ --resource-group $ RESOURCE_GROUP \ --query '[]. {Подсеть: подсети [0] .name}' --output tsv) echo NETWORK_NAME = $ NETWORK_NAME echo SUBNET_NAME = $ SUBNET_NAME  

Отключить сетевые политики в подсети

Отключить сетевые политики, такие как группы безопасности сети, в подсети для частной конечной точки.Обновите конфигурацию подсети с помощью az network vnet subnet update:

  az обновление подсети сети vnet \ --name $ SUBNET_NAME \ --vnet-name $ NETWORK_NAME \ --resource-group $ RESOURCE_GROUP \ --disable-private-endpoint-network-политик  

Настроить частную зону DNS

Создайте частную зону DNS для частного домена реестра контейнеров Azure. На более поздних этапах вы создадите записи DNS для своего домена реестра в этой зоне DNS.

Чтобы использовать частную зону для переопределения разрешения DNS по умолчанию для реестра контейнеров Azure, зона должна называться privatelink.azurecr.io . Выполните следующую команду az network private-dns zone create, чтобы создать частную зону:

  az network private-dns zone create \ --resource-group $ RESOURCE_GROUP \ --name "privatelink.azurecr.io"  

Создать ссылку ассоциации

Запустите команду az network private-dns link vnet create, чтобы связать частную зону с виртуальной сетью. В этом примере создается ссылка myDNSLink .

  az network private-dns link vnet create \ --resource-group $ RESOURCE_GROUP \ - имя-зоны "приватная ссылка.azurecr.io "\ --name MyDNSLink \ --virtual-network $ NETWORK_NAME \ --registration-enabled false  

Создание конечной точки частного реестра

В этом разделе создайте частную конечную точку реестра в виртуальной сети. Сначала получите идентификатор ресурса своего реестра:

  REGISTRY_ID = $ (az acr show --name $ REGISTRY_NAME \ --query 'id' - вывод tsv)  

Запустите команду az network private-endpoint create, чтобы создать частную конечную точку реестра.

В следующем примере создается конечная точка myPrivateEndpoint и служебное соединение myConnection . Чтобы указать ресурс реестра контейнеров для конечной точки, передайте --group-ids registry :

  az создание частной конечной точки сети \ --name myPrivateEndpoint \ --resource-group $ RESOURCE_GROUP \ --vnet-name $ NETWORK_NAME \ --subnet $ SUBNET_NAME \ --private-connection-resource-id $ REGISTRY_ID \ --group-ids registry \ - имя-соединения myConnection  

Получить частные IP-адреса

Запустите az network private-endpoint show, чтобы запросить у конечной точки идентификатор сетевого интерфейса:

  NETWORK_INTERFACE_ID = $ (az network private-endpoint show \ --name myPrivateEndpoint \ --resource-group $ RESOURCE_GROUP \ --query 'networkInterfaces [0].Я бы' \ --выход цв)  

В этом примере с сетевым интерфейсом связаны два частных IP-адреса для реестра контейнеров: один для самого реестра и один для конечной точки данных реестра. Следующие команды az resource show получают частные IP-адреса для реестра контейнеров и конечной точки данных реестра:

  PRIVATE_IP = $ (az resource show \ --ids $ NETWORK_INTERFACE_ID \ --api-версия 2019-04-01 \ --query 'properties.ipConfigurations [1].properties.privateIPAddress '\ --выход цв) DATA_ENDPOINT_PRIVATE_IP = $ (az ресурс показать \ --ids $ NETWORK_INTERFACE_ID \ --api-версия 2019-04-01 \ --query 'properties.ipConfigurations [0] .properties.privateIPAddress' \ --выход цв)  

Примечание

Если ваш реестр геореплицируется, запросите дополнительную конечную точку данных для каждой реплики реестра.

Создать записи DNS в частной зоне

Следующие команды создают записи DNS в частной зоне для конечной точки реестра и ее конечной точки данных.Например, если у вас есть реестр с именем myregistry в регионе westeurope , имена конечных точек будут myregistry.azurecr.io и myregistry.westeurope.data.azurecr.io .

Примечание

Если ваш реестр геореплицируется, создайте дополнительные записи DNS для каждого IP-адреса конечной точки данных реплики.

Сначала запустите az network private-dns record-set a create для создания пустых наборов записей A для конечной точки реестра и конечной точки данных:

  az network private-dns record-set a create \ --name $ REGISTRY_NAME \ --zone-name privatelink.azurecr.io \ - группа ресурсов $ RESOURCE_GROUP # Укажите регион реестра в имени конечной точки данных az network private-dns record-set a create \ --name $ {REGISTRY_NAME}. $ {REGISTRY_LOCATION} .data \ --zone-name privatelink.azurecr.io \ - группа ресурсов $ RESOURCE_GROUP  

Выполните команду add-record для сети z network private-dns record-set, чтобы создать записи A для конечной точки реестра и конечной точки данных:

  az network private-dns record-set add-record \ - имя-набора-записи $ REGISTRY_NAME \ --zone-name privatelink.azurecr.io \ --resource-group $ RESOURCE_GROUP \ --ipv4-адрес $ PRIVATE_IP # Укажите регион реестра в имени конечной точки данных az network private-dns record-set a add-record \ --record-set-name $ {REGISTRY_NAME}. $ {REGISTRY_LOCATION} .data \ --zone-name privatelink.azurecr.io \ --resource-group $ RESOURCE_GROUP \ --ipv4-адрес $ DATA_ENDPOINT_PRIVATE_IP  

Частная ссылка теперь настроена и готова к использованию.

Настроить приватную ссылку - портал

Установите частную ссылку при создании реестра или добавьте частную ссылку в существующий реестр.Следующие шаги предполагают, что у вас уже есть виртуальная сеть и подсеть, настроенная с виртуальной машиной для тестирования. Вы также можете создать новую виртуальную сеть и подсеть.

Создание частной конечной точки - новый реестр

  1. При создании реестра на портале на вкладке Basics в SKU выберите Premium .

  2. Выберите вкладку Networking .

  3. В Сетевое подключение выберите Частная конечная точка > + добавьте .

  4. Введите или выберите следующую информацию:

    Настройка Значение
    Подписка Выберите подписку.
    Группа ресурсов Введите имя существующей группы или создайте новую.
    Имя Введите уникальное имя.
    Подресурс Выбрать реестр
    Сеть
    Виртуальная сеть Выберите виртуальную сеть, в которой развернута ваша виртуальная машина, например myDockerVMVNET .
    Подсеть Выберите подсеть, например myDockerVMSubnet , в которой развернута ваша виртуальная машина.
    Интеграция частного DNS
    Интеграция с частной зоной DNS Выберите Да .
    Частная зона DNS Выбрать (Новый) privatelink.azurecr.io
  5. Настройте остальные параметры реестра, а затем выберите Review + Create .

Создание частной конечной точки - существующий реестр

  1. На портале перейдите в реестр контейнеров.

  2. В разделе Настройки выберите Сеть .

  3. На вкладке Частные конечные точки выберите + Частная конечная точка .

  4. На вкладке Basics введите или выберите следующую информацию:

    Настройка Значение
    Описание проекта
    Подписка Выберите подписку.
    Группа ресурсов Введите имя существующей группы или создайте новую.
    Сведения об экземпляре
    Имя Введите имя.
    Регион Выберите регион.
  5. Выберите Далее: Ресурс .

  6. Введите или выберите следующую информацию:

    Настройка Значение
    Способ подключения Выберите Подключиться к ресурсу Azure в моем каталоге .
    Подписка Выберите подписку.
    Тип ресурса Выберите Microsoft.ContainerRegistry / registries .
    Ресурс Выберите имя вашего реестра
    Целевой подресурс Выбрать реестр
  7. Выберите Далее: Конфигурация .

  8. Введите или выберите информацию:

    Настройка Значение
    Сеть
    Виртуальная сеть Выберите виртуальную сеть, в которой развернута ваша виртуальная машина, например myDockerVMVNET .
    Подсеть Выберите подсеть, например myDockerVMSubnet , в которой развернута ваша виртуальная машина.
    Интеграция частного DNS
    Интеграция с частной зоной DNS Выберите Да .
    Частная зона DNS Выбрать (Новый) privatelink.azurecr.io
  9. Выбрать Просмотр + создать .Вы попадаете на страницу Review + create , где Azure проверяет вашу конфигурацию.

  10. Когда вы увидите сообщение Проверка пройдена , выберите Создать .

После создания частной конечной точки настройки DNS в частной зоне отображаются на странице Частные конечные точки портала:

  1. На портале перейдите в реестр контейнеров и выберите Настройки > Сеть .
  2. На вкладке Частные конечные точки выберите созданную частную конечную точку.
  3. На странице Overview просмотрите настройки ссылки и пользовательские настройки DNS.

Ваша личная ссылка настроена и готова к использованию.

Отключить публичный доступ

Для многих сценариев отключите доступ к реестру из общедоступных сетей. Эта конфигурация предотвращает доступ клиентов за пределами виртуальной сети к конечным точкам реестра.

Отключить общий доступ - CLI

Чтобы отключить общий доступ с помощью Azure CLI, запустите az acr update и установите --public-network-enabled на false .

Примечание

Для аргумента с включенной общедоступной сетью требуется Azure CLI 2.6.0 или более поздней версии.

  az acr update --name $ REGISTRY_NAME --public-network-enabled false  

Отключить публичный доступ - портал

  1. На портале перейдите в реестр контейнеров и выберите Настройки > Сеть .
  2. На вкладке Общий доступ в Разрешить доступ к общедоступной сети выберите Отключено . Затем выберите Сохранить .

Подтвердить частное соединение

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

Чтобы проверить частное соединение, подключитесь по SSH к виртуальной машине, которую вы настроили в виртуальной сети.

Запустите такую ​​утилиту, как nslookup или dig , чтобы найти IP-адрес вашего реестра по частной ссылке. Например:

  dig $ REGISTRY_NAME.azurecr.io  

Пример выходных данных показывает IP-адрес реестра в адресном пространстве подсети:

  [...] ; << >> DiG 9.11.3-1ubuntu1.13-Ubuntu << >> myregistry.azurecr.io ;; глобальные параметры: + cmd ;; Получил ответ: ;; - >> HEADER << - код операции: QUERY, статус: NOERROR, id: 52155 ;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 2, АВТОРИТЕТ: 0, ДОПОЛНИТЕЛЬНО: 1 ;; ОПТИЧЕСКАЯ ПСЕВДОЗЕКЦИЯ: ; EDNS: версия: 0, флаги :; UDP: 65494 ;; РАЗДЕЛ ВОПРОСА: ; myregistry.azurecr.io. В ;; РАЗДЕЛ ОТВЕТА: myregistry.azurecr.io. 1783 В CNAME myregistry.privatelink.azurecr.io. myregistry.privatelink.azurecr.io. 10 В 10.0.0.7 [...]  

Сравните этот результат с общедоступным IP-адресом в выходных данных dig для того же реестра через общедоступную конечную точку:

  [...] ;; РАЗДЕЛ ОТВЕТА: myregistry.azurecr.io. 2881 В CNAME myregistry.privatelink.azurecr.io. myregistry.privatelink.azurecr.io. 2881 В CNAME xxxx.xx.azcr.io. xxxx.xx.azcr.io. 300 В CNAME xxxx-xxx-reg.trafficmanager.net. xxxx-xxx-reg.trafficmanager.net. 300 В CNAME xxxx.westeurope.cloudapp.azure.com. xxxx.westeurope.cloudapp.azure.com. 10 В А 20.45.122.144 [...]  

Операции реестра по частной ссылке

Также убедитесь, что вы можете выполнять операции реестра с виртуальной машины в подсети. Установите SSH-соединение с вашей виртуальной машиной и запустите az acr login, чтобы войти в реестр. В зависимости от конфигурации вашей виртуальной машины вам может потребоваться префикс sudo для следующих команд.

  az acr логин - имя $ REGISTRY_NAME  

Выполните операции реестра, такие как docker pull , чтобы получить образец образа из реестра. Замените hello-world: v1 изображением и тегом, подходящим для вашего реестра, с префиксом имени сервера входа в реестр (все в нижнем регистре):

  docker pull myregistry.azurecr.io/hello-world:v1  

Docker успешно загружает образ в виртуальную машину.

Управление подключениями к частным конечным точкам

Управляйте подключениями частных конечных точек реестра с помощью портала Azure или с помощью команд в группе команд az acr private-endpoint-connection.К операциям относятся утверждение, удаление, перечисление, отклонение или отображение сведений о подключениях частных конечных точек реестра.

Например, чтобы вывести список подключений частных конечных точек реестра, выполните команду az acr private-endpoint-connection list. Например:

  az acr список частных конечных точек \ --registry-name $ REGISTRY_NAME  

Когда вы настраиваете подключение к частной конечной точке с помощью шагов, описанных в этой статье, реестр автоматически принимает подключения от клиентов и служб, имеющих разрешения Azure RBAC в реестре.Вы можете настроить конечную точку так, чтобы требовать ручного утверждения подключений. Для получения информации о том, как утверждать и отклонять подключения к частной конечной точке, см. Управление подключением частной конечной точки.

Добавить записи зоны для реплик

Как показано в этой статье, когда вы добавляете подключение к частной конечной точке в реестр, вы создаете записи DNS в зоне privatelink.azurecr.io для реестра и его конечных точек данных в регионах, где реплицируется реестр.

Если вы позже добавите новую реплику, вам необходимо вручную добавить новую запись зоны для конечной точки данных в этом регионе.Например, если вы создаете реплику myregistry в расположении northeurope , добавьте запись зоны для myregistry.northeurope.data.azurecr.io . Инструкции см. В разделе Создание записей DNS в частной зоне этой статьи.

Параметры конфигурации DNS

Частная конечная точка в этом примере интегрируется с частной зоной DNS, связанной с базовой виртуальной сетью. Эта настройка использует предоставленную Azure службу DNS напрямую для преобразования общедоступного полного доменного имени реестра в его частный IP-адрес в виртуальной сети.

Частная ссылка поддерживает дополнительные сценарии настройки DNS, которые используют частную зону, в том числе с настраиваемыми решениями DNS. Например, у вас может быть собственное решение DNS, развернутое в виртуальной сети или локально в сети, которую вы подключаетесь к виртуальной сети с помощью шлюза VPN или Azure ExpressRoute.

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

Важно

Если для обеспечения высокой доступности вы создали частные конечные точки в нескольких регионах, мы рекомендуем использовать отдельную группу ресурсов в каждом регионе и разместить в ней виртуальную сеть и связанную частную зону DNS. Эта конфигурация также предотвращает непредсказуемое разрешение DNS, вызванное совместным использованием одной и той же частной зоны DNS.

Очистить ресурсы

Если вы создали все ресурсы Azure в одной группе ресурсов и больше не нуждаетесь в них, вы можете при желании удалить ресурсы с помощью одной команды удаления группы z:

  az group delete --name $ RESOURCE_GROUP  

Чтобы очистить ресурсы портала, перейдите к своей группе ресурсов. После загрузки группы ресурсов щелкните Удалить группу ресурсов , чтобы удалить группу ресурсов и ресурсы, хранящиеся в ней.

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

.

Как вручную передать профиль пользователя от одного пользователя другому

Введение

Принадлежность компьютера может меняться по-разному:

  • Из рабочей группы в домен.
  • Из домена в рабочую группу.
  • Из одного домена в другой.

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

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

Аналогично, когда компьютер покидает один домен и присоединяется к другому, пользователям, использующим его, предоставляются новые учетные записи в новом домене, и эти учетные записи не могут получить доступ к профилям учетных записей из старого домена.

Излишне говорить, что это большая проблема для конечных пользователей. В профиле хранится множество настроек, и перенастраивать все это в лучшем случае утомительно. Итак, как мы можем смягчить эту проблему для наших пользователей?

HKEY_USERS, HKEY_CURRENT_USER и NTUSER.DAT

Регистр состоит из нескольких так называемых ульев; HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER и т. Д.Чтобы решить проблему с профилями наших пользователей, нам нужно узнать о кустах HKEY_USERS и HKEY_CURRENT_USER.

HKEY_USERS

Поддерево HKEY_USERS содержит все активно загружаемые профили пользователей. HKEY_USERS имеет как минимум три ключа:

  • .DEFAULT, в котором хранится профиль, используемый, когда пользователи не вошли в систему (например, когда отображается запрос входа CTRL + ALT + DELETE).
  • Подключ, названный в честь идентификатора безопасности (SID) текущего локального пользователя.Этот подраздел содержит профиль текущего пользователя. Если пользователь входит в систему удаленно, данные профиля пользователя сохраняются в реестре локального компьютера пользователя. Данные в HKEY_USERS \ SID также отображаются в HKEY_CURRENT_USER.
  • Подраздел, названный в честь идентификатора безопасности (SID) текущего локального пользователя с суффиксом _Classes. Этот подраздел содержит классы текущего пользователя. Данные в HKEY_USERS \ SID _Classes также содержатся в HKEY_CLASSES_ROOT.

Рисунок 1 HKEY_USERS

На картинке выше 5 загруженных профилей пользователей:

  • . ПО УМОЛЧАНИЮ
  • S-1-5-18 (NT AUTHORITY \ SYSTEM), который является локальной системой.
  • S-1-5-19 (NT AUTHORITY \ LOCAL SERVICE), которая является местной службой.
  • S-1-5-20 (NT AUTHORITY \ NETWORK SERVICE), которая является сетевой службой.
  • S-1-5-21-1777867841-237173671-2295844794-1001, которая является локальной учетной записью пользователя (в данном случае называется OldUser).

Если другой пользователь должен был войти на компьютер, либо через быстрое переключение пользователей, либо если текущий пользователь запускает программу как другой пользователь, новый SID появится под HKEY_USERS, представляющим куст реестра нового пользователя. Когда пользователь выходит из системы, его улей выгружается из HKEY_USERS.

HKEY_CURRENT_USER

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

Поддерево HKEY_CURRENT USER не содержит никаких данных. Он просто хранит указатель на содержимое HKEY_USERS \ Security ID (SID) текущего подключа пользователя. Следовательно, содержимое этого подраздела также отображается в HKEY_CURRENT_USER, и его можно просматривать и изменять в любом месте. Это поддерево обеспечивает более легкий доступ к данным.

Новое поддерево HKEY_CURRENT_USER создается каждый раз, когда пользователь входит в систему. Данные для поддерева берутся из профиля текущего пользователя.Если профиль недоступен, поддерево создается из настроек профиля пользователя, установленных для пользователя по умолчанию, которые хранятся в% Systemdrive% \ Documents and Settings \ Default User \ Ntuser.dat (Windows <5.1) или в% systemdrive% \ Users \ Default \ ntuser.dat (Windows 6.0 <).

Рисунок 2 HKEY_CURRENT_USER

NTUSER.DAT

Каждый куст реестра пользователя хранится в профиле пользователя в файле NTUSER.DAT. Когда пользователь входит в систему, содержимое NTUSER.DAT в каталоге профиля этого пользователя загружается в HKEY_USERS, а также отображается в HKEY_CURRENT_USER. Внутри сеанса HKEY_CURRENT_USER всегда сопоставляется с реестром пользователя, который вошел в этот сеанс. Если пользователь запускает программу от имени другого пользователя, сеанс, созданный для этой программы и имеющий токен безопасности другого пользователя, увидит свои собственные параметры реестра в HKEY_CURRENT_USER.

Профили и разрешения

Как мы установили, куст реестра пользователя находится в каталоге профиля пользователя и хранится в NTUSER.DAT. Но профиль содержит гораздо больше, чем просто куст реестра. Он также состоит из нескольких каталогов, содержащих все, от писем до избранных.

Рисунок 3 Типичный профиль пользователя в Windows Vista

Пользователь, владеющий профилем, получает полный доступ к нему при создании как в кусте в NTUSER.DAT, так и в файловой системе.

Рисунок 4 Разрешения NTFS и разрешения реестра в профиле пользователя

Улей HKEY_LOCAL_MACHINE содержит раздел для сопоставления пользовательских SID (и GUID) с правильной папкой файловой системы, содержащей профиль.Путь к ключу - HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList .

Рисунок 5 Клавиша ProfileList

Ключ ProfileList содержит список всех SID, которые когда-либо входили в систему, а под ключом SID значение ProfileImagePath указывает на расположение профиля этого пользователя в файловой системе.

Обратите внимание на значение Sid, которое содержит шестнадцатеричное представление SID пользователя, владеющего профилем.

Компьютеры, присоединенные к домену, также имеют ключ ProfileGuid на том же уровне, что и ключ ProfileList . Ключ ProfileGuid содержит сопоставления GUID и SID для профилей.

Перенос профиля

Из того, что мы узнали о ключе ProfileList , передача профиля другому пользователю должна быть такой же простой, как изменение значения ProfileImagePath для нового пользователя, чтобы он указывал на каталог профиля старого пользователя.К сожалению, это не сработает, даже если пользователь, получающий профиль, является членом локальной группы Administrators . Мы должны изменить как реестр, так и права доступа к файлу NTFS, чтобы новый пользователь использовал старый профиль. Вот что вы делаете:

  1. Войдите в систему как новый пользователь.
    Это создало каталог профилей и записи под ключом ProfileList , указывающие на этот новый каталог профилей.
  2. Войдите в систему как пользователь, который является членом локальной группы Администраторы .Это не может быть ни пользователь, профиль которого мы передаем, ни пользователь, который должен получить этот профиль.
  3. Измените разрешения NTFS профиля, предоставив новому пользователю Полный доступ разрешений на все файлы и подпапки. Это проще всего сделать с помощью командной строки с повышенными привилегиями и icacls.exe (или другого редактора разрешений по выбору).
    icacls.exe c: \ Users \ olduser / grant VISTA01 \ newuser: F / T / C / Q
  4. Загрузите куст NTUSER.DAT из каталога профиля старого пользователя в куст HKEY_USERS.Либо используйте графический интерфейс, либо эту команду:
    reg load HKU \ test c: \ users \ olduser \ ntuser.dat
  5. Предоставьте пользователю, получающему профиль Полный доступ, для всего улья. GUI или команда:
    subinacl / noverbose / subkeyreg HKEY_USERS \ test / grant = vista01 \ olduser = F
    (Примечание: существует проблема с SubinACL.exe, из-за которой он не может правильно применять наследование. Приведенная выше команда позволяет обойти это, добавив ACE ко всем ключам.)
  6. Выгрузить улей. Либо через графический интерфейс, либо с помощью этой команды:
    reg unload HKU \ test
  7. Обновите значение ProfileImagePath под SID нового пользователя в ключе ProfileList , чтобы оно указывало на папку профиля старого пользователя.
  8. Войдите в систему как новый пользователь.
  9. Когда вы убедитесь, что профиль работает должным образом, вы можете удалить каталог профиля нового пользователя (который использовался только один раз) и переименовать старый каталог профиля в имя пользователя нового пользователя. Не забудьте снова обновить значение ProfileImagePath , если вы это сделаете.

Другой способ

Windows также имеет более удобный способ передачи профиля пользователя от одного пользователя другому. Доступ к нему осуществляется через окно «Свойства системы».

Кнопка «Настройки» открывает список всех профилей, хранящихся на компьютере:

Здесь мы можем использовать кнопку Копировать в… , чтобы скопировать профиль от одного пользователя к другому.

Нам также нужно изменить, кому разрешено использовать профиль, используя кнопку Изменить внизу диалогового окна.

Если папка, в которую мы копируем профиль, уже существует, мы получаем предупреждение:

После завершения процесса вы можете войти в систему как новый пользователь со старым профилем.

Этот метод выполняет все изменения, которые делает первый метод, за исключением изменения чего-либо в ключах ProfileList . В этом случае мы копируем старый профиль в папку профиля нового пользователя, и поэтому нет необходимости что-либо менять в реестре. Кроме того, он делает то, что я показал раньше; измените права доступа к файлам и разрешениям реестра внутри NTUSER.DAT .

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

Какой метод вы предпочтете, зависит только от вас, но я выберу номер 1.

Что вы теряете?

Это элементы старого профиля, к которым вы теряете доступ от нового пользователя:

Дополнительная информация

.

Как навсегда добавить закрытый ключ с помощью ssh-add в Ubuntu?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Зашифруйте реестр с помощью ключа, управляемого клиентом - Реестр контейнеров Azure

  • 15 минут на чтение

В этой статье

Когда вы храните изображения и другие артефакты в реестре контейнеров Azure, Azure автоматически шифрует хранимое содержимое реестра с помощью ключей, управляемых службой. Вы можете дополнить шифрование по умолчанию дополнительным уровнем шифрования, используя ключ, который вы создаете и управляете в Azure Key Vault (ключ, управляемый клиентом).В этой статье представлены пошаговые инструкции с использованием Azure CLI и портала Azure.

Шифрование на стороне сервера с ключами, управляемыми клиентом, поддерживается за счет интеграции с Azure Key Vault:

  • Вы можете создать свои собственные ключи шифрования и сохранить их в хранилище ключей или использовать API Azure Key Vault для создания ключей.
  • С помощью Azure Key Vault вы также можете проводить аудит использования ключей.
  • Реестр контейнеров Azure поддерживает автоматическую ротацию ключей шифрования реестра, когда новая версия ключа доступна в Azure Key Vault.Вы также можете вручную повернуть ключи шифрования реестра.

Эта функция доступна на уровне службы реестра контейнеров Premium . Дополнительные сведения об уровнях и ограничениях служб реестра см. В разделе Уровни службы реестра контейнеров Azure.

Что нужно знать

  • В настоящее время ключ, управляемый клиентом, можно включить только при создании реестра. При включении ключа вы настраиваете , назначенное пользователем управляемое удостоверение , для доступа к хранилищу ключей.
  • После включения шифрования с ключом, управляемым клиентом в реестре, вы не можете отключить шифрование.
  • Реестр контейнеров
  • Azure поддерживает только ключи RSA или RSA-HSM. Клавиши эллиптической кривой в настоящее время не поддерживаются.
  • Доверие к содержимому в настоящее время не поддерживается в реестре, зашифрованном с помощью ключа, управляемого клиентом.
  • В реестре, зашифрованном с помощью ключа, управляемого клиентом, журналы выполнения для задач ACR в настоящее время хранятся только 24 часа. Если вам нужно хранить журналы в течение более длительного периода, см. Руководство по экспорту и хранению журналов выполнения задач.

Примечание

Если доступ к вашему хранилищу ключей Azure ограничен с использованием виртуальной сети с брандмауэром Key Vault, необходимы дополнительные действия по настройке. После создания реестра и включения ключа, управляемого клиентом, настройте доступ к ключу, используя управляемое удостоверение , назначенное системой , и настройте реестр для обхода брандмауэра Key Vault. Сначала выполните действия, описанные в этой статье, чтобы включить шифрование с помощью ключа, управляемого клиентом, а затем просмотрите руководство для расширенного сценария: брандмауэр Key Vault далее в этой статье.

Автоматическое или ручное обновление ключевых версий

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

При настройке шифрования реестра с помощью ключа, управляемого клиентом, у вас есть два варианта обновления версии ключа, используемой для шифрования:

  • Автоматически обновлять версию ключа - чтобы автоматически обновлять управляемый клиентом ключ, когда новая версия доступна в Azure Key Vault, опустите версию ключа при включении шифрования реестра с помощью ключа, управляемого клиентом.Если реестр зашифрован ключом без версий, реестр контейнеров Azure регулярно проверяет хранилище ключей на наличие новой версии ключа и обновляет ключ, управляемый клиентом, в течение 1 часа. Реестр контейнеров Azure автоматически использует последнюю версию ключа.

  • Обновление версии ключа вручную - Чтобы использовать определенную версию ключа для шифрования реестра, укажите эту версию ключа при включении шифрования реестра с помощью ключа, управляемого клиентом. Когда реестр зашифрован с использованием определенной версии ключа, реестр контейнеров Azure использует эту версию для шифрования, пока вы вручную не измените ключ, управляемый клиентом.

Дополнительные сведения см. В разделах «Выбор идентификатора ключа с версией ключа или без нее» и «Обновление версии ключа» далее в этой статье.

Предварительные требования

Чтобы использовать шаги Azure CLI, описанные в этой статье, вам потребуется Azure CLI версии 2.2.0 или более поздней либо Azure Cloud Shell. Если вам нужно установить или обновить, см. Установка Azure CLI.

Включить управляемый клиентом ключ - CLI

Создать группу ресурсов

При необходимости запустите команду az group create, чтобы создать группу ресурсов для создания хранилища ключей, реестра контейнеров и других необходимых ресурсов.

  az group create --name  --location   

Создать управляемую идентификацию, назначенную пользователем

Создайте назначенное пользователем управляемое удостоверение для ресурсов Azure с помощью команды az identity create. Этот идентификатор будет использоваться вашим реестром для доступа к службе Key Vault.

  az identity create \ --resource-group <имя-группы-ресурсов> \ --name <имя-управляемой-идентичности>  

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

  { "clientId": "xxxx2bac-xxxx-xxxx-xxxx-192cxxxx6273", "clientSecretUrl": "http://control-eastus.identity.azure.net/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidenttiname=xxx -xxxx-xxxx-xxxx-xxxxxxxxxxxx & oid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx & aid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ", «id»: «/ subscriptions / xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / resourcegroups / myresourcegroup / provider / Microsoft.ManagedIdentity / userAssignedIdentities / myresourcegroup ", "location": "eastus", "name": "myidentityname", "primaryId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "resourceGroup": "myresourcegroup", "теги": {}, «tenantId»: «xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx», "тип": "Microsoft.ManagedIdentity / userAssignedIdentities" }  

Для удобства сохраните эти значения в переменных среды:

  identityID = $ (az identity show --resource-group  --name  --query 'id' --output tsv) identityPrincipalID = $ (az identity show --resource-group <имя-группы-ресурса> --name  --query 'PrincipalId' --output tsv)  

Создать хранилище ключей

Создайте хранилище ключей с помощью az keyvault create для хранения управляемого клиентом ключа для шифрования реестра.

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

  az keyvault create --name  \ --resource-group <имя-группы-ресурсов> \ - включить защиту от продувки  

Для использования на более поздних этапах получите идентификатор ресурса хранилища ключей:

  keyvaultID = $ (az keyvault show --resource-group <имя-группы-ресурсов> --name <имя-хранилища-ключа> --query 'id' --output tsv)  

Включить доступ к хранилищу ключей

Настройте политику для хранилища ключей, чтобы удостоверение могло получить к нему доступ.В следующей команде az keyvault set-policy вы передаете идентификатор участника созданного вами управляемого удостоверения, сохраненного ранее в переменной среды. Установите права доступа на , получите , unwrapKey и wrapKey .

  az keyvault набор политик \ --resource-group <имя-группы-ресурсов> \ --name <имя-хранилища ключей> \ --object-id $ identityPrincipalID \ --key-permissions получить unwrapKey wrapKey  

В качестве альтернативы можно использовать Azure RBAC для Key Vault (предварительная версия), чтобы назначить удостоверению разрешения на доступ к хранилищу ключей.Например, назначьте удостоверению роль шифрования службы шифрования Key Vault с помощью команды создания назначения роли az:

  az назначение роли создать --assignee $ identityPrincipalID \ --role «Шифрование службы шифрования Key Vault (предварительная версия)» \ --scope $ keyvaultID  

Создать ключ и получить ID ключа

Запустите команду az keyvault key create, чтобы создать ключ в хранилище ключей.

  az keyvault ключ создать \ --name <имя-ключа> \ --vault-name <имя-ключа-хранилища>  

В выводе команды запишите идентификатор ключа: kid .Вы используете этот идентификатор на следующем шаге:

  [...] "key": { "crv": ноль, "d": ноль, "dp": ноль, "dq": ноль, «е»: «АКАБ», «k»: ноль, "keyOps": [ "зашифровать", "расшифровать", "подписать", "проверить", "wrapKey", "unwrapKey" ], "kid": "http://mykeyvault.vault.azure.net/keys/mykey/ ", «кты»: «ЮАР», [...]  

Выберите идентификатор ключа с ключом или без ключа версии

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

Ручная ротация ключа - идентификатор ключа с версией

При использовании для шифрования реестра с помощью ключа, управляемого клиентом, этот ключ позволяет только ручную ротацию ключей в реестре контейнеров Azure.

В этом примере хранится свойство kid ключа:

  keyID = $ (az keyvault key show \ --name  \ - имя-хранилища <имя-хранилища> \ --query 'key.kid' --output tsv)  
Автоматическая ротация ключей - идентификатор ключа без версии

При использовании для шифрования реестра с помощью ключа, управляемого клиентом, этот ключ включает автоматическую ротацию ключей при обнаружении новой версии ключа в Azure Key Vault./] * $ // ")

Создать реестр с ключом, управляемым клиентом

Запустите команду az acr create, чтобы создать реестр на уровне обслуживания Premium и включить ключ, управляемый клиентом. Передайте идентификатор управляемой личности и идентификатор ключа, ранее сохраненные в переменных среды:

  az acr создать \ --resource-group <имя-группы-ресурсов> \ --name  \ --identity $ identityID \ - ключ-ключ шифрования $ keyID \ --ску Премиум  

Показать статус шифрования

Чтобы показать, включено ли шифрование реестра с помощью ключа, управляемого клиентом, запустите команду az acr encryption show:

  az acr encryption show --name <имя-реестра>  

В зависимости от ключа, используемого для шифрования реестра, вывод будет примерно таким:

  { "keyVaultProperties": { "identity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", «keyIdentifier»: «http: // myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789 ... ", "versionedKeyIdentifier": "http: //myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789 ...", "keyRotationEnabled": правда, "lastKeyRotationTimestamp": xxxxxxxx }, "статус": "включен" }  

Включить ключ, управляемый клиентом - портал

Создание управляемого удостоверения

Создайте назначенное пользователем управляемое удостоверение для ресурсов Azure на портале Azure. Инструкции см. В разделе Создание идентификатора, назначенного пользователем.

Вы используете имя личности на более поздних этапах.

Создать хранилище ключей

Инструкции по созданию хранилища ключей см. В разделе Краткое руководство: создание хранилища ключей с помощью портала Azure.

При создании хранилища ключей для ключа, управляемого клиентом, на вкладке Basics включите параметр Purge protection . Этот параметр помогает предотвратить потерю данных из-за случайного удаления ключей или хранилища ключей.

Включить доступ к хранилищу ключей

Настройте политику для хранилища ключей, чтобы удостоверение могло получить к нему доступ.

  1. Перейдите в хранилище ключей.
  2. Выберите Настройки > Политики доступа> + Добавить политику доступа .
  3. Выберите Key permissions и выберите Get , Unwrap Key и Wrap Key .
  4. В Выберите принципала выберите имя ресурса вашего управляемого пользователем удостоверения.
  5. Выберите Добавить , затем выберите Сохранить .

В качестве альтернативы можно использовать Azure RBAC для Key Vault (предварительная версия), чтобы назначить удостоверению разрешения на доступ к хранилищу ключей.Например, назначьте удостоверению роль шифрования службы шифрования Key Vault.

  1. Перейдите в хранилище ключей.
  2. Выберите Контроль доступа (IAM) > + Добавить > Добавить назначение роли .
  3. В окне Добавить назначение роли :
    1. Выберите Шифрование службы шифрования Key Vault (предварительная версия) роль.
    2. Назначьте доступ к Управляемый идентификатор, назначенный пользователем .
    3. Выберите имя ресурса вашего управляемого пользователем удостоверения и выберите Сохранить .

Создать ключ (необязательно)

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

  1. Перейдите в хранилище ключей.
  2. Выберите Настройки > Ключей .
  3. Выберите + Создать / импортировать и введите уникальное имя для ключа.
  4. Примите остальные значения по умолчанию и выберите Создать .
  5. После создания выберите ключ, а затем выберите текущую версию. Скопируйте идентификатор ключа для версии ключа.

Создать реестр контейнеров Azure

  1. Выберите Создать ресурс > Контейнеры > Реестр контейнеров .
  2. На вкладке Basics выберите или создайте группу ресурсов и введите имя реестра. В SKU выберите Premium .
  3. На вкладке Шифрование в Ключ, управляемый клиентом , выберите Включено .
  4. В Identity выберите созданный управляемый идентификатор.
  5. В Encryption выберите один из следующих вариантов:
    • Выберите Выберите из Key Vault и выберите существующее хранилище ключей и ключ или Создайте новый . Выбранный вами ключ не версионирован и включает автоматическую ротацию ключей.
    • Выберите Введите URI ключа и напрямую укажите идентификатор ключа. Вы можете предоставить либо URI ключа с версией (для ключа, который должен быть повернут вручную), либо URI ключа без версии (который включает автоматическую ротацию ключей).
  6. На вкладке Encryption выберите Review + create .
  7. Выберите Создать , чтобы развернуть экземпляр реестра.

Чтобы увидеть статус шифрования вашего реестра на портале, перейдите в реестр. В разделе Настройки выберите Шифрование .

Включить управляемый клиентом ключ - шаблон

Вы также можете использовать шаблон Resource Manager для создания реестра и включения шифрования с ключом, управляемым клиентом.

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

  { «$ schema»: «http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#», "contentVersion": "1.0.0.0", "parameters": { "vault_name": { "значение по умолчанию": "", "тип": "Строка" }, "имя_регистра": { "значение по умолчанию": "", "тип": "Строка" }, "identity_name": { "значение по умолчанию": "", "тип": "Строка" }, "kek_id": { "тип": "Строка" } }, "переменные": {}, "Ресурсы": [ { "тип": "Microsoft.ContainerRegistry / реестры ", "apiVersion": "2019-12-01-превью", "name": "[параметры ('имя_реестра')]", "location": "[resourceGroup (). location]", "sku": { "name": "Премиум", «уровень»: «Премиум» }, "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[resourceID ('Microsoft.ManagedIdentity / userAssignedIdentities', parameters ('identity_name'))]»: {} } }, "зависит от": [ "[resourceId ('Microsoft.ManagedIdentity / userAssignedIdentities ', parameters (' identity_name '))] " ], "properties": { "adminUserEnabled": ложь, "encryption": { "статус": "включен", "keyVaultProperties": { "identity": "[ссылка (resourceId ('Microsoft.ManagedIdentity / userAssignedIdentities', parameters ('identity_name')), '2018-11-30'). clientId]", "KeyIdentifier": "[параметры ('kek_id')]" } }, "networkRuleSet": { "defaultAction": "Разрешить", "virtualNetworkRules": [], "ipRules": [] }, "policy": { "quarantinePolicy": { "статус": "отключен" }, "trustPolicy": { "тип": "Нотариус", "статус": "отключен" }, "Политика удержания": { «дней»: 7, "статус": "отключен" } } } }, { "тип": "Microsoft.KeyVault / vaults / accessPolicies ", «apiVersion»: «2018-02-14», "name": "[concat (parameters ('vault_name'), '/ add')]", "зависит от": [ "[resourceId ('Microsoft.ManagedIdentity / userAssignedIdentities', parameters ('identity_name'))]» ], "properties": { "accessPolicies": [ { "tenantId": "[подписка (). tenantId]", «objectId»: «[ссылка (resourceId ('Microsoft.ManagedIdentity / userAssignedIdentities', parameters ('identity_name')), '2018-11-30').PrincipalId] ", "разрешения": { "ключи": [ "получить", "unwrapKey", "wrapKey" ] } } ] } }, { "тип": "Microsoft.ManagedIdentity / userAssignedIdentities", «apiVersion»: «2018-11-30», "name": "[параметры ('identity_name')]", "location": "[resourceGroup (). location]" } ] }  

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

  • Хранилище ключей, обозначенное именем
  • Ключ хранилища ключей, идентифицируемый идентификатором ключа

Выполните следующую команду az развертывания группы create, чтобы создать реестр с использованием предыдущего файла шаблона.Где указано, укажите новое имя реестра и имя управляемого удостоверения, а также имя хранилища ключей и идентификатор ключа, который вы создали.

  az создание группы развертывания \ --resource-group <имя-группы-ресурсов> \ --template-файл CMKtemplate.json \ --параметры \ имя_регистра = <имя-реестра> \ identity_name = <управляемый-идентификатор> \ vault_name = <имя-ключа-хранилища> \ kek_id =   

Показать статус шифрования

Чтобы показать статус шифрования реестра, выполните команду az acr encryption show:

  az acr encryption show --name <имя-реестра>  

Используйте реестр

После включения ключа, управляемого клиентом, в реестре вы можете выполнять те же операции с реестром, которые вы выполняете в реестре, который не зашифрован с помощью ключа, управляемого клиентом.Например, вы можете пройти аутентификацию в реестре и отправить образы Docker. См. Примеры команд в разделе «Нажать и потянуть изображение».

Поверните ключ

Обновите версию ключа в Azure Key Vault или создайте новый ключ, а затем обновите реестр, чтобы зашифровать данные с помощью этого ключа. Эти действия можно выполнить с помощью Azure CLI или на портале.

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

Примечание

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

Обновить ключ версии

Распространенным сценарием является обновление версии ключа, используемого в качестве ключа, управляемого заказчиком. В зависимости от того, как настроено шифрование реестра, управляемый клиентом ключ в реестре контейнеров Azure обновляется автоматически или его необходимо обновить вручную.

Azure CLI

Используйте команды az keyvault key для создания ключей хранилища ключей или управления ими.Чтобы создать новую версию ключа, выполните команду az keyvault key create:

  # Создать новую версию существующего ключа az keyvault ключ создать \ –- имя <имя-ключа> \ --vault-name <имя-ключа-хранилища>  

Следующий шаг зависит от того, как настроено шифрование реестра:

  • Если реестр настроен на обнаружение обновлений версий ключа, ключ, управляемый клиентом, обновляется автоматически в течение 1 часа.

  • Если реестр настроен так, что требует ручного обновления для новой версии ключа, запустите команду az acr encryption rotate-key, передав новый идентификатор ключа и идентификатор, который вы хотите настроить:

Чтобы обновить версию управляемого клиентом ключа вручную:

  # Поверните клавишу и используйте идентификацию, назначенную пользователем az acr encryption rotate-key \ --name <имя-реестра> \ --key-encryption-key <новый-идентификатор-ключа> \ --identity  # Поверните ключ и используйте идентификационные данные, присвоенные системой az acr encryption rotate-key \ --name <имя-реестра> \ --key-encryption-key <новый-идентификатор-ключа> \ --identity [система]  

Подсказка

Когда вы запускаете az acr encryption rotate-key , вы можете передать либо идентификатор ключа с версией, либо идентификатор ключа без версии.Если вы используете идентификатор ключа без версии, реестр будет настроен на автоматическое обнаружение более поздних обновлений версии ключа.

Портал

Используйте параметры реестра Encryption для обновления хранилища ключей, ключа или параметров идентификации, используемых для ключа, управляемого клиентом.

Например, чтобы настроить новый ключ:

  1. На портале перейдите в свой реестр.

  2. В разделе Настройки выберите Шифрование > Изменить ключ .

  3. В Encryption выберите одно из следующего:

    • Выберите Выберите из Key Vault и выберите существующее хранилище ключей и ключ или Создайте новый . Выбранный вами ключ не версионирован и включает автоматическую ротацию ключей.
    • Выберите Введите URI ключа и напрямую укажите идентификатор ключа. Вы можете предоставить либо URI ключа с версией (для ключа, который должен быть повернут вручную), либо URI ключа без версии (который включает автоматическую ротацию ключей).
  4. Завершите выбор ключа и выберите Сохранить .

Отменить ключ

Отмените управляемый клиентом ключ шифрования, изменив политику доступа или разрешения для хранилища ключей или удалив ключ. Например, используйте команду az keyvault delete-policy, чтобы изменить политику доступа управляемого удостоверения, используемого вашим реестром:

  az keyvault политика удаления \ --resource-group <имя-группы-ресурсов> \ --name <имя-хранилища ключей> \ --object-id $ identityPrincipalID  

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

Расширенный сценарий: брандмауэр Key Vault

Если ваше хранилище ключей Azure развернуто в виртуальной сети с брандмауэром Key Vault, выполните следующие дополнительные действия после включения управляемого клиентом шифрования ключей в реестре.

  1. Настройте шифрование реестра для использования идентификатора реестра, назначенного системой
  2. Включение реестра для обхода брандмауэра Key Vault
  3. Поверните управляемый клиентом ключ

Настроить идентификацию, назначенную системой

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

Чтобы включить идентификацию реестра, назначенную системой на портале:

  1. На портале перейдите в свой реестр.
  2. Выберите Settings > Identity .
  3. В системе назначен , установите Status на On . Выберите Сохранить .
  4. Скопируйте Идентификатор объекта удостоверения личности.

Чтобы предоставить идентификационный доступ к хранилищу ключей:

  1. Перейдите в хранилище ключей.
  2. Выберите Настройки > Политики доступа> + Добавить политику доступа .
  3. Выберите Key permissions и выберите Get , Unwrap Key и Wrap Key .
  4. Выберите Выберите принципала и найдите идентификатор объекта вашего управляемого системой удостоверения или имя вашего реестра.
  5. Выберите Добавить , затем выберите Сохранить .

Чтобы обновить параметры шифрования реестра для использования удостоверения:

  1. На портале перейдите в свой реестр.
  2. В разделе Настройки выберите Шифрование > Изменить ключ .
  3. В Identity выберите Системный и выберите Сохранить .

Включить обход хранилища ключей

Для доступа к хранилищу ключей, настроенному с помощью брандмауэра Key Vault, реестр должен обходить брандмауэр.Убедитесь, что хранилище ключей настроено для разрешения доступа любой доверенной службе. Реестр контейнеров Azure - одна из надежных служб.

  1. На портале перейдите в хранилище ключей.
  2. Выберите Настройки > Сеть .
  3. Подтвердите, обновите или добавьте настройки виртуальной сети. Подробные инструкции см. В разделе Настройка брандмауэров и виртуальных сетей Azure Key Vault.
  4. В Разрешить доверенным службам Microsoft обходить этот брандмауэр , выберите Да .

Повернуть управляемый клиентом ключ

После выполнения предыдущих шагов замените ключ на новый ключ в хранилище ключей за брандмауэром. Инструкции см. В разделе «Повернуть ключ» в этой статье.

Устранение неполадок

Удаление пользовательской идентификации

Если вы попытаетесь удалить назначенное пользователем удостоверение из реестра, который используется для шифрования, вы можете увидеть сообщение об ошибке, подобное:

  Ресурс Azure '/ подписки / xxxx / resourcegroups / myGroup / Provider / Microsoft.ContainerRegistry / registries / myRegistry 'не имеет доступа к идентификатору' xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx 'Попробуйте принудительно добавить идентификатор в реестр <имя реестра>. Дополнительную информацию о том, как принести собственный ключ, можно найти на странице http://aka.ms/acr/cmk.  

Вы также не сможете изменить (повернуть) ключ шифрования. Если возникает эта проблема, сначала переназначьте удостоверение, используя идентификатор GUID, отображаемый в сообщении об ошибке. Например:

  az acr identity assign -n myRegistry --identities xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx  

Затем, после изменения ключа и назначения другого идентификатора, вы можете удалить исходный идентификатор, назначенный пользователем.

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

.

Смотрите также