PAM Core
  • 12 minutos de leitura
  • Tema escuro
    Tema claro
  • Pdf

PAM Core

  • Tema escuro
    Tema claro
  • Pdf

Article Summary

O senhasegura WebService A2A possui métodos de consulta, criação e alteração de informações armazenadas na aplicação como: adicionar, alterar e inativar dispositivos e credenciais, além de outros.

Cuidado

Para utilizar esses métodos o recurso PAM deve ser selecionado na autorização da aplicação.

Dispositivos

Consultar a lista de dispositivos

Este método lista todos os dispositivos no PAM Core, de acordo com as permissões definidas para a autorização A2A utilizada.

GET /iso/pam/device 

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "2 devices found",
        "erro": false,
        "message": "2 devices found",
        "error": false
    },
    "devices": [
        {
            "id": "1",
            "hostname": "mydevicehostname",
            "ip": "172.10.20.30",
            "model": "Windows Server 2012",
            "type": "Server",
            "vendor": "Microsoft",
            "site": "LAX", 
        },
        {
           "id": "6",
            "hostname": "myseconddevice",
            "ip": "41.41.208.182",
            "model": "CentOS 7",
            "type": "Server",
            "vendor": "CentOS",
            "site": "AWS"
        }
    ]
}

Obter um dispositivo

Este método retorna informações sobre um dispositivo identificado por seu ID.

GET /iso/pam/device/[DEVICE_ID]

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Dispositivo 53",
        "erro": false,
        "cod_erro": 0,
        "message": "Dispositivo 53",
        "error": false,
        "error_code": 0
    },
    "device": {
        "id": "53",
        "hostname": "desktop-91.com",
        "ip": "172.10.20.90",
        "model": "Ubuntu",
        "type": "Desktop",
        "vendor": "Linux",
        "site": "AWS",
        "device_domain": "senhasegura.lab",
        "device_tags": "api, app",
        "connectivities": "SSH:22",
        "session_remote_config": "SSH:EXPECT:FILL",
        "tags": "tag1"
    }
}

Resposta esperada quando o dispositivo não é encontrado

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1011: Device not found",
        "erro": true,
        "message": "1011: Device not found",
        "error": true
    },
    "exception": {
        "code": 1011,
        "message": "1011: Device not found",
        "detail": null
    }
}

Desativar um dispositivo

Este método desativa um dispositivo identificado por seu ID.

Info

Quando um dispositivo estiver inativo, todas as suas credenciais também serão inativadas automaticamente.

DELETE iso/pam/device/[DEVICE_ID] 

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Device successfully deactivated",
        "erro": false,
        "message": "Device successfully deactivated",
        "error": false
    }
}

Resposta esperada quando desativar um dispositivo que não existe

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1011: Device not found",
        "erro": true,
        "message": "1011: Device not found",
        "error": true
    },
    "exception": {
        "code": 1011,
        "message": "1011: Device not found",
        "detail": null
    }
}

Adicionar ou atualizar um dispositivo

Este método adiciona ou atualiza um dispositivo no PAM Core.

POST /iso/pam/device
{
    "response": {
        "status": 201,
        "mensagem": "Dispositivo registrado com sucesso!",
        "erro": false,
        "cod_erro": 0,
        "message": "Dispositivo registrado com sucesso!",
        "error": false,
        "error_code": 0
    },
    "device": {
        "id": "53",
        "hostname": "desktop-91.com",
        "ip": "172.10.20.90",
        "model": "Ubuntu",
        "type": "Desktop",
        "vendor": "Linux",
        "site": "AWS",
        "device_domain": "senhasegura.lab",
        "device_tags": "api, app",
        "connectivities": "SSH:22",
        "session_remote_config": "SSH:EXPECT:FILL",
        "tags": "tag1"
    }
}

Parâmetros

A tabela a seguir é um exemplo dos parâmetros de entrada necessários:

