SDK para PHP

Prev Next

O Segura SDK para PHP facilita o acesso dos desenvolvedores aos serviços Segura em seu código PHP, e a construção de aplicações e softwares robustos utilizando os serviços senhasegura PAM e DSM. Os serviços incluem Credenciais, Dispositivos, DevOps Secret Management.

Requisitos

Para executar o SDK, seu sistema precisará atender aos requisitos mínimos, incluindo ter PHP >= 5.5 e a extensão PHP cURL. É necessário obter um token de aplicação OAuth 2.0 standard authorization com o administrador do sistema.

Informações

  • Local caching: toda a informação é armazenada em um cache local para reduzir o tempo de resposta das requisições. Os dados são criptografados antes do armazenamento para garantir a segurança.
  • Credenciais: o objeto credential fornece um conjunto de métodos para consulta e registro de credenciais.

Como criar um cliente do tipo credential

Para criar uma credential, inclua o autoload do vendor e instancie a classe Senhasegura\Pam\Credential.
Você deverá fornecer os seguintes dados:

  • URL do cofre.
  • client_id.
  • client_secret.
require 'vendor/autoload.php';
use Senhasegura\Pam\Credential;
// Instantiate a Credential client.
$client = new Credential([
    'url' => 'https://cofre.senhasegura.com', // URL do cofre
    'client_id' => '7e02a0e07eef10e73f56585a9a505fb2e', // OAuth 2.0m Application Client ID
    'client_secret'  => '431eaba0fb56bf360272b54892' // OAuth 2.0 Application Client Secret
]);

Criar ou atualizar uma credencial

Utilize o método save para criar ou atualizar uma credencial. Se uma credencial com os parâmetros fornecidos for encontrada, ela será alterada, caso contrário, uma nova credencial será criada. Assinatura do método:

/**
 * Creating and Updating a credential
 * @param array $params
 * @return array
 */
public function save(array $params = []) : array { ... }

Parâmetros obrigatórios

Parâmetro Tipo Exemplo Descrição
hostname String mycredential02 Nome da credencial
ip String 22.13.50.71 Endereço IP da credencial
username String credential05 Nome de usuário da credencial

Exemplo

$credential = $client->save([
    "hostname"  => "mycredential02",
    "ip"        => "22.13.50.71",
    "username"  => "credential05"
]);

Buscar por uma credencial registrada

Utilize o método get para consultar uma única credencial.

Assinatura do método

/**
 * Query a single credential
 * @param string $identifier
 * @return array
 */
public function get(string $identifier) : array { ... }

Parâmetros opcionais para o filtro

Parâmetro Tipo Exemplo Descrição
hostname String mycredential02 Nome da credencial
ip String 22.13.50.71 Endereço IP da credencial
username String credential05 Nome de usuário da credencial

Exemplo

$credential = $client->get([
    "hostname"  => "mycredential02",
    "username"  => "credential05"
]);

Listar credenciais

Utilize o método fetch para consultar uma lista de credenciais.

Assinatura do método

/**
 * Query credential list
 * @param array $filters
 * @return array
 */
public function fetch(array $filters = []) : array { ... }

Parâmetros opcionais para o filtro

Parâmetro Tipo Exemplo Descrição
hostname String mycredential02 Nome da credencial
ip String 22.13.50.71 Endereço IP da credencial
username String credential05 Nome de usuário da credencial
all String credential05 Busca o valor nos campos hostname, ip ou username

Exemplo 1: listar todas as credenciais

$credentials = $client->fetch();

Exemplo 2: listar credenciais de um dispositivo específico

$credentials = $client->fetch([
    "hostname"  => "mycredential02"
]);

Desativar uma credencial

Utilize o método disable para inativar uma credencial.

Assinatura do método

/**
 * Inativating a credential
 * @param string $identifier
 * @return array
 */
private function disable(string $identifier) : array { ... }

Parâmetros opcionais para o filtro

Parâmetro Tipo Exemplo Descrição
hostname String mycredential02 Nome da credencial
ip String 22.13.50.71 Endereço IP da credencial
username String credential05 Nome de usuário da credencial

Exemplo

$credential = $client->disable([
    "hostname"  => "mycredential02",
    "username"  => "credential05"
]);

Dispositivos

O objeto device fornece um conjunto de métodos para consulta e registro de dispositivos.

Criando um cliente do tipo device

Para criar um cliente device, inclua o autoload do vendor e instancie a classe Senhasegura\Pam\Device.

Você deverá fornecer os seguintes dados:

  • URL do cofre.
  • client_id.
  • client_secret.
require 'vendor/autoload.php';
use Senhasegura\Pam\Device;
// Instantiate a device client.
$client = new Device([
    'url' => 'https://cofre.senhasegura.com', // URL do cofre
    'client_id' => '7e02a0e07eef10e73f56585a9a505fb2e', // OAuth 2.0 Application Client ID
    'client_secret'  => '431eaba0fb56bf360272b54892' // OAuth 2.0 Application Client Secret
]);

Criar ou atualizar um dispositivo

Utilize o método save para criar ou atualizar um dispositivo. Se um dispositivo com os parâmetros fornecidos for encontrado, ele será alterado, caso contrário, um novo dispositivo será criado.

Assinatura do método

/**
 * Creating and Updating a device
 * @param array $params
 * @return array
 */
public function save(array $params = []) : array { ... }

Parâmetros obrigatórios

Parâmetro Tipo Exemplo Descrição
hostname String mydevice02 Nome do dispositivo
ip String 22.13.50.71 Endereço IP do dispositivo
site String AWS Localização/Site
model String CentOS 7 Modelo do dispositivo
vendor String CentOS Fabricante do dispositivo
type String Server Tipo do dispositivo (existente)

