Приложение \CAPI2, событие 513. Сбой при работе криптографических служб при обработке вызова OnIdentity() в объекте системного модуля записи
Один из членов команды сообщил мне, что один из наших MSSQL-серверов на базе Windows Server 2008 (не 2008 R2) начал генерировать ошибки CAPI2 с кодом 513 в журнале событий приложений:
Application\CAPI2
Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object.
Details:
AddCoreCsiFiles: BeginFileEnumeration() failed.
System Error: Access is denied.
Небольшая PowerShell показывает, что проблема началась еще 08.08.14 и, по-видимому, в основном возникает после 22:00 ежедневно:
PS C:\Users\Administrator> Get-EventLog -LogName Application | ? { $_.EventID -like "513" -and $_.Source -like "Microsoft-Windows-CAPI2" } | Select -Property TimeGenerated
TimeGenerated
-------------
8/18/2014 10:41:32 AM
8/18/2014 10:25:17 AM
8/18/2014 10:15:20 AM
8/17/2014 10:55:41 PM
8/17/2014 10:55:27 PM
8/17/2014 10:55:26 PM
8/16/2014 10:49:44 PM
8/16/2014 10:49:28 PM
8/16/2014 10:49:28 PM
8/15/2014 10:52:11 PM
8/15/2014 10:51:58 PM
8/15/2014 10:51:57 PM
8/15/2014 1:03:06 AM
8/15/2014 1:02:45 AM
8/15/2014 1:02:45 AM
8/13/2014 10:58:49 PM
8/13/2014 10:58:32 PM
8/13/2014 10:58:31 PM
8/12/2014 10:57:09 PM
8/12/2014 10:56:56 PM
8/12/2014 10:56:56 PM
8/11/2014 10:56:13 PM
8/11/2014 10:55:56 PM
8/11/2014 10:55:55 PM
8/10/2014 10:50:15 PM
8/10/2014 10:50:04 PM
8/10/2014 10:50:03 PM
8/10/2014 7:12:09 AM
8/10/2014 7:11:52 AM
8/10/2014 7:11:51 AM
8/8/2014 10:57:00 PM
8/8/2014 10:56:44 PM
8/8/2014 10:56:43 PM
8/6/2014 9:47:26 PM
8/6/2014 9:47:03 PM
8/6/2014 9:47:02 PM
8/6/2014 10:48:33 AM
Любопытно нет? Интересно, для чего используется объект System Writer? Shadow Copy! Ой! В этом месяце я начал делать резервные копии Application Virtualware на основе VSS для этой виртуальной машины с помощью Veeam. Естественно, процесс резервного копирования начинается в 22:00, что объясняет частоту повторения, а не ошибку, просто возникающую в "случайное" время.
Интересно, что Veeam не зарегистрировал это как неудачную попытку резервного копирования, что заставляет меня задуматься , действительно ли точки восстановления соответствуют транзакциям. Несмотря на это, я быстро выполнил поиск по журналам резервного копирования Veeam и не нашел ничего явно неправильного, но, вероятно, стоит рассмотреть их поближе и подтвердить, что восстановление из этих точек восстановления соответствует транзакциям.
Код события 513, рекомендуемый ссылкой TechNet. Разрешение указывает на то, что проблема с разрешением NTFS может быть ошибочной, однако C:\Windows\Registration
Папка регистрации COM+ имеет соответствующие разрешения.
Идеи?
1 ответ
Mathias R. Jessen указал мне правильное направление, на всю известную папку WinSxS. Однако я не увидел ни одной ошибки VSS в журнале событий, что сделало меня немного нерешительным, чтобы просто уничтожить все разрешения NTFS, чтобы я не сломал что-то еще.
Урок 1: Читать
Я вернулся и прочитал Event ID 513 TechNet reference и снова заметил, что в разделе Verify было рекомендовано проверить, чтобы увидеть System Writer
был доступен как VSS писатель с использованием vssadmin list writers
и конечно же, это было НЕ. Извлеченный урок № 1: Прочитайте весь KB/TechNet/ Блог
Урок 2. Воспроизведение
Проделав немного больше исследований, я натолкнулся на объяснение пропавшего System Writer Case, которое, казалось, указывало на то, что проблема возникла в Cryptographic Services. Я обнаружил, что могу воспроизвести CAPI2
ошибка по желанию, остановив и запустив CryptSVC
оказание услуг. Извлеченный урок № 2: Попытайтесь найти способ воспроизвести вашу ошибку по желанию.
Использование ProcMon
На данный момент я в значительной степени следовал инструкциям поста. Я нашел PID какого экземпляра svchost
была упаковка CryptSVC
используя диспетчер задач. Вы могли бы альтернативно заставить CryptSVC
запускать как собственный процесс, используя sc config, если вы можете перезагрузить рассматриваемый сервер. В зависимости от того, насколько глубоко вы попали в ProcMon, стоит изолировать сервисы под одним PID, чтобы сократить количество событий, которые вы должны отсортировать.
Отсюда это возвращается к старому доброму ProcMon. Настройте фильтр, чтобы исключить все PID, которые не используются svchost
процесс, который упаковывает CryptSVC
:
Урок 3: Любовь ПроКМон
Я применил свой надежный фильтр первого прохода, который должен исключить все события, которые имеют результаты SUCCESS
, Это уменьшило количество событий с 31 118 до 139, и в нижней части я нашел ACCESS DENIED
событие, которое я искал, что неудивительно в WinSxS
папка (C:\Windows\winsxs\FileMaps\$$.cdf-ms
). Извлеченный урок № 3: Научитесь пользоваться и любить ProcMon
Урок 4. Проверка
Что теперь? KB2009272, который Матиас связал, имеет решение, но теперь я знаю почему. Извлеченный урок № 4: Не угадай, знай!
Урок 5. Начните с малого
Разрешение точно такое, как описано в KB2009272. Взять на себя ответственность и сбросить разрешения FileMaps
папку, а затем перезапустите CryptSVC
:
Takeown /f %windir%\winsxs\filemaps\* /a
icacls %windir%\winsxs\filemaps\*.* /grant "NT AUTHORITY\SYSTEM:(RX)"
icacls %windir%\winsxs\filemaps\*.* /grant "NT Service\trustedinstaller:(F)"
icacls %windir%\winsxs\filemaps\*.* /grant BUILTIN\Users:(RX)
net stop cryptsvc
net start cryptsvc
и... мы должны оторваться! System Writer
теперь доступен как писатель VSS. Нет необходимости менять разрешения для PendingRename
папка. Извлеченный урок № 5. Начните с самых мелких изменений и постарайтесь найти пути к изменениям, которые повлияют на большее.
C:\Users\administrator>vssadmin list writers
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.
Writer name: 'System Writer'
Writer Id: {e8132975-6f93-4464-a53e-1050253ae220}
Writer Instance Id: {98c52075-429a-4487-8b77-e42b18767458}
State: [1] Stable
Last error: No error
Перезапуск CryptSVC
по желанию больше не производится CAPI2
ошибка и после дня или двух мониторинга это выглядит решенным.