Автоматизация через ConsoleApp
Утилита ConsoleApp позволяет автоматически управлять объектами Indeed PAM и настраивать права доступа. Например, с помощью утилиты можно одновременно создать несколько ресурсов или учетных записей, а также отозвать все неиспользуемые разрешения.
Все операции, выполненные утилитой, записываются в журнал События.
Аутентификация
Перед началом работы с утилитой настройте аутентификацию, чтобы получить доступ к Indeed PAM. ConsoleApp поддерживает следующие режимы аутентификации по протоколу OAuth 2.0:
- Resource Owner Password Flow (ROPC) — утилита получает токен доступа от имени пользователя PAM и передает его учетные данные компоненту Indeed PAM IDP. Все действия, совершаемые через утилиту, выполняются от имени пользователя PAM, а доступные операции ограничены привилегиями указанного пользователя.
- Client Credentials Flow — утилита аутентифицируется в PAM от своего имени в режиме Machine-to-Machine (M2M). Все действия, совершаемые через утилиту, выполняются от имени сервисного клиента
Console Application, а доступные операции ограничены привилегиями этого клиента.
- Resource Owner Password Flow
- Client Credentials Flow
Для ROPC-аутентификации не заполняйте параметр clientSecret — оставьте значение пустым.
Чтобы настроить аутентификацию:
- Перейдите в папку с утилитой и откройте конфигурационный файл appsettings.json.
- Для параметра
coreUrlукажите адрес компонента Core. - Для параметра
idpUrlукажите адрес компонента IdP. - Для параметра
authUsernameукажите логин пользователя PAM.
Если не заполнить параметр, логин потребуется ввести при запуске утилиты. - Для параметра
authPasswordукажите пароль пользователя PAM.
Если не заполнить параметр, пароль потребуется ввести при запуске утилиты.
При запуске утилиты аутентификация выполняется от имени указанного пользователя PAM. Если для пользователя настроена двухфакторная аутентификация, утилита запросит OTP-код.
Не рекомендуется использовать данную аутентификацию — все пользователи, которые работают с утилитой, выполняют операции от имени сервисного клиента и имеют одинаковый набор привилегий. Чтобы разграничить права и повысить безопасность, используйте ROPC-аутентификацию.
Чтобы настроить аутентификацию:
- Перейдите в папку с утилитой и откройте конфигурационный файл appsettings.json.
- Для параметра
clientSecretукажите секрет клиентаConsole Application.
При запуске утилиты аутентификация выполняется от имени сервисного клиента, при этом OTP-код не запрашивается.
Перейдите в конфигурационный файл компонента IdP по пути:
- Windows: C:\inetpub\wwwroot\idp\appsettings.json
- Linux: /etc/indeed/indeed-pam/idp/appsettings.json
В секции IdentitySettings в параметре ConsoleAppClientSecret указан секрет клиента.
Пример конфигурационного файла
- Resource Owner Password Flow
- Client Credentials Flow
{
"coreUrl": "https://pam.example.local/core",
"idpUrl": "https://pam.example.local/idp",
"clientSecret": "",
"authUsername": "ConsoleAppUser",
"authPassword": "#123QwerTy!",
"skipErrorsInBulkProcessing": true,
"NLog": {
"variables": {
"minLevel": "Trace",
"dbMinLevel": "Info",
"maxArchiveFilesPerCategory": 23
},
"rules": {
"1": {
"logger": "*",
"minLevel": "Trace",
"writeTo": "processFile"
}
}
}
}
{
"coreUrl": "https://pam.example.local/core",
"idpUrl": "https://pam.example.local/idp",
"clientSecret": "NPW8dALzsjzpSGDlTGIEMt5o6sjM8x3sz",
"authUsername": "",
"authPassword": "",
"skipErrorsInBulkProcessing": true,
"NLog": {
"variables": {
"minLevel": "Trace",
"dbMinLevel": "Info",
"maxArchiveFilesPerCategory": 23
},
"rules": {
"1": {
"logger": "*",
"minLevel": "Trace",
"writeTo": "processFile"
}
}
}
}
Операции с учетными записями
Создать учетную запись
- Одна учетная запись
- Несколько учетных записей
Чтобы создать учетную запись в Indeed PAM:
Перейдите в папку с утилитой.
Запустите утилиту с параметрами из таблицы:
- Windows
- Linux
.\Pam.ConsoleApp.exe create-account <параметр> <значение>dotnet ./Pam.ConsoleApp.dll create-account <параметр> <значение>Параметры
Параметр Требование Описание--usernameОбязательный Имя учетной записи --resourceили--domainОбязательный Размещение учетной записи: --resource— имя ресурса;--domain— имя домена.
Укажите один из параметров.--passwordНеобязательный Пароль учетной записи --descriptionНеобязательный Описание --policyНеобязательный Политика, которую требуется применить к учетной записи --key-fileНеобязательный Путь к файлу SSH-ключа, например: .\id_rsa--key-passphraseНеобязательный Пароль к файлу SSH-ключа Примеры команд
- Windows
- Linux
Создать учетную запись.\Pam.ConsoleApp.exe create-account `
--username Administrator `
--resource app01.local `
--password "Pass123$" `
--description "Local admin" `
--policy DefaultСоздать доменную учетную запись.\Pam.ConsoleApp.exe create-account --username Administrator --domain dev.localСоздать учетную запись с SSH-ключом.\Pam.ConsoleApp.exe create-account `
--username root `
--resource linux01.local `
--password "Pass123$" `
--key-file .\id_rsa `
--key-passphrase "Passphrase"Создать учетную записьdotnet ./Pam.ConsoleApp.dll create-account `
--username Administrator `
--resource app01.local `
--password "Pass123$" `
--description "Local admin" `
--policy DefaultСоздать доменную учетную записьdotnet ./Pam.ConsoleApp.dll create-account --username Administrator --domain dev.localСоздать учетную запись с SSH-ключомdotnet ./Pam.ConsoleApp.dll create-account `
--username root `
--resource linux01.local `
--password "Pass123$" `
--key-file .\id_rsa `
--key-passphrase "Passphrase"
Чтобы создать несколько учетных записей в Indeed PAM:
Создайте файл в формате CSV по следующему шаблону:
Location type;Location Name;Username;Set password;Password;Description;SSH key file path;SSH key passphraseПараметры
Параметр Требование ОписаниеLocation typeОбязательный Тип учетной записи: Local— ресурсная;Domain— доменная.
Location NameОбязательный Имя ресурса или домена UsernameОбязательный Имя учетной записи Set passwordОбязательный Задать для учетной записи пароль: true— задать пароль;false— создать учетную запись без пароля.
PasswordНеобязательный Пароль учетной записи.
Укажите, если дляSet passwordуказаноtrue.DescriptionНеобязательный Описание SSH key file pathНеобязательный Путь к файлу SSH-ключа, например: .\id_rsaSSH key passphraseНеобязательный Пароль к файлу SSH-ключа Пример CSV-файла
Local;dc.dev.local;root;true;root;Local account;;
Local;raspberrypi;root;true;root;SSH key example;id_rsa;passphrase
Domain;dev.local;Administrator;false;;Domain admin;;Перейдите в папку с утилитой и выполните команду:
- Windows
- Linux
.\Pam.ConsoleApp.exe create-accounts-from-file --file <путь к файлу>dotnet ./Pam.ConsoleApp.dll create-accounts-from-file --file <путь к файлу>
Удалить учетную запись
Чтобы удалить учетную запись из Indeed PAM:
Перейдите в папку с утилитой.
Выполните команду, указав имя учетной записи или ее идентификатор:
- Windows
- Linux
.\Pam.ConsoleApp.exe delete-account --name <имя учетной записи>.\Pam.ConsoleApp.exe delete-account --id <идентификатор учетной записи>dotnet ./Pam.ConsoleApp.dll delete-account --name <размещение\имя учетной записи>dotnet ./Pam.ConsoleApp.dll delete-account --id <идентификатор учетной записи>Идентификатор отображается в URL-адресе в профиле учетной записи.
Примеры команд
- Windows
- Linux
Удалить учетную запись по имени.\Pam.ConsoleApp.exe delete-account --name app01.local\UserУдалить учетную запись по идентификатору.\Pam.ConsoleApp.exe delete-account --id a988f1b0-b871-43fa-a40c-6f4ac75f904cУдалить учетную запись по имениdotnet ./Pam.ConsoleApp.dll delete-account --name app01.local\AdministratorУдалить учетную запись по идентификаторуdotnet ./Pam.ConsoleApp.dll delete-account --id a988f1b0-b871-43fa-a40c-6f4ac75f904c
Операции с ресурсами
Создать ресурс
- Один ресурс
- Несколько ресурсов
Чтобы создать ресурс в Indeed PAM:
Перейдите в папку с утилитой.
Запустите утилиту с параметрами из таблицы:
- Windows
- Linux
.\Pam.ConsoleApp.exe create-resource <параметр> <значение>dotnet ./Pam.ConsoleApp.dll create-resource <параметр> <значение>Параметры
Параметр Требование Описание--nameОбязательный Имя ресурса --descriptionНеобязательный Описание или--dns-name--ip-addressОбязательный Адрес ресурса: --dns-name— DNS-имя;--ip-address— IP-адрес.
Можно указать один из параметров.--user-connection-typeОбязательный Тип пользовательского подключения. Подробнее о типах читайте в разделе Пользовательское подключение. --user-connection-addressНеобязательный IP-адрес или DNS-имя пользовательского подключения --user-connection-portНеобязательный Порт пользовательского подключения --user-connection-matching-urlНеобязательный URL-адрес страницы входа для веб-ресурса --user-connection-matching-url-is-regexНеобязательный URL-адрес страницы входа является регулярным выражением: true— является;false— не является.
Укажите, если задан параметр .UC matching url--service-accountНеобязательный Имя сервисной учетной записи --service-connection-typeНеобязательный Тип сервисного подключения. Подробнее о типах читайте в разделе Сервисное подключение. --service-connection-portНеобязательный Порт для сервисного подключения --service-ssh-templateНеобязательный Имя шаблона SSH-коннектора. Укажите, если выбран тип сервисного подключения SSH.--cisco-privilege-mode-passwordНеобязательный Пароль для привилегированного входа Cisco. Укажите, если задан тип сервисного подключения Cisco IOS.--policyНеобязательный Политика, которую требуется применить к ресурсу Примеры команд
- Windows
- Linux
Создать один ресурс.\Pam.ConsoleApp.exe create-resource `
--name APP01 `
--description "Application server" `
--dns-name app01.local `
--user-connection-type RDP `
--user-connection-port 3389 `
--service-account DOMAIN\svc_app `
--service-connection-type WindowsСоздать один ресурсdotnet ./Pam.ConsoleApp.dll create-resource `
--name APP01 `
--description "Application server" `
--dns-name app01.local `
--user-connection-type RDP `
--user-connection-port 3389 `
--service-account DOMAIN\svc_app `
--service-connection-type Windows
Чтобы создать несколько ресурсов в Indeed PAM:
Создайте файл в формате CSV по следующему шаблону:
Name;Description;DNS name;IP address;UC type;UC address;UC port;UC matching url;UC matching url is regex;SC account name;SC type;SC SSH template;SC address;SC port;Cisco privilege mode passwordПараметры
Параметр Требование ОписаниеNameОбязательный Имя ресурса DescriptionНеобязательный Описание илиDNS nameIP addressОбязательный DNS-имя или IP-адрес ресурса. Можно указать один из параметров. UC typeОбязательный Тип пользовательского подключения. Подробнее о типах читайте в разделе Пользовательское подключение. UC addressНеобязательный IP-адрес или DNS-имя пользовательского подключения UC portНеобязательный Порт пользовательского подключения UC matching urlНеобязательный URL-адрес страницы входа для веб-ресурса UC matching url is regexНеобязательный URL-адрес страницы входа является регулярным выражением: true— является;false— не является.
Укажите, если задан параметр .UC matching urlSC account nameНеобязательный Имя сервисной учетной записи SC typeНеобязательный Тип сервисного подключения. Подробнее о типах читайте в разделе Сервисное подключение. SC SSH templateНеобязательный Имя шаблона SSH-коннектора. Укажите, если выбран тип сервисного подключения SSH.SC addressНеобязательный IP-адрес или DNS-имя сервисного подключения SC portНеобязательный Порт для сервисного подключения Cisco privilege mode passwordНеобязательный Пароль для привилегированного входа Cisco. Укажите, если задан тип сервисного подключения .Cisco IOSПример CSV-файла
APP01;Application server;app01.local;;RDP;;;;;DOMAIN\svc_app;Windows;;;;
WEB01;Corporate website;portal.local;;WebTemplate;https://portal.local/;;https://portal.local/login;FALSE;DOMAIN\svc_web;Windows;;;;
SSH01;Linux server;;192.168.0.50;SSH;;;;;;;;;;Перейдите в папку с утилитой и выполните команду:
.\Pam.ConsoleApp.exe create-resources-from-file --file <путь к файлу>
Удалить ресурс
Чтобы удалить ресурс из Indeed PAM:
Перейдите в папку с утилитой.
Выполните команду, указав имя ресурса или его идентификатор:
- Windows
- Linux
.\Pam.ConsoleApp.exe delete-resource --name <имя ресурса>.\Pam.ConsoleApp.exe delete-resource --id <идентификатор ресурса>dotnet ./Pam.ConsoleApp.dll delete-resource --name <имя ресурса>dotnet ./Pam.ConsoleApp.dll delete-resource --id <идентификатор ресурса>Идентификатор отображается в URL-адресе в профиле ресурса.
Примеры команд
- Windows
- Linux
Удалить ресурс по имени.\Pam.ConsoleApp.exe delete-resource --name app01.localУдалить ресурс по идентификатору.\Pam.ConsoleApp.exe delete-resource --id a988f1b0-b871-43fa-a40c-6f4ac75f904cУдалить ресурс по имениdotnet ./Pam.ConsoleApp.dll delete-resource --name app01.localУдалить ресурс по идентификаторуdotnet ./Pam.ConsoleApp.dll delete-resource --id a988f1b0-b871-43fa-a40c-6f4ac75f904c
Операции с разрешениями
Создать разрешение
- Одно разрешение
- Несколько разрешений
Чтобы создать разрешение в Indeed PAM:
Перейдите в папку с утилитой.
Запустите утилиту с параметрами из таблицы:
- Windows
- Linux
.\Pam.ConsoleApp.exe create-permission <параметр> <значение>dotnet ./Pam.ConsoleApp.dll create-permission <параметр> <значение>Параметры
Параметр Требование Описание--userОбязательный Имя пользователя PAM в формате UPN --accountНеобязательный Имя учетной записи PAM для подключения к ресурсу. Если не указать значение, при запуске сессии потребуется указать логин и пароль учетной записи. --resourcesили--resources-groupОбязательный Имя ресурса или группы ресурсов. Укажите в формате: <имя ресурса>:<тип подключения>— для одного или нескольких ресурсов;<имя группы>— для группы ресурсов.
--active-fromНеобязательный Период времени, когда разрешение станет активным. Укажите в формате ДД.ММ.ГГГГ ЧЧ:ММилиДД.ММ.ГГГГ.--active-toНеобязательный Период времени, когда разрешение приостановит свое действие. Укажите в формате ДД.ММ.ГГГГ ЧЧ:ММилиДД.ММ.ГГГГ.--schedule-time-fromНеобязательный Время, когда разрешение можно использовать. Укажите в формате ЧЧ:ММ.--schedule-time-endНеобязательный Время, когда разрешение нельзя использовать. Укажите в формате ЧЧ:ММ.--schedule-time-utcНеобязательный Преобразовывать заданное время доступа из текущего часового пояса в UTC: true— использовать текущий часовой пояс;false— преобразовать в UTC.
--allow-to-view-credsНеобязательный Разрешить пользователю просматривать данные учетных записей, добавленных в разрешение: true— разрешить;false— не разрешать.
--allow-to-change-credsНеобязательный Разрешить пользователю менять данные учетных записей, добавленных в разрешение: true— разрешить;false— не разрешать.
Примеры команд
- Windows
- Linux
Создать разрешение для нескольких ресурсов.\Pam.ConsoleApp.exe create-permission `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources srv01.local:RDP,srv02.local:SSHСоздать разрешение для группы ресурсов.\Pam.ConsoleApp.exe create-permission `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources-group PROD-SERVERSСоздать разрешение с временным ограничением.\Pam.ConsoleApp.exe create-permission `
--user ivanov@domain.local `
--resources srv01.local:SSH `
--active-from "01.08.2026 09:00" `
--active-to "31.08.2026 18:00" `
--schedule-time-from 08:00 `
--schedule-time-end 21:59 `
--schedule-time-utc true `
--allow-to-view-creds true `
--allow-to-change-creds trueСоздать разрешение для нескольких ресурсовdotnet ./Pam.ConsoleApp.dll create-permission `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources srv01.local:RDP,srv02.local:SSHСоздать разрешение для группы ресурсовdotnet ./Pam.ConsoleApp.dll create-permission `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources-group PROD-SERVERSСоздать разрешение с временным ограничениемdotnet ./Pam.ConsoleApp.dll create-permission `
--user ivanov@domain.local `
--account resource\Administrator `
--resources srv01.local:SSH `
--active-from "01.08.2026 09:00" `
--active-to "31.08.2026 18:00" `
--schedule-time-from 08:00 `
--schedule-time-end 21:59 `
--schedule-time-utc true `
--allow-to-view-creds true `
--allow-to-change-creds true
Чтобы создать несколько разрешений в Indeed PAM:
Создайте файл в формате CSV по следующему шаблону:
UserPrincipalName;AccountName;Resource1[:ConnectionType];Resource2[:ConnectionType];...;ResourceN[:ConnectionType]Параметры
Параметр Требование ОписаниеUserPrincipalNameОбязательный Имя пользователя PAM в формате UPN AccountNameОбязательный Имя учетной записи в формате DOMAIN\user. Если не указать значение, при запуске сессии потребуется указать логин и пароль учетной записи.Resource[:ConnectionType]Обязательный Имя ресурса и пользовательского подключения. Можно указать несколько ресурсов.
Пример:srv01.local:RDP;srv02.local:SSH.
Если у ресурса одно пользовательское подключение, тип подключения можно не указывать.Пример CSV-файла
ivanov@domain.local;DOMAIN\Administrator;srv01.local:RDP;srv02.local:SSH
petrov@domain.local;;linux01.local:SSHПерейдите в папку с утилитой и выполните команду:
- Windows
- Linux
.\Pam.ConsoleApp.exe create-permissions-from-file --file <путь к файлу>dotnet ./Pam.ConsoleApp.dll create-permissions-from-file --file <путь к файлу>
Отозвать разрешение
Отозванные разрешения нельзя восстановить. Если требуется временно запретить использовать разрешение, то приостановите его действие.
- Одно разрешение
- Несколько разрешений
Чтобы отозвать разрешение:
Перейдите в папку с утилитой.
Выполните следующую команду:
- Windows
- Linux
Отозвать разрешение по номеру.\Pam.ConsoleApp.exe revoke-permissions --permissions <номера разрешений>Отозвать разрешение пользователя.\Pam.ConsoleApp.exe revoke-permissions-by-user <параметр> <значение>Отозвать разрешение по номеруdotnet ./Pam.ConsoleApp.dll revoke-permissions --permissions <номера разрешений>Отозвать разрешение пользователяdotnet ./Pam.ConsoleApp.dll revoke-permissions-by-user <параметр> <значение>Параметры
Параметр Требование Описание--userОбязательный Имя пользователя PAM в формате UPN --accountНеобязательный Имя учетной записи --resourcesили--resources-groupОбязательный Имя ресурса или группы ресурсов. Укажите один из параметров. Примеры команд
- Windows
- Linux
Отозвать разрешения пользователя по ресурсам.\Pam.ConsoleApp.exe revoke-permissions-by-user `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources srv01.local:RDP,srv02.local:SSHОтозвать разрешения пользователя по группе ресурсов.\Pam.ConsoleApp.exe revoke-permissions-by-user `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources-group PROD-SERVERSОтозвать разрешения на ресурсdotnet ./Pam.ConsoleApp.dll revoke-permissions-by-user `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources srv01.local:RDP,srv02.local:SSHОтозвать разрешения пользователя на группу ресурсовdotnet ./Pam.ConsoleApp.dll revoke-permissions-by-user `
--user ivanov@domain.local `
--account DOMAIN\Administrator `
--resources-group PROD-SERVERS
Чтобы отозвать несколько разрешений в Indeed PAM:
Создайте файл в формате CSV по следующему шаблону:
UserPrincipalName;AccountName;Resource1[:ConnectionType];Resource2[:ConnectionType];...;ResourceN[:ConnectionType]Параметры
Параметр Требование ОписаниеUserPrincipalNameОбязательный Имя пользователя PAM в формате UPN AccountNameОбязательный Имя учетной записи в формате DOMAIN\user. Если не указать значение, при запуске сессии потребуется указать логин и пароль учетной записи.Resource[:ConnectionType]Обязательный Имя ресурса и пользовательского подключения. Можно указать несколько ресурсов.
Пример:srv01.local:RDP;srv02.local:SSHПример CSV-файла
ivanov@domain.local;DOMAIN\Administrator;srv01.local:RDP;srv02.local:SSH
petrov@domain.local;;linux01.local:SSHПерейдите в папку с утилитой и выполните команду:
.\Pam.ConsoleApp.exe revoke-permissions-from-file --file <путь к файлу>
После выполнения команды указанные разрешения переходят в состояние Отозвано.
Приостановить разрешение
Неиспользуемое разрешение — разрешение, которым не воспользовались в течение периода, заданного в настройках Контроль использования PAM. Рекомендуется отозвать или приостановить такое разрешение.
Чтобы приостановить неиспользуемые разрешения:
Перейдите в папку с утилитой.
Выполните следующую команду:
- Windows
- Linux
.\Pam.ConsoleApp.exe suspend-unused-permissionsdotnet ./Pam.ConsoleApp.dll suspend-unused-permissions
После выполнения команды все неиспользуемые разрешения переходят в состояние Приостановлено.
В любой момент разрешение можно возобновить.