API
Indeed PAM поддерживает взаимодействие с Application Password Management (AAPM) через интерфейс API.
Запросы на получение и просмотр учетных данных записываются в журнал в разделе События.
Чтобы получить список учетных записей или их данные, сначала аутентифицируйтесь и получите токен доступа.
Как добавить приложение и предоставить ему доступ к учетным данным, читайте в разделе Приложения.
Аутентификация и получение токена
Аутентификация и получение токена происходит по протоколу OpenID Connect (OIDC) с использованием механизма Resource Owner Password Credentials (ROPC). Приложение отправляет логин и пароль на IDP, а взамен IDP отправляет токен доступа.
Чтобы аутентифицироваться и получить токен, отправьте POST-запрос к серверу управления с нужными параметрами:
POST https://<FQDN PAM>/idp/connect/token
Параметры запроса
| Параметры | Описание |
|---|---|
Content Type | Формат чтения, обработки и вывода данных. Для работы с данными в формате JSON укажите application/json. |
grant_type | Способ аутентификации и получения токена. Для аутентификации по логину и паролю приложения укажите password. |
username | Название приложения, добавленного в Indeed PAM |
password | Пароль указанного приложения. Администратор приложения может просмотреть название в консоли пользователя. |
scope | Запрос на доступ к API. Для доступа к API Indeed PAM укажите pam-api. |
client_id | Идентификатор клиентского приложения, которое запрашивает токен. Для аутентификации приложения на сервере IdP укажите aapm-tool. |
POST https://pam.server/idp/connect/token
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=MyApp&password=a4dGs22TfDpm31&scope=pam-api&client_id=aapm-tool
Ответ содержит поле access_token, в котором указан токен доступа. Используйте его в запросах для получения:
- списка доступных учетных записей;
- пароля и SSH-ключа учетных записей, хранящихся в Indeed PAM.
Параметры ответа
| Параметры | Описание |
|---|---|
access_token | Токен для доступа к API Indeed PAM |
expires_in | Срок действия токена, с |
token_type | Тип токена доступа:Bearer — любой пользователь, владеющий токеном, может его использовать. |
scope | Разрешение на доступ к API:pam-api — токен действителен только для вызовов API Indeed PAM. |
{
"access_token": "BB984E803AFAA449FD8C1",
"expires_in": 60,
"token_type": "Bearer",
"scope": "pam-api"
}
Получение учетных данных
Запрос выполняется к компоненту Core с использованием токена доступа из запроса к IdP.
Чтобы получить учетные данные, отправьте POST-запрос к серверу управления с нужными параметрами:
POST https://<FQDN PAM>/accounts/<идентификатор учетной записи>/credentials-view
Идентификатор учетной записи скопируйте из URL-адреса профиля учетной записи
Параметры запроса
| Параметр | Описание |
|---|---|
Content Type | Формат чтения, обработки и вывода данных. Для работы с данными в формате JSON укажите application/json. |
Authorization | Аутентификация пользователя и проверка прав доступа. Укажите способ аутентификации Bearer и токен доступа, полученный в запросе к IdP. |
account-id | Идентификатор приложения, для которого запрашиваются учетные данные. Идентификатор отображается в URL-адресе в профиле приложения. |
UserId | Сервисный атрибут в формате UUID. Укажите 00000000-0000-0000-0000-000000000000. |
Reason | Причина получения учетных данных. Укажите, если это задано политикой, действующей на учетную запись. |
POST https://pam.server/core/accounts/5e852968-26ed-498c/credentials-view
Content-Type: application/json
Authorization: Bearer BB984E803AFAA449FD8C1
{
"UserId": "00000000-0000-0000-0000-000000000000",
"Reason": "get-data"
}
Ответ на запрос содержит данные учетной записи: пароль, SSH-ключ и их настройки.
Параметры ответа
| Параметр | Описание |
|---|---|
Password | Пароль учетной записи |
Key | SSH-ключ учетной записи |
KeyPassphrase | Сгенерированный пароль для SSH-ключа. Генерация пароля определяется политикой, действующей на учетную запись. Если опция отключена, в поле указано null. |
ResetCredentialsAfterShowing | Настройка сброса пароля после просмотра:
|
ResetCredentialsAfterShowingAfterMin | Время, по истечении которого пароль сбрасывается, мин |
{
"Password": "Q1w2e3r4",
"Key": "", // учетной записи можно установить SSH-ключ, но в данный момент он не добавлен
"KeyPassphrase": null,
"KeyFileName": "INDEED-ID\\Administrator_20221013_160621Z.pem",
"ResetCredentialsAfterShowing": false,
"ResetCredentialsAfterShowingAfterMin": 60
}
Получение списка учетных записей
Запрос выполняется к компоненту Core с использованием токена доступа из запроса к IdP.
Чтобы получить список учетных записей, отправьте GET-запрос к серверу управления с нужными параметрами:
GET https://<FQDN PAM>/core/users/permitted-accounts
Параметры запроса
| Параметр | Описание |
|---|---|
Content Type | Формат чтения, обработки и вывода данных. Для работы с данными в формате JSON укажите application/json. |
Authorization | Аутентификация пользователя и проверка прав доступа. Укажите способ аутентификации Bearer и токен доступа, полученный в запросе к IdP. |
POST https://pam.server/core/users/permitted-accounts
Content-Type: application/json
Authorization: Bearer BB984E803AFAA449FD8C1
Ответ на запрос содержит список учетных записей с настройками действующих разрешений и политики.
Параметры ответа
| Параметр | Описание |
|---|---|
Account — данные учетной записи | |
Id | Идентификатор учетной записи |
DisplayName | Имя учетной записи |
IsKeySupported | Учетной записи можно задать SSH-ключ:
|
NextCredentialsReset | Пароль и SSH-ключ учетной записи сбрасываются после показа через указанное время, мин.null — сброс учетных данных не задан политикой. |
AreCredentialsResettingNow | Во время запроса происходит смена пароля и/или SSH-ключа учетной записи:
|
HasPassword | Пароль учетной записи:
|
HasKey | SSH-ключ учетной записи:
|
PolicySettings — параметры политики, действующей на учетную запись | |
RequireCredentialsViewingReason | Требовать указать причину просмотра пароля и SSH-ключа:
|
IsCredentialsViewingConfirmationRequired | Просмотр пароля и SSH-ключа требует подтверждения администратором:
|
CredentialsViewingConfirmationTimeout | Время ожидания подтверждения просмотра пароля и SSH-ключа, мин |
EncryptKeyBeforeShowing | Шифровать SSH-ключ сгенерированным паролем перед показом пользователю:
|
IsUserCanSetAccountCredentialsIfNotSet | Разрешить пользователям PAM задавать учетные данные для учетных записей, если они не заданы:
|
PermissionSettings — настройки разрешения | |
IsCredentialsViewAllowed | Разрешить пользователю просмотр учетных данных:
|
IsCredentialsChangeAllowed | Разрешить пользователю редактировать учетные данные:
|
{
"Accounts": [
{
"Account": {
"Id": "7c0616f5-9c60-432b-a644-b57bbd176e65",
"DisplayName": "UBUNTU-PAM.PAM-AD1.LOCAL\\root",
"IsKeySupported": true,
"NextCredentialsReset": null,
"AreCredentialsResettingNow": false,
"HasPassword": true,
"HasKey": false
},
"PolicySettings": {
"RequireCredentialsViewingReason": false,
"IsCredentialsViewingConfirmationRequired": false,
"CredentialsViewingConfirmationTimeout": "00:07:00",
"EncryptKeyBeforeShowing": false,
"IsUserCanSetAccountCredentialsIfNotSet": false
},
"PermissionSettings": {
"IsCredentialsViewAllowed": true,
"IsCredentialsChangeAllowed": false
}
}
]
}