Вопросы безопасности в Lotus Notes и Domino 7

Устранение неполадок, связанных с политиками

Показывать лекцию целиком

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

Именно поэтому мы отвели время для объяснения темы политик и параметров политик в предыдущей книге данной серии IBM Redbook, "Lotus Security Handbook, SG24-7017", и привели объяснения также и в этой книге. Мы основывались на уже имеющихся у вас знаниях и дали вам новую информацию, которая поможет администраторам Notes надежно усвоить понятие политик и параметров политик.

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

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

Инструмент Dynamic Client Configuration

Инструмент Dynamic Client Configuration (DCC) – это клиентский процесс Notes, который синхронизирует определенную информацию на клиентах Notes и серверах Domino. Исполняемый файл DCC, ndyncfg.exe, находится в программной директории клиента Notes.

Инструмент DCC выполняет множество функций. Для начала DCC заполняет раздел Client Information (Информация о клиенте) на закладке Administration (Администрирование) документов Person. Также этот инструмент необходим для правильной работы некоторых процессов в домене, таких, как Move Mailfile (перенос почтового файла пользователя), и новых возможностей Notes/Domino 6.x, включая политики и работу с мобильными пользователями. Следовательно, если вы сталкиваетесь с проблемами в данных процессах или возможностях, сначала устраните неполадки в DCC.

DCC запускается, когда пользователь проходит аутентификацию на домашнем сервере и при этом с момента последней аутентификации либо был изменен документ Person, либо было проведено изменение назначенной этому пользователю политики. В частности, при первой аутентификации пользователя на сервере динамический профиль на сервере сравнивается с объектом dyninfo клиента, который хранится в параметрах личной адресной книги (Personal Address Book). Если между динамическим профилем и объектом dyninfo обнаруживаются различия, запускается DCC. В противном случае DCC не запускается. С технической точки зрения файл ndyncfg.exe можно принудительно запустить, введя команду ndyncfg в командную строку MS-DOS $$\text{\textregistered}$$, но запускать DCC вручную не рекомендуется. (Мы обсудим этот момент в данном приложении, но позже.)

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

При запуске DCC он добавляет приведенные ниже строки в представление Miscellaneous Events (Разные события) локальной базы LOG.NSF:

11/06/2005 07:40:00 AM Dynamic Client Configuration started
11/06/2005 07:40:02 AM Initializing Dynamic Client Configuration
11/06/2005 07:40:03 AM Dynamic Client Configuration updating policy information
11/06/2005 07:40:03 AM Dynamic Client Configuration updating location information
11/06/2005 07:40:03 AM Dynamic Client Configuration shutdown

Если эта информация в журнале не обнаруживается, это указывает на проблему в DCC. Если никаких сведений об ошибках в журнале не записано, это означает, что DCC на клиентской машине работает, но это не означает, что DCC успешно изменял какие-нибудь значения на клиентской машине. Например, показанная выше запись журнала Dynamic Client Configuration updating location information (Dynamic Client Configuration обновляет информацию о местоположении) не обязательно означает, что информация о местоположении была успешно обновлена.

Существуют и другие способы, позволяющие определить неработоспособность DCC. Можно изучить Domino Directory (т. е., базу NAMES.NSF). На закладке Administration (Администрирование) каждого документа Person должна быть информация о клиенте. Если эта информация отсутствует или является устаревшей, это может указывать на проблемы в DCC. Это также относится и к мобильным пользователям, и к перемещениям почтовых файлов при помощи процесса adminp.

Если установлено, что проблема связана с DCC, нужно определить, что не дает DCC работать правильно. Одной из возможных причин неработоспособности DCC может быть то, что он был случайно или преднамеренно отключен. Хотя DCC изначально появился в версии 5 Notes/Domino, для многих функций его наличие не является необходимым, поэтому пользователи и администраторы могут отключать этот инструмент.

Если в ходе процесса выявления неисправности вы установили, что DCC не работает, выполните следующие шаги для устранения проблемы.