CampoTipoExemploObrigatórioObs.Novo dispositivo Default value
hostnameStringlocalhostSimNome do dispositivo.-
ipString127.0.0.1SimEndereço IP do dispositivo.-
tipoStringServerSimTipo do dispositivo. Caso não exista, um novo será criado.-
fornecedorStringDebianSimFornecedor do dispositivo. Caso não exista, um novo será criado.-
modeloString10.0 BusterSimModelo do dispositivo. Caso não exista, um novo será criado.-
localStringDefaultSimLocal do dispositivo. Caso não exista, um novo será criado.-
device_domainStringsenhasegura.labNãoNome longo ou curto do domínio, já existente no senhasegura.-
device_tagsStringapi, appNãoTags do dispositivo.-
conectividadesStringSSH:22, HTTPS:443NãoConectividades do dispositivo.-
session_remote_configStringSSH:EXPECT:FILLNãoExpressões para login.-
Info

Caso exista um dispositivo com o hostname informado, ele será atualizado. Caso contrário, um novo dispositivo será criado.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 201,
        "mensagem": "Device successfully registered!",
        "erro": false,
        "message": "Device successfully registered!",
        "error": false
    },
    "device": {
        "id": "9",
        "hostname": "mydevice02",
        "ip": "22.13.50.71",
        "site": "AWS"
    }
}

Resposta esperada quando registrar um dispositivo sem fornecer dados necessários

HTTP/1.1 400 Bad Request 
{
      "response": {
          "status": 400,
          "mensagem": "1004: The device's hostname was not informed",
          "erro": true,
          "message": "1004: The device's hostname was not informed",
          "error": true
      },
      "exception": {
          "code": 1004,
          "message": "1004: The device's hostname was not informed",
          "detail": null
      }
  }

Credenciais

Listar credenciais

Este método lista todas as credenciais no PAM Core, de acordo com as permissões definidas para a autorização A2A utilizada.

GET /iso/pam/credential 

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "2 credentials found",
        "erro": false,
        "message": "2 credentials found",
        "error": false
    },
    "credentials": [
        {
            "id": "1",
            "identifier": "fakeuser01ws",
            "username": "fakeuser01",
            "expiration": null,
            "change": "2020-11-17 16:14:35",
            "view": null,
            "hostname": "fakedevice01",
            "management_ip": "172.10.20.30",
            "type": "Local User",
            "type_code": "1",
            "device_model": "Fake Product",
            "device_type": "Server",
            "device_vendor": "Fake Vendor",
            "automatic_change": "0",
            "connectivity": "",
            "connectivity_code": ""
        },
        {
            "id": "2",
            "identifier": "fakeuser02ws",
            "username": "fakeuser02",
            "expiration": null,
            "change": "2020-11-17 16:14:35",
            "view": null,
            "hostname": "fakedevice01",
            "management_ip": "172.10.20.30",
            "type": "Local User",
            "type_code": "1",
            "device_model": "Fake Product",
            "device_type": "Server",
            "device_vendor": "Fake Vendor",
            "automatic_change": "0",
            "connectivity": "",
            "connectivity_code": ""
        }
    ]
}

Obter credencial

Este método retorna informações sobre uma credencial identificada por seu ID.

GET /iso/pam/credential/[CREDENTIAL_ID]

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Credential 5",
        "erro": false,
        "message": "Credential 5",
        "error": false
    },
    "credential": {
        "id": "5",
        "tag": "robot-test-5",
        "username": "credential_5",
        "password": "[email protected]",
        "content": "[email protected]",
        "hostname": "destktop-91.com",
        "parent_credential_cod": null,
        "parent_credential": null,
        "additional": "CREDADD01",
        "domain": "",
        "ip": "172.10.10.90",
        "port": "22",
        "model": "Ubuntu",
        "expiration_time": "2021-01-16T17:31:39"
    }
}

