- 7 minutos de leitura
- Imprimir
- Tema escuroTema claro
- Pdf
DevOps Secret Manager
- 7 minutos de leitura
- Imprimir
- Tema escuroTema claro
- Pdf
O senhasegura DevOps Secret Management (DSM) proporciona uma maneira rápida e segura para que ferramentas e aplicativos solicitem informações confidenciais, como segredos, credenciais e outros dados sensíveis utilizados no ciclo de vida DevOps.
O objetivo deste documento é fornecer orientação às equipes DevOps que necessitam de integração com o senhasegura para gerir todos os segredos utilizados no seu pipeline.
Neste documento, serão abordadas as seguintes funções DevOps:
- Consultar um secret.
- Criar ou atualizar um secret.
- Criar ou atualizar uma aplicação.
- Provisionar uma credencial.
- Deprovisionar uma credencial.
- Inativar uma autorização.
Acesse também os documentos APIs para automações e API de gerenciamento de chaves criptográficas.
Consultar secret
GET https://vault_url/iso/dapp/application
O método de aplicação consulta todos os segredos ligados a uma autorização de aplicação.
Resposta
Campo | Tipo | Descrição |
---|---|---|
name | String | Nome da aplicação. |
description | String | Descrição da aplicação. |
tags | String | Tags que identificam a aplicação. |
system | String | Sistema do secret. |
environment | String | Ambiente do secret. |
secret_id | Inteiro | ID do secret. |
secret_name | String | Nome do secret. |
identity | String | Identificador do secret. |
version | String | Versão do secret. |
expiration_date | Dia/Hora | Data de validade do secret. |
engine | String | Secret engine. |
data | Array de dados | Valores do secret. |
{
"response": {
"status": 200,
"mensagem": "Application 5",
"erro": false,
"message": "Application 5",
"error": false
},
"application": {
"name": "postman",
"description": null,
"tags": [
""
],
"system": "back",
"environment": "test",
"secrets": [
{
"secret_id": "106",
"secret_name": "application5",
"identity": "application5",
"version": "",
"expiration_date": "",
"engine": "Kubernetes",
"data": [
{
"hostname": "application5_v_test",
"username": "ADMIN_V_USR",
"password": "ADMIN_V_PW",
"additional_information": "ADMIN_V_SCHEMA",
"ip": "app.application.com"
},
{
"access_key_id": "LKU5YC6QWAT487S4KEK",
"secret_access_key": "sack10821du07f9sacfsdaasdf",
"TTL": null
},
{
"my_key_name": "my_key_value",
"my_key_name_2": "my_key_value_2"
}
]
}
]
}
}
Resposta com SSH como secret
{
"response": {
"status": 201,
"mensagem": "Secret created successfully.",
"erro": false,
"cod_erro": 0,
"message": "Secret created successfully.",
"error": false,
"error_code": 0
},
"application": {
"name": "postman",
"description": "teste",
"tags": [
"abc",
"def",
"teste"
],
"system": "inetconfig",
"environment": "stage",
"secrets": [
{
"secret_id": "3",
"secret_name": "state_secret",
"identity": "cart/americanas/npf/cassandra",
"version": "205",
"description": "Chamada de API",
"expiration_date": "2022-08-18 11:10:00",
"engine": "GitLab",
"data": [
{
"HOSTNAME": "AWS Gateway",
"USERNAME": "user",
"CONNECTION_STRING": "mongodb://api-server/auth",
"private_key": "An error occurred while encrypting the text",
"public_key": "ssh-rsa h+FntWwPBOwYUM27FOFUVBwf57Lgq+ZMOEmkfsN7T4QrrwBswkL+CDws0DmOdJGsZLl47O0HYpds6FQ/roXb2AXP3X4sCrDtAs4tN6bcDd3WgUKIuPns+qXejHq+5wsxBJdWUMyQfCQOwM0j7dsIK4rnGJlh7jAM4ROs/dXqkZ0Y7fbE2PPlomXvAKaF9GmHMcLB56j5o2K8aNc7YrTiLHc5NXX+GlJqOB5UWfiRHoDGP/Cr6B",
"PASSWORD": "5RxfSKds+djXZ9tR3uEJ8fppXaKYmf2+oI4CkFiaIVH0jZWV7T//s+PY8jgdP1WkbmYqrqHXpMqUjNs0+qI/9vYBvRkEb4Y0CpcT4jpFw2Hqbs+dc+T8RNdKkWq+daVh0Gf9mQIS7VMIjaR+O+iqSYkBsbZYPp7qsJ0+8txfwT==vPj",
"ip": "aws.amazon.com"
}
]
}
]
}
}
Criar ou atualizar um secret
POST https://vault_url/iso/sctm/secret
Parâmetros
Campo | Tipo | Descrição |
---|---|---|
name | String | Nome do secret. |
identity | String | Identificador do secret. |
expiration_Date | Date/time | A data de desativação do secret. |
description | String | Descrição do secret. |
engine | String | A engine do secret, deve ser uma engine válida registrada no senhasegura. |
renew_cloud_time | Int | Define o tempo para renovar as chaves de acesso à nuvem em minutos. Se omitido é ignorado, mas com a array vazia, irá desabilitar a renovação automática. |
renew_credential_time | Int | Defina o tempo para renovar as credenciais em minutos. Se omitido é ignorado, mas com a array vazia, irá desabilitar a renovação automática. |
renew_ephemeral_credential_time | Int | Define o tempo para renovar as credenciais efêmeras em minutos. Se omitido é ignorado, mas com a array vazia, irá desabilitar a renovação automática. |
data | String | Deve ser um json codificado em base64 válido como em Exemplo Data. |
Exemplo Data
{
access_keys:
[
{
access_key:
{
type: "aws",
fields:
{
access_key_id: "AKIAREVEFYNPPAOT3PF6",
access_key_id_label: "AWS_ACCESS_KEY_ID",
secret_access_key: "AStrongPass",
secret_access_key_label: "AWS_SECRET_ACCESS_KEY",
}
}
},
],
credentials:
[
{
credential:
{
fields:
{
user: "cred_a",
user_label: "USERNAME",
host: "aws.amazon.com",
host_label: "HOSTNAME",
password: "StrongPass",
password_label: "PASSWORD",
additional_information: "mongodb://api-server/auth",
additional_information_label: "CONNECTION_STRING",
}
}
},
{
credential:
{
fields:
{
user: "an_username",
user_label: "USERNAME",
host: "an_ip",
host_label: "HOSTNAME",
password: "StrongPass",
password_label: "PASSWORD",
additional_information: "the_additional_info",
}
}
},
]
}
Resposta
Campo | Tipo | Descrição |
---|---|---|
name | String | Nome da aplicação. |
description | String | Descrição da aplicação. |
tags | String | Tag para identificação da aplicação. |
system | String | Sistema do secret. |
environment | String | Ambiente do secret. |
secret_id | Integer | ID do secret. |
secret_name | String | Nome do secret. |
identity | String | Identificador do secret. |
version | String | Versão do secret. |
expiration_date | Date/Time | Data de expiração do secret. |
engine | String | Engine do secret |
data | Array de dados | Valores do secret. |
{
"response": {
"status": 201,
"mensagem": "Secret created successfully.",
"erro": false,
"cod_erro": 0,
"message": "Secret created successfully.",
"error": false,
"error_code": 0
},
"application": {
"name": "postman",
"description": "teste",
"tags": [
"abc",
"def",
"teste"
],
"system": "inetconfig",
"environment": "stage",
"secrets": [
{
"secret_id": "7",
"secret_name": "state_secret",
"identity": "example_2",
"version": "2",
"description": "Chamada de API",
"expiration_date": "2022-08-18 11:10:00",
"engine": "GitLab",
"data": [
{
"AWS_ACCESS_KEY_ID": "AKIAREVEFYNPPAOT3PF6",
"AWS_SECRET_ACCESS_KEY": "fd/ZmmciA4d8CqkXIzK8l2oWrUY7+fds/aasdf+WwP5cTAQW5mpr9XAHiGS1zkRQEUvJ7pta3ABrAeRt3QH6UuuGwPunATFdhFvAG/lTlrby6z+dfdfas/cKUzQpHpQE0UNxNwzCauRpbPDOUzMnpRopbyGQDzdkN0uXSXJLh3kraX+/qQ/v3riN1pB+Wuzd4zvxLfeH6oA==",
"TTL": ""
},
{
"APP": "Postman",
"CONNECTION_STRING": "mongodb://api-server/auth",
"DATE": "date",
"HOSTNAME": "an_ip",
"PASSWORD": "StrongPass",
"USERNAME": "an_username"
}
]
}
]
}
}
Criar ou atualizar uma aplicação
POST https://vault_url/iso/dapp/application
Parâmetros
Campo | Tipo | Descrição |
---|---|---|
name | String | Nome do secret. |
identity | String | Identificador do secret. |
expiration_date | Data/Hora | Data de desativação do secret. |
description | String | Descrição do secret. |
engine | String | A engine do secret. Eeve ser uma engine válida registrada no senhasegura |
renew_cloud_time | Int | Defina o tempo de renovação das chaves de acesso à nuvem em minutos. Se omitido, desativará a renovação automática |
renew_credential_time | Int | Defina o tempo de renovação para credenciais em minutos. Se omitido, desativará a renovação automática |
renew_efemeral_credential_time | Int | Defina o tempo de renovação para credenciais temporárias em minutos. Se omitido, desativará a renovação automática |
Data | String | Deve ser um json codificado em base64 válido |
Resposta
Campo | Tipo | Descrição |
---|---|---|
unique key | String | Identificador único de uma autorização, se o valor for enviado, os campos ambiente e sistema serão ignorados para a busca de autorização |
application | String | Nome da Aplicação |
system | String | Sistema a que pertence a autorização, utilizado para consulta, utilizado apenas para escrita em novas autorizações |
envinroment | String | Ambiente a que pertence a autorização, utilizado para consulta, utilizado apenas para escrita em novas autorizações |
description | String | Descrição do aplicativo |
authentication Method | String | Método de autenticação e autorização do aplicativo, este parâmetro é utilizado apenas na criação do aplicativo, ao atualizá-lo é ignorado |
line of Business | String | Define a linha de negócios do aplicativo |
Application Type | String | Define o tipo de aplicação |
Tags | String | Definir tags de aplicativos |
Amazon ARNs (for AWS Authentication) | String | Definir ARNs da aplicação |
Cloud Dynamic Provising profile | String | Define perfis de provisionamento dinâmico de nuvem de aplicativos |
Credential Dynamic Provising Profile (device and profile) | Array | Define perfis de provisionamento dinâmico de credenciais efêmeras de aplicativos |
Authorized Resources | String | Define os recursos autorizados da autorização, utilizados apenas na criação da autorização |
Expiration date/time | Date/Time | Data de expiração secreta, usada apenas ao criar a autorização |
Enable Encryption of sensitive information? | Booleano | Define a criptografia de dados de autorização confidenciais, usado apenas na criação de autorização |
Allowed IPs | String | Define os IPs permitidos da autorização, utilizados somente na criação da autorização |
Allowed HTTPS refers | String | Define os referenciadores HTTP permitidos da autorização, utilizados apenas ao criar a autorização |
Certificate Fingerprint | String | Define a fingerprint do certificado de autorização, utilizada apenas na criação da autorização |
Resposta
Campo | Tipo | Descrição |
---|---|---|
ID | String | ID do aplicativo |
Signature | String | Assinatura do Aplicativo |
{
"response": {
"status": 200,
"mensagem": "Application updated: (4) postman | Authorization found: (6)",
"erro": false,
"cod_erro": 0,
"message": "Application updated: (4) postman | Authorization found: (6)",
"error": false,
"error_code": 0
},
"id": "applicationID",
"signature": "signature"
}
Provisionar uma credencial
POST https://vault_url/iso/coe/dapp/provision
Criar um novo segredo de credencial para ser usado em um recipiente.
Parâmetros
Campo | Tipo | Descrição | Obrig. |
---|---|---|---|
pod_nome | String | Nome da cápsula que irá usar a credencial. | Sim |
deploy | String | Nome do deploy que irá usar a credencial. | Sim |
namespace | String | Namespace do contentor que irá utilizar a credencial. | Sim |
Resposta
Campo | Tipo | Descrição |
---|---|---|
name | String | Nome da aplicação. |
description | String | Descrição da aplicação. |
tags | String | Tags que identificam a aplicação. |
system | String | Sistema do secret. |
environment | String | Ambiente do secret. |
secret_id | Inteiro | ID do secret. |
secret_name | String | Nome do secret. |
identity | String | Identificador do secret. |
version | String | Versão do secret |
expiration_date | Data/Hora | Data de validade do secret. |
engine | String | Engine do secret. |
data | String | Valor do secret. |
{
"response": {
"status": 200,
"mensagem": "Application 6",
"erro": false
},
"application": {
"name": "runb",
"description": null,
"tags": [
""
],
"system": "senhasegura",
"environment": "lab",
"secrets": [
{
"secret_id": "3",
"secret_name": "secure-demo",
"identity": "secure-demo",
"version": "",
"expiration_date": "",
"engine": "Kubernetes",
"data": {
"APP_VAR1": "fX6v8vh7TADY",
"APP_VAR2": "vlln0XkBNWIk",
"APP_VAR3": "7qWgm1EBFnQb",
"APP_DB_PASSWORD": "4i8Vm0khqTWs",
"APP_SECRET": "GSePWjXyd91K"
}
}
]
}
}
Desprovisionar uma credencial
POST https://vault_url/iso/coe/dapp/deprovision
Remove a credencial a ser utilizada por um container.
Parâmetros
Campo | Tipo | Descrição | Obrig. |
---|---|---|---|
pod_nome | String | Nome da cápsula que irá usar a credencial. | Sim |
deploy | String | Nome do deploy que irá usar a credencial. | Sim |
namespace | String | Namespace do contentor que usará a credencial. | Sim |
secret_id | Int | ID do secret. | Sim |
Deletar uma autorização
DELETE https://vault_url/iso/dapp/application/authorization
Inativa uma autorização para uma aplicação.
Resposta
{
"code": 200,
"response": {
"status": 200,
"message": "Authorization deleted successfully.",
"error": false,
"error_code": 0,
"detail": "",
"mensagem": "Authorization deleted successfully.",
"erro": false,
"cod_erro": 0
}
}
Erros
404 - Autorização não encontrada
{
"code": 404,
"response": {
"status": 404,
"message": "Resource sub not found",
"error": true,
"error_code": 4,
"detail": "",
"mensagem": "Resource sub not found",
"erro": true,
"cod_erro": 4
}
}
401 - A autorização que deseja inativar já está inativa
{
"code": 401,
"response": {
"status": 401,
"message": "Inactive authorization",
"error": true,
"error_code": 1,
"detail": "",
"mensagem": "Inactive authorization",
"erro": true,
"cod_erro": 1
}
}
Você não possui autorização para executar ações na API
{
"message": "no Route matched with those values"
}