Проверьте конфигурационный файл NOTES.INI на рабочей станции пользователя и, если вы обнаружили параметр DisableDynConfigClient=1, удалите его.

Обратитесь к свойствам текущего документа Location пользователя [нажмите раздел Location (Местоположение) в строке состояния, выберите в строке состояния раскрывающееся меню Edit Current (Редактировать текущий) и пункт File (Файл) $$\to$$ Document Properties (Свойства документа)]. На закладке Fields (Поля) найдите поле AcceptUpdates (Принимать обновления). Если в этом поле указано значение 0, включите DCC, выполнив следующие действия:

  • откройте текущий документ Location;
  • выберите пункт Actions (Действия) $$\to$$ Advanced (Дополнительные) $$\to$$ Set Update Flag (Установить флаг обновлений);
  • в открывшемся окне Allow administrators to keep this location's settings up to date with those settings on your mail server (Разрешить администраторам обеспечивать соответствие этих параметров соответствующим параметрам на вашем почтовом сервере) нажмите Yes (Да);
  • сохраните и закройте документ Location.
  • Если вы выполнили эти шаги, но DCC по-прежнему не работает, удалите настройки адресной книги в личной адресной книге пользователя (Personal Address Book) (т. е. клиентскую копию NAMES.NSF), для чего выполните следующие шаги:

  • откройте персональную книгу имен и адресов пользователя;
  • выберите пункт Actions (Действия) $$\to$$ Remove Address Book Preferences (Удалить настройки адресной книги).
  • Вас, возможно, заинтересовало, какое отношение настройки адресной книги име- ют к DCC. Когда вы выбираете пункт Remove Address Book Preferences (Удалить настройки адресной книги), удаляется документ профиля директории (directoryprofile), в котором содержится параметр $DynInfoCache. Когда этот документ удален, при повторной аутентификации пользователей на своем домашнем сервере кеш полностью перестраивается. Кроме того, при этом десинхронизируются объект dyninfo клиента и динамический профиль сервера, что приводит к запуску DCC при следующей аутентификации пользователя на своем домашнем сервере.

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

    Профили политик и документы в представлении $Policies

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

    Что касается профилей политик, то это документы, которые служат отметками даты и времени, и указывают, когда была применена конкретная политика. Этим способом инструмент DCC узнает, проводилось ли обновление конкретной политики и нужно ли снова применять к клиенту Notes содержимое политики (и связанные с нею параметры политики).

    Поскольку документы профилей по определению не отображаются ни в одном представлении (поэтому к ним сложно обращаться иначе, как программно), лучшим инструментом для доступа к профилям политик является NotesPeek. Бесплатную ко- пию этого инструмента можно скачать с сайта Lotus Sandbox по адресу http://www.lotus.com/ldd/sandbox.nsf/0/2791869f4e1d3fa385256f2c00432973?OpenDocument

    При помощи NotesPeek можно открыть локальную книгу имен и адресов пользователя (т. е. локальную базу данных NAMES.NSF) и можно обращаться ко всем документам профилей. Эти документы удобно сгруппированы в категорию Profiles (Профили) (рис. D.1), в которой находятся не только профили политик (которые обозначаются как $policyprofile), но и другие документы профилей.

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

    Sub Initialize
      '--- Объявление переменных классов
      Dim s As New NotesSession
      Dim db As NotesDatabase
      Dim doc As NotesDocument
      '--- Инициализация переменных классов
      Set db = s.currentdatabase
      Set col = db.GetProfileDocCollection("$policyprofile")
      '--- Удаление всех профилей политик
      Call col.Removeall(True)
    End Sub
    (рис D.2) Пример коллекции накопленных профилей политик(рис D.1) Пример коллекции профилей политик после очистки(рис D.3) Пример коллекции после применения политики

    Данный код удаляет все профили политик (но не другие профили, и именно поэтому лучше всего использовать этот код) в локальной пользовательской книге имен . и адресов. На рис. D.2 показан результат использования данного кода.

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

    Документы политик

    Еще одно место, в которое DCC записывает информацию, – это представление $Policies локальной пользовательской книги имен и адресов. Это скрытое представление, поэтому для доступа к нему нужно использовать одну хитрость. Перейдите в рабочее пространство Notes (страница со ссылками на все базы данных). Нажмите клавиши Ctrl+Shift (и удерживайте их), щелкните правой кнопкой мыши по базе данных Name and Address book и выберите пункт меню Database (База данных) $$\to$$ Go To (Перейти). Откроется список представлений, имеющихся в базе данных, включая скрытые представления. Выберите представление $Policies. Откроется представление, сходное с показанным на рис. D.4.

    (рис D.4) Представление $Policies с коллекцией документов

    Это еще одно место, где могут возникать проблемы, и, как и в случае с профилями политик, лучше всего использовать код, приведенный в примере D.2, связав его с простой кнопкой, кнопкой действия или агентом.

    Этот код удаляет все документы в представлении $Policies локальной книги имен и адресов пользователя. После повторного соединения пользователя с сервером, действующая для данного пользователя политика (политика организации или явная политика) передается клиенту и данные записываются в локальную пользовательскую книгу имен и адресов. На рис. D.5 приведен результат использования этого кода и записи новой информации о политиках.

    Sub Initialize
      '--- Объявление переменных классов
    
      Dim s As New NotesSession
      Dim db As NotesDatabase
      Dim view As NotesView
      Dim doc As NotesDocument
      Dim collection As NotesViewEntryCollection
      Dim entry As NotesViewEntry
    
      '--- Инициализация переменных классов
    
      Set db = s.GetDatabase("", "names")
      Set view = db.GetView( "($Policies)" )
      Set collection = view.AllEntries
      Set entry = collection.GetFirstEntry()
    
      '--- Обработка всех документов в представлении ($Policies)
    
      While Not(entry Is Nothing)
        Set doc = entry.Document
        doc.Remove(True)
        Set entry = collection.GetNextEntry(entry)
      Wend
    End Sub

    На рис. D.5 для пользователя была определена явная политика, содержащая документ настроек рабочего стола. При передаче параметров этой политики было переписано 4 документа, один из которых является собственно политикой, а 3 других относятся к параметрам рабочего стола.

    (рис D.5) Представление $Policies после очистки и применения политики

    Процедура очистки

    Мы рассказали об инструменте Dynamic Client Configuration (DCC), о профилях политик и о документах в представлении $Policies. Мы также рассказали о методе очистки профилей политик и документов в представлении $Policies. Теперь мы опишем процедуру очистки, применяемую, если проблемы связаны с одним пользователем.

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

    Чтобы сэкономить время и силы (и уменьшить вероятность ошибок) используйте приведенный в примере D.3 код для очистки профилей политик и документов в представлении $Policies.

    Sub Initialize
      '--- Объявление переменных классов
      
      Dim s As New NotesSession
      Dim db As NotesDatabase
      Dim view As NotesView
      Dim doc As NotesDocument
      Dim collection As NotesViewEntryCollection
      Dim entry As NotesViewEntry
      
      '--- Инициализация переменных классов
      
      Set db = s.GetDatabase("", "names")
      Set view = db.GetView( "($Policies)" )
      Set collection = view.AllEntries
      Set entry = collection.GetFirstEntry()
      Set col = db.GetProfileDocCollection("$policyprofile")
      
      '--- Обработка всех документов в представлении ($Policies)
      
      While Not(entry Is Nothing)
        Set doc = entry.Document
        doc.Remove(True)
        Set entry = collection.GetNextEntry(entry)
      Wend
      
      '--- удаление всех профилей политик
      Call col.Removeall(True)
    End Sub

    Этот код удаляет все профили политик и документы в представлении $Policies локальной пользовательской книги имен и адресов. При повторном соединении пользователя с сервером политика, действующая в отношении этого пользователя (организационная или явная), передается клиенту и данные записываются в локальную книгу имен и адресов.

    Теперь политики должны работать правильно и проблема должна разрешиться.

    Вернуться к учебному плану