Resposta esperada quando a credencial não existe ou o acesso é negado

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1007: Credential not found",
        "erro": true,
        "message": "1007: Credential not found",
        "error": true
    },
    "exception": {
        "code": 1007,
        "message": "1007: Credential not found",
        "detail": null
    }
}

Inativar credencial

Este método desativa uma credencial identificada por seu ID.

DELETE /iso/pam/credential/[CREDENTIAL_ID]

Resposta esperada

HTTP/1.1 200 OK 
{
    'response': {
        'status': 200,
        'mensagem': 'Credential successfully deactivated',
        'erro': False,
        'message': 'Credential successfully deactivated',
        'error': False
    }
}

Resposta esperada quando o cliente A2A não tem permissão para acessar a credencial ou a credencial já está inativa

HTTP/1.1 400 Bad Request 
{
    'response': {
        'status': 400,
        'mensagem': '1007: Credential not found',
        'erro': True,
        'message': '1007: Credential not found',
        'error': True
    },
    'exception': {
        'code': 1007,
        'message': '1007: Credential not found',
        'detail': None
    }
}

Adicionar ou atualizar credencial

Este método adiciona ou atualiza uma credencial no PAM Core.

POST /iso/pam/credential 

Parâmetros

CampoTipoExemploObrigatórioObs.Nova Credencial Default Value
IDInt123NãoID da credencial. Necessário para atualizar.Gerado por senhasegura
usernameStringmy_userSim*Nome de usuário da credencial.usr
conteúdoString[email protected]NãoSenha da credencial.-
adicionalStringDATABASENãoInformação adicional.-
tagsStringapi, appNãoTags da credencial.-
credential_typeStringDomain UserNãoTipo de credencial. Caso não exista, um novo será criado.Local User
domínioStringsenhasegura.labNãoNome longo ou curto do domínio. Ele já deve existir no senhasegura.-
parent_passwordInt123NãoID da credencial pai.-
hostnameStringlocalhostSimNome do dispositivo.-
IPString127.0.0.1SimIP do dispositivo.-
tipoStringServerNãoTipo de dispositivo. Caso não exista, um novo será criado.-
fornecedorStringDebianNãoFornecedor do dispositivo. Caso não exista, um novo será criado.-
modeloString10.0 BusterNãoModelo do dispositivo. Caso não exista, um novo será criado.-
localStringDefaultNãoLocal do dispositivo. Caso não exista, um novo será criado.-
device_domainStringsenhasegura.labNãoNome longo ou curto do domínio. Ele já deve existir no senhasegura.-
device_tagsStringapi, appNãoTags do dispositivo.-
conectividadesStringSSH:22, HTTPS:443NãoConectividades do dispositivo.-
session_remote_configStringSSH:EXPECT:FILLNãoExpressões para login.-

*Obrigatório apenas ao criar uma nova credencial, não para atualizações.

Info

Para atualizar uma credencial, deve-se informar o ID da credencial ou IP do dispositivo, hostname do dispositivo e nome de usuário.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 201,
        "mensagem": "Credential updated successfully!",
        "erro": false,
        "message": "Credential updated successfully!",
        "error": false
    },
    "credential": {
        "id": "5",
        "tag": "robot-test-5"
    }
}

Resposta esperada quando um dos dados necessários não é fornecido

HTTP/1.1 400 Bad Request 
Info

Os seguintes códigos de erro podem ocorrer se os dados necessários não forem fornecidos:

  • 1004: o nome do host do dispositivo não foi informado
  • 1005: o IP do dispositivo não foi informado
  • 1007: Credencial não encontrada
{
    "response": {
        "status": 400,
        "mensagem": "1004: The device's hostname was not informed",
        "erro": true,
        "message": "1004: The device's hostname was not informed",
        "error": true
    },
    "exception": {
        "code": 1004,
        "message": "1004: The device's hostname was not informed",
        "detail": null
    }
}

Liberar a custódia da credencial

DELETE /iso/pam/credential/custody/[CREDENTIAL_ID]