Exemplo

$device = $client->save([
    "hostname"  => "mydevice02",
    "ip"        => "22.13.50.71",
    "site"      => "AWS",
    "model"     => "CentOS 7",
    "vendor"    => "CentOS",
    "type"      => "Server"
]);

Buscar por um dispositivo registrado

Utilize o método get para consultar um único dispositivo.

Assinatura do método

/**
 * Query a single device
 * @param string $identifier
 * @return array
 */
public function get(string $identifier) : array { ... }

Parâmetro obrigatório

  • identifier (String, Hostname ou device id).

Exemplo

$device = $client->get("localhost");

Listar dispositivos

Utilize o método fetch para consultar uma lista de dispositivos.

Assinatura do método

/**
 * Query device list
 * @param array $filters
 * @return array
 */
public function fetch(array $filters = []) : array { ... }

Parâmetros opcionais para o filtro

Parâmetro Tipo Descrição
hostname String Nome do host/dispositivo
ip String Endereço IP
type String Tipo do dispositivo
vendor String Fabricante
model String Modelo
site String Localização/Site

Exemplo 1: listar todos os dispositivos

$devices = $client->fetch();

Exemplo 2: listar dispositivos de um tipo específico

$devices = $client->fetch(["type" => "server"]);

Desativar um dispositivo

Utilize o método disable para inativar um dispositivo.

Assinatura do método

/**
 * Inativating a device
 * @param string $identifier
 * @return array
 */
private function disable(string $identifier) : array { ... }

Parâmetro obrigatório

  • identifier (String, Hostname ou device id).

Exemplo

$client->disable("localhost");

Devops secret management

O objeto DSM fornece um conjunto de métodos para registrar uma aplicação e gerenciar seus segredos e variáveis.

Criando um cliente do tipo DSM

Para criar um cliente DSM, inclua o autoload do vendor e instancie a classe Senhasegura\DSM\Application.

Você deverá fornecer os seguintes dados:

  • URL do cofre.
  • client_id.
  • client_secret.
require 'vendor/autoload.php';
use Senhasegura\DSM\Application;

// Instantiate an Application client.
$client = new Application([
    'url'           => 'https://cofre.senhasegura.com', // URL do cofre
    'client_id'     => '7e02a0e07eef10e73f56585a9a505fb2e', // OAuth 2.0 Application Client ID
    'client_secret' => '431eaba0fb56bf360272b54892' // OAuth 2.0 Application Client Secret
]);

Criar ou atualizar uma aplicação

Utilize o método save para criar ou atualizar a aplicação. Se o cliente tiver uma aplicação com a combinação de application, system e environment, ela será alterada, caso contrário, uma nova aplicação ou autorização será criada. Se o provisionamento dinâmico estiver habilitado para a aplicação, um segredo será provisionado automaticamente no destino.

Assinatura do método

/**
 * Create OR Update the application
 * @param array $params
 * @return array
 */
public function save(array $params = []) : array { ... }

Parâmetros obrigatórios

Parâmetro Tipo Descrição
application String Nome da aplicação (ex: checkout)
system String Nome do sistema (ex: ecommerce)
environment String Ambiente (ex: production)
unique_key String (Opcional) Chave única (ex: checkout_auth01)

Exemplo

$application = $client->save([
    "application"  => "checkout",
    "system"       => "ecommerce",
    "environment"  => "production"
]);

Obter informações e segredos da aplicação cliente

Utilize o método get para retornar as informações da aplicação cliente.

Assinatura do método:

/**
 * Return the client application information
 * @param string $identifier
 * @return array
 */
public function get() : array { ... }

Exemplo:

$application = $client->get();

Registrar segredos da aplicação

Utilize o método secrets (Nota: o exemplo usa registerSecret) para registrar os segredos da aplicação.

Assinatura do método

/**
 * Register the application secrets
 * @param array $params
 * @return array
 */
public function secrets(array $params = []) : array { ... }

Parâmetro obrigatório

  • secret_type (String, access_key, key_value, credential, certificate ou ssh_key).

Parâmetros obrigatórios condicionais

Parâmetro Tipo Descrição
access_keys String Para access_key
key_value String Para key_value
credentials String Para credential
certificate String Para certificate
ssh_key String Para ssh_key

Exemplo (usando registerSecret do exemplo)

$application = $client->registerSecret([
    "secret_type"  => "key_value",
    "key_value" => [
        "key1" => "val1", "key2" => "val2", "key3" => "val3"
    ]
]);

Registrar variáveis da aplicação

Utilize o método variables (Nota: o exemplo usa registerVars) para registrar as variáveis da aplicação.

Assinatura do método

/**
 * Registering the application variables
 * @param array $params
 * @return array
 */
public function variables(array $params = []) : array { ... }

Parâmetros obrigatórios

Parâmetro Tipo Descrição
env String As variáveis de ambiente
helm String O helm da aplicação
map String O mapa de variáveis

Exemplo (usando registerVars do exemplo)

$application = $client->registerVars([
    "env"  => $envList,
    "helm" => $helm,
    "map"  => $varMap
]);

Deletar a autorização da aplicação.

Utilize o método delete para deletar a autorização da aplicação cliente. Se o provisionamento dinâmico estiver habilitado para a aplicação, todos os segredos serão desprovisionados automaticamente.

Assinatura do método

/**
 * Delete the client application authorization
 * @param string $identifier
 * @return array
 */
public function delete() : array { ... }

Exemplo

$application = $client->delete();