Pular para o conteúdo principal
Version: 3.25

Métodos DevSecOps

Introdução

O senhasegura DevOps Secret Management (DSM) oferece uma forma rápida e segura de ferramentas e aplicações para solicitar informações confidenciais tais como segredos, credenciais e outros dados sensíveis que são utilizados no ciclo de vida do DevOps.

O objectivo desta seção é fornecer orientação às equipes DevOps que necessitam de integração com o senhasegura para gerir todos os segredos utilizados no seu pipeline.

Nesta seção, serão abordadas as seguintes funções DevOps:

  • Solicitar um secret para ser usado em um aplicativo

  • Disponibilizar uma nova credencial para ser utilizada em um pedido

  • Deprovisionar uma credencial

Método

O serviço web de integração senhasegura possui um método para consultar secrets armazenados na aplicação.

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

CampoTipoDescrição
nomeStringNome da aplicação
descriçãoStringDescrição da aplicação
tagsStringTags que identificam a aplicação
sistemaStringSistema Secret
ambienteStringambiente secret
secret _idInteiroID do secret
secret_nameStringNome do secret
identificadorStringIdentificador do secret
versãoStringVersão do Secret
expiration_dateDia/HoraData de validade do secret
motorStringSecret engine
valoresStringValores 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 dsafffasdfads+FoCrHU0ZZSeIK4rkoB+O55qz0Ns527ROxwslDwn0TsLMwGTr3L4QCmnihmBOF7PlX7027DtldO0gFswdwPDKynAK2Crn6bcBQg8PAw6tUAM7/QWFosW13JzrbDz6gUV+DXMilQPUIJ7CsdfmubE/jFzJ/aBN2f+5mK6Xf3ghvGLo4+PriAUZO/x1XEm4+destdfsadfasafsd+GwwgFYVvTMOUYjjHYcqKjjqah8F8ltN5aN+9P3cwWlbnO/RoORHgpavBcOMDBXOHHtWwT4qSWNZJ4/BIeBr3ACTjqoUrDdAsgr2u+i46l user\n",
"PASSWORD": "sbgiXZU+5qmejm/kYqb+asdffsdaafsd/PPjcBxvr9S0jS1+F7Qc2HZ0N0PqQFw4I0p2X943+Y4wYR8RXSgFqtxuEbYBMv7TJijqIA0fVWkVNdCaqRVIpIbdtGjpUuf+asdffdsa/maPt0T9KfkKJSPh9WY2O8oRkCpRays8Lihp3ZP+asdffsd==",
"ip": "aws.amazon.com"
}
]
}
]
}
}

Criar ou atualizar uma secret

POST https://vault_url/iso/sctm/secret

Criar ou atualizar uma secret

Parâmetros

CampoTipoDescrição
NameStringNome da Secret
IdentityStringIdentidade da Secret
Expiration_DateDate/timeA data de desativação da Secret
DescriptionStringDescrição da Secret
EngineStringA Engine da Secret, deve ser uma engine válida registrada no senhasegura
renew_cloud_timeIntDefine 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_timeIntDefina 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_timeIntDefine 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*StringDeve 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

CampoTipoDescrição
nameStringNome da aplicação
descriptionStringDescrição da aplicação
tagsStringTag para identificação da aplicação
systemStringSistema da secret
environmentStringAmbiente da Secret
secret _idIntegerID da Secret
secret_nameStringNome da Secret
identityStringIdentificador da Secret
versionStringVersão da Secret
expiration_dateDate/TimeData de expiração da Secret
engineStringEngine da Secret
dataStringValor da 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 aplicativo

POST https://vault_url/iso/dapp/application

Crie um novo aplicativo e autenticação.

Parâmetros

CampoTipoDescrição
Unique Key*StringIdentificador único de uma autorização, se o valor for enviado, os campos ambiente e sistema serão ignorados para a busca de autorização
Aplication*StringNome da Aplicação
system*StringSistema a que pertence a autorização, utilizado para consulta, utilizado apenas para escrita em novas autorizações
Envinroment*StringAmbiente a que pertence a autorização, utilizado para consulta, utilizado apenas para escrita em novas autorizações
DescriptionStringDescrição do aplicativo
Authentication MethodStringMé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 BusinessStringDefine a linha de negócios do aplicativo
Application TypeStringDefine o tipo de aplicação
TagsString[]Definir tags de aplicativos
Amazon ARNs (for AWS Authentication)String[]Definir ARNs da aplicação
Cloud Dynamic Provising profileString[]Define perfis de provisionamento dinâmico de nuvem de aplicativos
Credential Dynamic Provising Profile (device and profile)ArrayDefine perfis de provisionamento dinâmico de credenciais efêmeras de aplicativos
Authorized ResourcesString[]Define os recursos autorizados da autorização, utilizados apenas na criação da autorização
Expiration date/timeDate/TimeData de expiração secreta, usada apenas ao criar a autorização
Enable Encryption of sensitive information?BooleanoDefine a criptografia de dados de autorização confidenciais, usado ​​apenas na criação de autorização
Allowed IPsString[]Define os IPs permitidos da autorização, utilizados somente na criação da autorização
Allowed HTTPS refersString[]Define os referenciadores HTTP permitidos da autorização, utilizados apenas ao criar a autorização
Certificate FingerprintStringDefine a fingerprint do certificado de autorização, utilizada apenas na criação da autorização

Resposta

CampoTipoDescrição
IDStringID do aplicativo
SignatureStringAssinatura 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"
}

Provisão de uma credencial

POST https://vault_url/iso/coe/dapp/provision 

Criar um novo segredo de credencial para ser usado em um recipiente.

Parametros

CampoTipoDescriçãoObrig.
pod_nomeStringNome da cápsula que irá usar a credencialSim
deployStringNome do deploy que irá usar a credencialSim
namespaceStringNamespace do contentor que irá utilizar a credencialSim

Resposta

CampoTipoDescrição
nomeStringNome da aplicação
descriçãoStringDescrição da aplicação
tagsStringTags que identificam a aplicação
sistemaStringSecret system
ambienteStringambiente secret
secret_idInteiroID do secret
secret_nomeStringNome secret
identificadorStringIdentificador do secret
versãoStringVersão do Secret
expiration_dateData/HoraData de validade do secret
motorStringSecret engine
ValorStringValor da 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

CampoTipoDescriçãoObrig.
pod_nomeStringNome da cápsula que irá usar a credencialSim
deployStringNome do deploy que irá usar a credencialSim
namespaceStringNamespace do contentor que usará a credencialSim
secret_idInteiroSecret IDSim