Quando uma solicitação de senha é realizada via API, a credencial fica sob custódia do solicitante. Para liberar a custódia é necessário utilizar este método.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Credential custody 1 released",
        "erro": false,
        "message": "Credential custody 1 released",
        "error": false
    }
}

No exemplo acima, o número "1" é o ID da credencial.

Resposta esperada quando você não tem acesso à credencial ou a credencial não existe

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1007: Credential not found",
        "erro": true,
        "message": "1007: Credential not found",
        "error": true
    },
    "exception": {
        "code": 1007,
        "message": "1007: Credential not found",
        "detail": null
    }
}

Informações protegidas

Obter uma informação protegida

Este método só permite consultar uma única informação protegida.

GET /iso/pam/info/[PROTECTED_INFORMATION_ID]

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 201,
        "mensagem": "Information successfully registered!",
        "erro": false,
        "message": "Information successfully registered!",
        "error": false
    },
    "info": {
	    "name": "saas_vault1",
		"type": "access credential",
		"service": "saas_client",
		"url": "10.10.10.2",
		"content": "login: mt4adm, password: mt4admp4ss",
		"users_allowed": "admin, account_manager, mscharra",
		"identifier": "INFOSAASVAULT1"
    }
}

Resposta esperada quando você não tem acesso à informação ou não existe

HTTP/1.1 400 Bad Request
{
    "response": {
        "status": 400,
        "mensagem": "1026: The information content was not informed",
        "erro": false,
        "message": "1026: The information content was not informed",
        "error": false
    },
    "exception": {
        "code": 1026,
        "message": "1026: The information content was not informed",
        "detail": null
    }
}

Resposta esperada quando você tem acesso à informação, mas está inativa

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1024: Inactive information",
        "erro": true,
        "message": "1024: Inactive information",
        "error": true
    },
    "exception": {
        "code": 1024,
        "message": "1024: Inactive information",
        "detail": null
    }
}

Inativar uma informação protegida

Você também pode inativar uma informação protegida usando métodos WebService A2A.

DELETE /iso/pam/info/[PROTECTED_INFORMATION_ID]

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Information successfully deactivated",
        "erro": false,
        "message": "Information successfully deactivated",
        "error": false
    }
}

Resposta esperada quando você não tem acesso à informação ou não existe

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1023: Information not found",
        "erro": true,
        "message": "1023: Information not found",
        "error": true
    },
    "exception": {
        "code": 1023,
        "message": "1023: Information not found",
        "detail": null
    }
}

Resposta esperada quando a informação já está inativa

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1024: Inactive information",
        "erro": true,
        "message": "1024: Inactive information",
        "error": true
    },
    "exception": {
        "code": 1024,
        "message": "1024: Inactive information",
        "detail": null
    }
}

Criar uma informação protegida

POST /iso/pam/info 

Parâmetros

CampoTipoExemploReq.Obs.
conteúdoStringMeus dados secretosSimDados secretos a serem protegidos. O upload do arquivo não está disponível.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 201,
        "mensagem": "Information successfully registered!",
        "erro": false,
        "message": "Information successfully registered!",
        "error": false
    },
    "info": {
        "id": "4",
        "tag": null
    }
}

As informações a seguir são um exemplo dos parâmetros de entrada completos:

CampoTipoExemploReq.Obs.
conteúdoStringMeus dados secretosSimConteúdo de texto simples a ser protegido. O upload do arquivo não está disponível.
identificadorStringINFO1298NãoIdentificador exclusivo usado para solicitar esses dados.
nomeStringMinhas informações protegidasNãoNome da informação a ser apresentado nas páginas senhasegura.
tipoStringCredencial de acessoNãoTipo de informação. Deve ser um existente.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 201,
        "mensagem": "Information successfully registered!",
        "erro": false,
        "message": "Information successfully registered!",
        "error": false
    },
    "info": {
        "id": "18",
        "tag": "INFOIDV0GSF"
    }
}

