Laravel Framework Russian Community
Введение
Фактически, подсистема аутентификации Laravel состоит из двух частей:
Providers, «провайдеры». Они определяют, как можно получить данные пользователя из базы данных или другого места хранения. В Laravel можно получать пользователя через Eloquent и Query Builder, но вы можете написать свой провайдер, если по каким-то причинам, хотите хранить данные пользователей, например, в файле.
Настройки базы данных
Быстрый старт
Routing
Чтобы сгенерировать роуты и шаблоны, которые нужны для процесса аутентификации (страница регистрации, логина, восстановления пароля и т.п.), вам нужно выполнить всего одну команду:
Естественно, вы можете отредактировать эти сгенерированные файлы так, как вам нужно.
Views
Аутентификация
Контроллеры аутентификации уже были в приложении, роуты и шаблоны вы только что сгенерировали. Всё, теперь пользователи могут регистрироваться и логиниться в ваше приложение.
Настройка путей
Если логин не успешный, то происходит автоматический редирект назад на страницу логина.
Для изменения пути, куда будет перенаправлен пользователь после выхода, требуется определить свойство redirectAfterLogout класса AuthController :
Настройка гардов (guards)
Настройка валидации и сохранения пользователей
Метод validator класса AuthController содержит в себе правила валидации формы регистрации новых пользователей. Вы можете изменять его, как пожелаете.
Метод create класса AuthController отвечает за создание новых App\User записей в вашей базе данных, используя Eloquent ORM. Вы также можете изменять его под требования вашего приложения.
Получение аутентифицированного пользователя
Вы можете получить аутентифицированного пользователя при помощи фасада Auth :
Проверка пользователя на аутентифицированность в приложении
Однако, вы также можете использовать посредников ( middleware ) для проверки аутентификации пользователя перед доступом к конкретным роутам / контроллерам.
Ограничение доступа к роутам
Конечно, если вы используете контроллеры, вы можете вызвать метод middleware внутри них, в конструкторе:
Назначение гарда
Когда вы назначаете middleware auth для защиты роута, вы можете явно указать, какой guard из тех, что определены у вас в config/auth.php вы хотите использовать в данном случае:
Защита от перебора паролей
Ручная аутентификация пользователей
Конечно же, вы не обязаны использовать контроллеры аутентификации, включённые в Laravel. Если вы удалите эти контроллеры, нужно будет управлять аутентификацией пользователей при помощи классов аутентификации Laravel. Не волнуйтесь, это просто!
Метод intended редиректора переместит пользователя на URL, на который он хотел попасть до прохождения аутентификации. Запасной URL указывается в параметре и будет использован, если путь, куда хотел перейти пользователь, недоступен.
Дополнительные условия прохождения аутентификации
Если хотите, вы также можете добавить дополнительные условия прохождения аутентификации в дополнение к e-mail и паролю. Например, вы можете проверять, активен ли пользователь:
Обратите внимание: В этих примерах поле email не обязательно должно использоваться для поиска пользователя, оно выбрано для примера. Вы можете использовать любое поле для поиска пользователя, которое является уникальным в таблице пользователей вашей базы данных.
Авторизация с использованием заданного гарда
Тогда при логине в админку вы делаете так:
Выход из приложения
Запоминание пользователей
Если вы «запоминаете» пользователей, можете использовать метод viaRemember для определения того, аутентифицировался ли пользователь с помощью куки «запомнить меня»:
Другие методы аутентификации
Аутентификация экземпляра пользователя
Вы также можете явно указать гард, при помощи которого будете фиксировать процесс аутентификации.
Аутентификация по ID пользователя
Аутентификация пользователя на один запрос
Вы также можете использовать метод once для аутентификации пользователя в вашем приложении на один запрос. Ни сессии, ни куки не будут созданы, что может быть использовано для создания stateless API. Метод once работает по тому же принципу, что и attempt :
Аутентификация HTTP Basic
HTTP Basic Аутентификация предоставляет быстрый способ аутентифицировать пользователя в вашем приложении без создания отдельной страницы входа. Сначала добавьте посредник auth.basic в ваш роут. Он включён в Laravel по умолчанию, так что вам не нужно создавать его:
Как только посредник прикреплён к роуту, он автоматически будет показывать окно аутентификации в браузере при посещении этого роута. По умолчанию auth.basic использует поле email для поиска пользователя.
Примечание для FastCGI
Stateless HTTP Basic Аутентификация
Дальше зарегистрируйте посредника и привяжите его к роуту:
Сброс пароля
Настройка базы данных
Большинство веб-приложений предоставляют пользователю возможность сбрасывать свой пароль. Для того, чтобы вам не приходилось реализовывать это в каждом приложении, Laravel предоставляет простой способ отправки «напоминателей» паролей и осуществления сброса пароля.
Создание миграции таблицы токенов сброса паролей
Routing
Views
Эта же команда создает в папке resources/views/auth/passwords шаблоны для страниц восстановления пароля.
Действия после сброса пароля
Настройка сброса пароля
Настройка гардов
В config/auth.php вы можете определить несколько гардов. Чтобы использовать выбранный гард для процедуры восстановления пароля, добавьте свойство в класс PasswordController :
Password Broker Customization
Создание своего гарда
You may define your own authentication guards using the extend method on the Auth facade. You should place this call to provider within a service provider:
Теперь вы можете использовать гард jwt в конфигах:
Создание своего провайдера
Далее мы можем юзать этот провайдер в конфигурации гардов:
Контракт User Provider
Реализации контракта Illuminate\Contracts\Auth\UserProvider ответственны только за получение реализации контракта Illuminate\Contracts\Auth\Authenticatable из хранилища данных, такого, например, как MySQL, Riak и тд. Эти два интерфейса позволяют Laravel использовать механизмы аутентификации независимо от того, как хранятся данные приложения.
Давайте посмотрим на контракт Illuminate\Contracts\Auth\UserProvider :
Метод retrieveById служит для получения пользователя из базы данных по его ID. Реализация класса Authenticatable должна быть возвращена в ответ методом.
Метод updateRememberToken обновляет токен пользователя. Новый токен может быть как снова созданным при аутентификации пользователя, так и null — при выходе пользователя.
Контракт Authenticatable
События
Laravel запускает различные события в процессе процедуры аутентификации. Вы можете встроиться в процесс при помощи слушателей этих событий в вашем EventServiceProvider :
Создание кастомного guard аутентификации в Laravel
Дата публикации: 2017-11-22
От автора: в этой статье мы рассмотрим систему аутентификации в фреймворке Laravel. Цель статьи – создать кастомный Guard аутентификации, расширив базовую систему аутентификации. Laravel предоставляет очень надежную систему аутентификации в ядре, что упрощает реализацию стандартной аутентификации. На деле, для установки системы аутентификации необходимо запустить пару выученных команд.
Сама система спроектирована таким образом, что вы можете расширить ее и вставить в нее свои кастомные адаптеры аутентификации. Это мы подробно обсудим в этой статье. Прежде чем мы с головой погрузимся в реализацию кастомного Guard аутентификации, давайте обсудим базовые элементы, благодаря которым работает аутентификация Laravel – Guard и провайдеры.
Элементы ядра: Guard и провайдеры
Система аутентификации Laravel состоит из двух элементов – Guard и провайдеры.
Guard
Представьте Guard, как способ доставки логики, используемой для идентификации прошедших проверку пользователей. В ядре Laravel есть разные Guard – сессия и токен. Guard сессии обслуживает состояние пользователя во всех запросах через куки, а Guard токен проверяет подлинность пользователя через токен в каждом запросе.
Guard определяет логику аутентификации, и необязательно, чтобы он постоянно получал валидные данные авторизации с back end. Можно сделать Guard, который просто проверяет наличие определенных данных в заголовках запроса и на их основе проводит аутентификацию.
Фреймворк Laravel. Быстрый старт
Получите курс и узнайте, как cоздать веб-приложение на фреймворке Laravel!
Ниже в статье мы создадим Guard проверки определенных JSON параметров в заголовках запроса, который будет получать валидного пользователя с MongoDB back end.
Провайдеры
Если Guard определяет логику аутентификации, то провайдер аутентификации получает пользователя с хранилища back end. Если Guard требует, чтобы пользователь проверялся через back end хранилище, то реализация получения пользователя переходит в провайдер аутентификации.
Laravel идет с двумя стандартными провайдерами аутентификации — Database и Eloquent. Провайдер аутентификации Database работает с простым вытягиванием данных авторизации пользователя из хранилища back end, а Eloquent дает абстрактный слой.
В нашем примере мы реализуем провайдер аутентификации MongoDB, который будет получать данные авторизации пользователя через MongoDB back end.
Это было базовое представление Guard и провайдеров в системе аутентификации Laravel. Начиная со следующего раздела, мы будем разрабатывать кастомные Guard аутентификации и провайдер!
Быстрая настройка файлов
Давайте быстро пробежимся по файлам, которые нам необходимо создать в этой статье.
config/auth.php: файл настроек аутентификации, в который мы добавим точку входа в кастомный Guard.
config/mongo.php: файл для настроек MongoDB.
app/Services/Contracts/NosqlServiceInterface.php: интерфейс, который реализует наш кастомный класс Mongo database.
app/Database/MongoDatabase.php: главный класс базы данных, взаимодействующий с MongoDB.
app/Models/Auth/User.php: класс модели User, реализующий договор Authenticable.
app/Extensions/MongoUserProvider.php: реализация провайдера аутентификации.
app/Services/Auth/JsonGuard.php: реализация Guard драйвера аутентификации.
app/Providers/AuthServiceProvider.php: файл, с помощью которого мы будем добавлять привязки к сервис контейнерам.
app/Http/Controllers/MongoController.php: файл демо контроллера, с помощью которого мы будем тестировать наш кастомный Guard.
Не пугайтесь, что список файлов пока что вам ничего не говорит, мы постепенно все разберем.
Реализация
В этом разделе мы создадим необходимые файлы. Первым делом нам необходимо информировать Laravel о кастомном Guard. Скопируйте код ниже в файл config/auth.php.
Как видите, мы добавили кастомный Guard под ключом custom. Далее необходимо добавить соответствующий провайдер в раздел providers.
Провайдер добавлен под ключом mongo. Изменим стандартный Guard аутентификации с web на custom.
Конечно, пока что ничего не работает, так как мы не создали необходимые файлы. Этим мы и займемся в следующих разделах.
Создание MongoDB Driver
В этом разделе мы создадим необходимые файлы, которые будут общаться с объектом MongoDB. Сначала создадим файл настроек config/mongo.php, в котором будут храниться стандартные настройки подключения MongoDB.
Данные необходимо заменить на свои. Вместо класса, взаимодействующего с MongoDB мы создадим интерфейс.
Плюс интерфейса в том, что он дает абстрактность, которой разработчик должен придерживаться при его реализации. Также нашу реализацию MongoDB можно легко заменить на другую NoSQL реализацию без необходимости.
Создайте файл интерфейса app/Services/Contracts/NosqlServiceInterface.php и добавьте в него код ниже.
Простой интерфейс, определяющий CRUD методы, которые должен определить класс, реализующий этот интерфейс. Теперь создадим класс app/Database/MongoDatabase.php.
Предполагаю, что вы уже установили MongoDB и соответствующее расширение MongoDB PHP.
Метод __construct создает объект класса MongoClient с необходимыми параметрами. Другой важный метод, нужный нам – find. Он получает запись на основе переданных аргументов. Мы реализовали драйвер MongoDB и постарались сохранить его простоту.
Создание модели User
Придерживаясь стандартов системы аутентификации, нам необходимо реализовать модель User, которая должна реализовывать контракт Illuminate\Contracts\Auth\Authenticatable. Создайте файл app/Models/Auth/User.php со следующим кодом.
Возможно, вы уже заметили, что App\Models\Auth\User реализует контракт Illuminate\Contracts\Auth\Authenticatable.
Большинство методов, реализованных в нашем классе, говорят сами за себя. Мы определили метод fetchUserByCredentials, который вытягивает пользователя с back end. В нашем случае это будет класс MongoDatabase, именно к нему мы будем обращаться за необходимой информацией. Мы создали реализацию модели User.
Создание провайдера аутентификации
Мы уже говорили ранее, что система аутентификации Laravel состоит из двух элементов – Guard и провайдеры. В этом разделе мы создадим провайдер аутентификации, который будет вытягивать пользователя с back end. Создайте файл app/Extensions/MongoUserProvider.php, как показано ниже.
Необходимо, чтобы кастомный провайдер реализовывал контракт Illuminate\Contracts\Auth\UserProvider. Файл определяет два важных метода retrieveByCredentials и validateCredentials.
Метод retrieveByCredentials используется для получения данных авторизации пользователя через модель User, о которой мы говорили в предыдущем разделе. Метод validateCredentials проверяет пользователя по заданному набору данных.
Фреймворк Laravel. Быстрый старт
Получите курс и узнайте, как cоздать веб-приложение на фреймворке Laravel!
Мы создали кастомный провайдер аутентификации. В следующем разделе мы перейдем к созданию Guard, который будет взаимодействовать с провайдером аутентификации MongoUserProvider.
Создание Guard аутентификации
Как мы уже говорили ранее, Guard в системе аутентификации Laravel определяет логику аутентификации пользователя. Мы будем проверять наличие параметра запроса jsondata. В нем должна быть JSON строка с данными авторизации.
В этом разделе мы создадим Guard, который будет общаться с провайдером аутентификации, созданном в предыдущем разделе. Создайте файл app/Services/Auth/JsonGuard.php со следующим кодом.
Прежде всего, нашему классу необходимо реализовывать интерфейс Illuminate\Contracts\Auth\Guard. Поэтому необходимо определить все методы, объявленные в интерфейсе.
Важно отметить тот факт, что функция __construct требует реализации Illuminate\Contracts\Auth\UserProvider. Мы передадим объект App\Extensions\MongoUserProvider.
Далее есть функция getJsonParams, получающая данные авторизации пользователя из параметра jsondata запроса. Ожидается строка JSON с данными авторизации пользователя, поэтому мы декодируем JSON данные с помощью функции json_decode.
Далее мы вызываем метод retrieveByCredentials провайдера MongoUserProvider, который получает пользователя из базы данных MongoDB с back end. И наконец, метод validateCredentials провайдера MongoUserProvider валидирует пользователя.
Это была реализация кастомного Guard. В следующем разделе говорится, как связать все эти части вместе и сформировать систему аутентификации.
Собираем все вместе
Мы разработали все элементы кастомного Guard аутентификации, которые должны дать нам новую систему аутентификации. Однако прямо вот так она не заработает. Ее необходимо зарегистрировать в привязках сервис контейнера Laravel.
Что делает Guard и для чего он нужен?
Также auth()->attempt(. ) и auth()->guard()->attempt(. )
Простой 8 комментариев
О том что ищете можно почитать в офф. документации или в переводе
Вы также можете назначить специфичный гард для обработки процесса аутентификации. Для этого создайте свойство guard в вашем классе AuthController. Значением этого свойства должно быть название одного из гардов, определённых вами в файле config/auth.php.
Тогда при логине в админку вы делаете так:
Вы также можете явно указать гард, при помощи которого будете фиксировать процесс аутентификации.
Также можно создать свой кастомный гард, почитать об этом тут
Angular Authentication: Using Route Guards
Jul 24, 2017 · 7 min read
Angular comes with a number of baked-in features which are tremendously helpful for handling authentication. I think my favorite is probably its HttpInterceptor interface, but right next to it would be route guards. Let’s take a look at what Angular’s route guards are and how to use them to help with authentication in your Angular apps.
Follow me on Twitter for more content like this
What are Route Guards?
Angular’s route guards are interfac e s which can tell the router whether or not it should allow navigation to a requested route. They make this decision by looking for a true or false return value from a class which implements the given guard interface.
There are five different types of guards and each of them is called in a particular sequence. The router’s behavior is modified differently depending on which guard is used. The guards are:
We won’t get too much into the details of each guard here but you can see the Angular docs for more.
Routing Decisions Based on Token Expiration
If you’re using JSON Web Tokens (JWT) to secure your Angular app (and I recommend that you do), one way to make a decision about whether or not a route should be accessed is to check the token’s expiration time. It’s likely that you’re using the JWT to let your users access protected resources on your backend. If this is the case, the token won’t be useful if it is expired, so this is a good indication that the user should be considered “not authenticated”.
Create a method in your authentication service which checks whether or not the user is authenticated. Again, for the purposes of stateless authentication with JWT, that is simply a matter of whether the token is expired. The JwtHelperService class from angular2-jwt can be used for this.
Use angular-jwt in your AuthService
Note: This example assumes that you are storing the user’s JWT in local storage.
Create a new service which implements the route guard. You can call it whatever you like, but something like auth-guard.service is generally sufficient.
Now the guard can be applied to any routes you wish to protect.
Note : The canActivate guard still allows the component for a given route to be activated (but not navigated to). If we wanted to prevent activation altogether, we could use the canLoad guard.
Checking for a User’s Role
The above example works well for scenarios that are fairly straight forward. If a user is authenticated, let them pass. There are many cases, however, where we’ll want to be a bit more fine-grained with our routing decisions.
For example, we may wish to only permit access to a route for users that have a certain role attached to their account. To handle these cases we can modify the guard to look for a certain role in the payload of the user’s JWT.
Install jwt-decode so we can read the JWT payload.
Since there will be times that we want to use both the catch-all AuthGuard and a more fine-grained role-based guard, let’s create a new service so we can handle both cases.
In this guard we’re using ActivatedRouteSnapshot to give us access to the data property for a given route. This data property is useful because we can pass an object with some custom properties to it from our route configuration. We can then pick up that custom data in the guard to help with making routing decisions.
In this case we’re looking for a role that we expect the user to have if they are to be allowed access to the route. Next we are decoding the token to grab its payload. If the user isn’t authenticated or if they don’t have the role we expect them to have in their token payload, we cancel navigation and have them log in. Otherwise, they are free to proceed.
We can now use this RoleGuardService for any of our routes. We might, for example, want to protect an /admin route.
Note: This scenario assumes that you are using a custom role claim in your JWT.
Isn’t this Easily Hackable?
This is all true–a user could do this and then get past the guards. The key point to remember, however, is that any change the user makes to their token payload will invalidate the signature. JSON Web Token signatures are calculated by including the payload, so any modifications to it will throw the whole thing off. This is good news because it means the user won’t be able to access your protected resources with it.
Any sensitive data that you don’t want unauthorized access to should be kept behind your server. If the user does manage to get to a route they’re not supposed to, it doesn’t matter a whole lot anyway because they won’t be able to see any data that the route normally provides.
But I Want to Lock Routes Down Completely
In some cases, there’s still a strong desire to lock down client-side routes completely. While it’s not possible to have 100% protection of anything on the client side, Angular provides some interesting possibilities through async routing. We’ll have a look at how we can use async routing to our advantage is a future post.
Wrapping Up
Hopefully you’ve been able to see the benefits of using Angular’s route guards to help protect access to client-side routes. Remember that nothing on the client can ever truly be protected. Any code, data, or other assets that are delivered to the user’s browser are accessible by them. Knowing this, be sure to always protect sensitive data on your backend.
If you enjoyed this post, follow me on Twitter and say hi there 🙂
I’m in the process of writing a book called Securing Angular Applications which covers absolutely everything needed to properly lock down an Angular app. You can check out the early details for the book and sign up to receive sample chapters and content as it becomes available.
Управление Credential Guard в Защитнике Windows
Область применения
Включение Credential Guard в Защитнике Windows
Защитник Windows Credential Guard можно включить либо с помощью групповой политики, реестра,либо Hypervisor-Protected целостности кода (HVCI) и средства обеспечения готовности Защитник Windows Credential Guard. Credential Guard в Защитнике Windows может защищать секретные сведения на виртуальной машине Hyper-V, как и на физическом компьютере. Тот же набор процедур, который используется для включения Credential Guard в Защитнике Windows на физических компьютерах, применяется и к виртуальным машинам.
Включение Credential Guard в Защитнике Windows с помощью групповой политики.
Включить Credential Guard в Защитнике Windows можно с помощью групповой политики. При этом будут активированы функции безопасности на основе виртуализации, если это необходимо.
Дважды щелкните Включить средство обеспечения безопасности на основе виртуализации, а затем выберите вариант Включено.
В поле Выберите уровень безопасности платформы выберите Безопасная загрузка или Безопасная загрузка и защита DMA.
В поле Конфигурация Credential Guard щелкните элемент Включено с блокировкой UEFI, а затем нажмите кнопку ОК. Чтобы можно было отключить Credential Guard в Защитнике Windows удаленно, выберите пункт Включено без блокировки.
В поле Конфигурация безопасного запуска выберите Not Configured, Enabled или Disabled. Дополнительные сведения в этой статье.
Закройте консоль управления групповыми политиками.
Включить Защитник Windows учетных данных с помощью Intune
Из доманажмите кнопку Microsoft Intune.
Щелкните Конфигурация устройств.
Щелкните Профили > Создание защиты > конечной точкипрофиля Защитник Windows > учетных данных Guard.
Это позволит включить VBS и безопасную загрузку, и вы можете сделать это с или без блокировки UEFI. Если потребуется отключить Учетную службу удаленно, включай ее без блокировки UEFI.
Вы также можете настроить Credential Guard с помощью профиля защиты учетных записей в безопасности конечной точки. Параметры политики защиты учетных записей для безопасности конечной точки см. в intune.
Включение Credential Guard в Защитнике Windows с помощью реестра
Если вы не используете групповую политику, вы можете включить Credential Guard в Защитнике Windows с помощью реестра. Credential Guard в Защитнике Windows использует функции безопасности на основе виртуализации, которые нужно включить в некоторых операционных системах.
Добавление функций безопасности на основе виртуализации
Начиная с Windows 10 версии 1607 и Windows Server 2016 включать функции безопасность на основе виртуализации необязательно, и этот шаг можно пропустить.
Если вы используете Windows 10 версии 1507 (RTM) или Windows 10 версии 1511, необходимо включить функции безопасности на основе виртуализации. Для этого можно воспользоваться панелью управления или системой обслуживания образов развертывания и управления ими (DISM).
Если вы включите Credential Guard в Защитнике Windows с помощью групповой политики, действия для включения компонентов Windows с помощью панели управления или DISM не требуются. Групповая политика сама установит эти компоненты Windows.
Добавление функций безопасности на основе виртуализации с помощью раздела «Программы и компоненты»
Откройте раздел Панели управления «Программы и компоненты».
Выберите Включение или отключение компонентов Windows.
Установите флажок Режим изолированного пользователя на верхнем уровне выбора функций.
Нажмите кнопку OK.
Добавление функций безопасности на основе виртуализации в автономный образ с помощью системы DISM
Откройте командную строку с повышенными привилегиями.
Добавьте низкоуровневую оболочку Hyper-V с помощью следующей команды:
Добавьте режим изолированного пользователя с помощью следующей команды:
В Windows 10 версии 1607 и более поздней версии функция Изолированный режим пользователя была интегрирована в основную операционную систему. Поэтому запуск команды на шаге 3 выше больше не требуется.
Вы также можете добавить эти возможности в оперативный образ с помощью системы DISM или Configuration Manager.
Включение безопасности на основе виртуализации и Credential Guard в Защитнике Windows
Откройте редактор реестра.
Включите средство обеспечения безопасности на основе виртуализации.
Откройте раздел реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceGuard.
Добавьте новый параметр типа DWORD с именем EnableVirtualizationBasedSecurity. Для включения средства обеспечения безопасности на основе виртуализации установите для этого параметра реестра значение 1, а для отключения — значение 0.
Добавьте новый параметр типа DWORD с именем RequirePlatformSecurityFeatures. Задайте для этого параметра реестра значение1, чтобы использовать только режим Безопасная загрузка, или значение3, чтобы использовать режим Безопасная загрузка и защита DMA.
Включение Credential Guard в Защитнике Windows:
Откройте раздел реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA.
Добавьте новый параметр типа DWORD с именем LsaCfgFlags. Присвойте этому параметру значение1, чтобы включить Credential Guard в Защитнике Windows с блокировкой UEFI, значение2, чтобы включить Credential Guard в Защитнике Windows без блокировки, или значение0, чтобы отключить этот компонент.
Закройте редактор реестра.
Вы можете включить Credential Guard в Защитнике Windows, настроив записи реестра в параметре автоматической установки FirstLogonCommands.
Включить Защитник Windows учетных данных с помощью средства готовности оборудования HVCI и Защитник Windows Credential Guard
Вы также можете включить Защитник Windows credential Guard с помощью средства готовности оборудования HVCI и Защитник Windows Credential Guard.
Это известная проблема.
Оценка работы Credential Guard в Защитнике Windows
Запущен ли Credential Guard в Защитнике Windows?
Чтобы убедиться, что Credential Guard в Защитнике Windows работает на компьютере, вы можете использовать программу «Сведения о системе».
Нажмите кнопку Пуск, введите msinfo32.exe, а затем щелкните Сведения о системе.
Выберите Сводные сведения о системе.
Подтверждение того, что служба безопасности на основе виртуализации отображается рядом с службами безопасности на основе виртуализации.
Вы также можете проверить, работает ли Защитник Windows службы учетных данных с помощью средства готовности оборудования HVCI и Защитник Windows Credential Guard.
Это известная проблема.
На клиентских компьютерах под управлением Windows 10 1703 LsaIso.exe включается каждый раз, когда средство обеспечения безопасности на основе виртуализации включается для других функций.
Мы рекомендуем включать Credential Guard в Защитнике Windows до присоединения устройства к домену. Если Credential Guard в Защитнике Windows был включен после присоединения устройства к домену, может оказаться, что секреты пользователя и устройства уже скомпрометированы. Другими словами, включение Credential Guard не поможет защитить устройство или удостоверение, которое уже уязвимо, именно поэтому мы рекомендуем включить Credential Guard как можно раньше.
Следует регулярно проводить проверку компьютеров с включенным Credential Guard в Защитнике Windows. Это можно сделать с помощью политик аудита безопасности или запросов WMI. Ниже представлен список кодов событий WinInit, которые следует искать.
Код события 13. Credential Guard в Защитнике Windows (LsaIso.exe) запущен и защищает учетные данные LSA.
Конфигурация event ID 14 Защитник Windows credential Guard (LsaIso.exe): [0x0 | 0x1 | 0x2], 0
Первая переменная: 0x1 или 0x2 означает, что Защитник Windows настраивается для запуска. 0x0 означает, что она не настроена для запуска.
Вторая переменная: 0 означает, что она настроена для работы в режиме защиты. 1 означает, что он настроен для работы в тестовом режиме. Эта переменная всегда должна быть 0.
Код события 15. Credential Guard в Защитнике Windows (LsaIso.exe) настроен, но ядро системы безопасности не запущено. Операция будет продолжена без Credential Guard в Защитнике Windows.
Код события 16. Не удалось запустить Credential Guard в Защитнике Windows (LsaIso.exe): [код ошибки]
ID события 17 Чтение ошибок Защитник Windows учетных данных (LsaIso.exe) конфигурации UEFI: [код ошибки]
Код события 51. Подготовка главного ключа шифрования VSM. Использование кэшного состояния копирования: 0x0. Состояние распечатывания кэшированной копии: 0x1. Состояние создания нового ключа: 0x1. Состояние уплотнения: 0x1. Маска PCR TPM: 0x0.
Вы можете использовать Windows PowerShell, чтобы определить, работает ли охранник учетных данных на клиентский компьютер. На компьютере, о чем идет речь, откройте окно PowerShell с повышенными уровнями и запустите следующую команду:
Эта команда создает следующую выходную следующую команду:
0. Защитник Windows учетная точка отключена (не запущена)
1. Защитник Windows включена (запущена) учетная охрана
Проверка списка задач или диспетчера задач, чтобы узнать, LSAISO.exe ли запущена LSAISO.exe, не рекомендуется для определения того, Защитник Windows службы учетных данных.
Отключение Credential Guard в Защитнике Windows
Чтобы отключить Защитник Windows Credential Guard, можно использовать следующий набор процедур или средство готовности оборудования Device Guard и Credential Guard. Если служба credential Guard включена с блокировкой UEFI, необходимо использовать следующую процедуру, так как параметры сохраняются в переменных EFI (прошивка), и для нажатия клавиши функции для пользования изменением потребуется физическое присутствие на компьютере. Если учетная охрана включена без блокировки UEFI, ее можно отключить с помощью групповой политики.
Удалите указанные ниже параметры реестра.
Если вы также хотите отключить безопасность на основе виртуализации, удалите следующие параметры реестра:
Если вы удаляете эти параметры реестра вручную, убедитесь, что вы удалили их все. Если вы не удалите какие-либо из этих параметров, устройство может перейти в режим восстановления BitLocker.
Удалите переменные EFI Credential Guard в Защитнике Windows с помощью bcdedit. В командной строке с повышенными привилегиями введите следующие команды:
Ответьте утвердительно на запрос об отключении Credential Guard в Защитнике Windows.
Для отключения Credential Guard в Защитнике Windows также можно отключить функции безопасности на основе виртуализации.
Компьютер должен иметь однократный доступ к контроллеру домена для расшифровки содержимого, например файлов, которые были зашифрованы с помощью EFS. Если требуется отключить как Защитник Windows, так и безопасность на основе виртуализации, запустите следующие команды bcdedit после отключения всех параметров групповой политики и реестра на основе виртуализации:
Дополнительные сведения о безопасности на основе виртуализации и HVCI см. в дополнительных сведениях о защите целостности кода на основе виртуализации.
Охрана учетных данных и охрана устройств не поддерживаются при использовании VMs Azure Gen 1. Эти параметры доступны только с VMs Gen 2.
Отключение Защитник Windows учетных данных с помощью средства готовности оборудования HVCI и Защитник Windows Credential Guard
Вы также можете отключить Защитник Windows credential Guard с помощью средства обеспечения готовности оборудования HVCI и Защитник Windows Credential Guard.
Это известная проблема.
Отключение Credential Guard в Защитнике Windows для виртуальной машины
На узле вы можете отключить Credential Guard в Защитнике Windows для виртуальной машины:













