SDK for PHP

Prev Next

The Segura SDK for PHP makes it easy for developers to access Segura services in their PHP code and build robust applications and software using Segura PAM and DSM services. The services include Credentials, Devices, and DevOps Secret Management.

Requirements

To run the SDK, your system must meet the minimum requirements, including PHP >= 5.5 and the PHP cURL extension. You must obtain a standard OAuth 2.0 application token from your system administrator.

Information

  • Local caching: All information is stored in a local cache to reduce request response time. Data is encrypted before storage to ensure security.
  • Credentials: The credential object provides a set of methods for querying and registering credentials.

How to create a credential client

To create a credential, include the vendor autoload and instantiate the Segura\Pam\Credential class.
You must provide the following data:

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

Create or update a credential

Use the save method to create or update a credential. If a credential with the provided parameters is found, it will be updated; otherwise, a new credential will be created. Method signature:

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

Required parameters

Parameter Type Example Description
hostname String mycredential02 Credential name
ip String 22.13.50.71 Credential IP address
username String credential05 Credential username

Example

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

Query a registered credential

Use the get method to query a single credential.

Method signature

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

Optional filter parameters

Parameter Type Example Description
hostname String mycredential02 Credential name
ip String 22.13.50.71 Credential IP address
username String credential05 Credential username

Example

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

List credentials

Use the fetch method to query a list of credentials.

Method signature

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

Optional filter parameters

Parameter Type Example Description
hostname String mycredential02 Credential name
ip String 22.13.50.71 Credential IP address
username String credential05 Credential username
all String credential05 Searches value in hostname, ip, or username fields

Example 1: list all credentials

$credentials = $client->fetch();

Example 2: list credentials for a specific device

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

Disable a credential

Use the disable method to deactivate a credential.

Method signature

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

Optional filter parameters

Parameter Type Example Description
hostname String mycredential02 Credential name
ip String 22.13.50.71 Credential IP address
username String credential05 Credential username

Example

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

Devices

The device object provides a set of methods for querying and registering devices.

Creating a device client

To create a device client, include the vendor autoload and instantiate the Segura\Pam\Device class.

You must provide the following data:

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

Create or update a device

Use the save method to create or update a device. If a device with the provided parameters is found, it will be updated; otherwise, a new device will be created.

Method signature

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

Required parameters

Parameter Type Example Description
hostname String mydevice02 Device name
ip String 22.13.50.71 Device IP address
site String AWS Location/Site
model String CentOS 7 Device model
vendor String CentOS Device vendor
type String Server Device type (existing)

Example

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

Query a registered device

Use the get method to query a single device.

Method signature

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

Required parameter

  • identifier (String, Hostname or device id).

Example

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

List devices

Use the fetch method to query a list of devices.

Method signature

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

Optional filter parameters

Parameter Type Description
hostname String Host/device name
ip String IP address
type String Device type
vendor String Vendor
model String Model
site String Location/Site

Example 1: list all devices

$devices = $client->fetch();

Example 2: list devices of a specific type

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

Disable a device

Use the disable method to deactivate a device.

Method signature

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

Required parameter

  • identifier (String, Hostname or device id).

Example

$client->disable("localhost");

DevOps secret management

The DSM object provides a set of methods to register an application and manage its secrets and variables.

Creating a DSM client

To create a DSM client, include the vendor autoload and instantiate the Segura\DSM\Application class.

You must provide the following data:

  • Vault URL
  • client_id
  • client_secret
require 'vendor/autoload.php';
use Segura\DSM\Application;

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

Create or update an application

Use the save method to create or update the application. If the client has an application with the combination of application, system, and environment, it will be updated; otherwise, a new application or authorization will be created. If dynamic provisioning is enabled for the application, a secret will be automatically provisioned at the destination.

Method signature

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

Required parameters

Parameter Type Description
application String Application name (e.g., checkout)
system String System name (e.g., ecommerce)
environment String Environment (e.g., production)
unique_key String (Optional) Unique key (e.g., checkout_auth01)

Example

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

Get client application information and secrets

Use the get method to return the client application information.

Method signature:

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

Example:

$application = $client->get();

Register application secrets

Use the secrets method (Note: the example uses registerSecret) to register application secrets.

Method signature

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

Required parameter

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

Conditional required parameters

Parameter Type Description
access_keys String For access_key
key_value String For key_value
credentials String For credential
certificate String For certificate
ssh_key String For ssh_key

Example (using registerSecret from the example)

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

Register application variables

Use the variables method (Note: the example uses registerVars) to register application variables.

Method signature

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

Required parameters

Parameter Type Description
env String Environment variables
helm String Application helm
map String Variable map

Example (using registerVars from the example)

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

Delete application authorization

Use the delete method to delete the client application authorization. If dynamic provisioning is enabled for the application, all secrets will be automatically deprovisioned.

Method signature

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

Example

$application = $client->delete();