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();