Resposta esperada quando o conteúdo da informação não é fornecido

HTTP/1.1 400 Bad Request 
{
    "response": {
        "status": 400,
        "mensagem": "1026: The information content was not informed",
        "erro": true,
        "message": "1026: The information content was not informed",
        "error": true
    },
    "exception": {
        "code": 1026,
        "message": "1026: The information content was not informed",
        "detail": null
    }
}

Sessões Proxy

Criar um URL autenticado de sessão da web

POST /iso/remote/session 

Este método permite gerar uma URL autenticada para iniciar uma sessão web em um dispositivo previamente cadastrado na solução usando o senhasegura Web Proxy.

Info

Caso não seja informada uma resolução, o sistema utilizará o valor de 1920x1080 como padrão do sistema.

A tabela a seguir é um exemplo dos parâmetros de entrada necessários:

CampoTipoExemploReq.Obs.
usuárioStringusuário senhaseguraSimNome de usuário para autenticação no senhasegura. Deve existir na solução.
credencialStringadministradorSimNome de usuário de credencial a ser usado para sessão da web.
dispositivoString172.12.32.14SimNome do host ou IP do dispositivo de destino.
protocoloStringSSHSimProtocolo de rede (SSH, RDP, HTTPS...).
dispositivo remotoString123NãoDevice ID, IP ou Hostname para sessão web. Necessário apenas para sessões que usam credenciais de domínio.
remoteAddrString201.13.25.61NãoEndereço IP de conexão do usuário. A sessão funcionará online a partir deste endereço IP.
portoInt22NãoPorta a ser usada na sessão. Caso não seja informado, será utilizada a porta padrão configurada no dispositivo.
aplicativo remotoInt123NãoID RemoteApp. Usado em caso de sessão RemoteApp.
tamanho de telaString1900x1200Resolução da tela.

Resposta esperada

HTTP/1.1 200 OK 
{
    "response": {
        "status": 200,
        "mensagem": "Session created successfully",
        "erro": false,
        "message": "Session created successfully",
        "error": false
    },
    "session": {
        "session_url": "https://senhasegura/modulos/auth?_sr=cmJzOkQwUzdq
        Wk9zQkhKY2FvRkNaQ0Q2OVRnbVdmTnk1MEc2cDNnM1orM2ltL3BxQURZNW91WW1G
        TExFU2JlYldkTlRabFNWb0Z2VzllU0E1WlIraEtJM3NvMlZmZ0NZTXV4QlNFWEt
        PUko3YlMxQWNwZmxYTWw2ZGxsUlFEOCtPdlBq",
        "token": "c4ac50a35bcc0a0d1641b02e64dd7c6421d3e5be2afa5378ca29ce5621e2eb38"
    }
}
Info

A URL da sessão é válida por 30 segundos. Após esse tempo, você precisa gerar um novo.

Resposta esperada quando um dos dados necessários não é fornecido

HTTP/1.1 400 Bad Request 
Info

O seguinte erro pode ocorrer se os dados necessários não forem fornecidos:

  • usuário: usuário não especificado
  • credencial: credencial não especificada
  • dispositivo: dispositivo de credencial não especificado
  • protocolo: protocolo inválido
{
    "response": {
        "status": 400,
        "mensagem": "Credential not specified",
        "erro": true,
        "cod_erro": 0,
        "message": "Credential not specified",
        "error": true,
        "error_code": 0
    }
}

Encerramento obrigatório da sessão de proxy

A sessão de proxy termina indicando o motivo do encerramento. Use essa funcionalidade para que sistemas externos como SIEM possam encerrar sessões com base nos alertas emitidos pelo próprio senhasegura.

DELETE /iso/session/drop/[SESSION_IDENTIFIER] 

Resposta esperada

{
    "response": {
        "status": 200,
        "menssage": "Session finished",
        "erro": false
    }
}


Este artigo foi útil?