DevOps Secret Manager
  • 7 minutos de leitura
  • Tema escuro
    Tema claro
  • Pdf

DevOps Secret Manager

  • Tema escuro
    Tema claro
  • Pdf

Article Summary

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

Para mais informações sobre as APIs para automações do DSM, acesse o documento sobre APIs para automações.

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 um secret

POST https://vault_url/iso/sctm/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
DataStringDeve 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 um aplicativo

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

Parâmetros

CampoTipoDescrição
NomeStringNome Secreto
IdentidadeStringIdentidade Secreta
Expiration_DateData/HoraData de desativação do segredo
DescriçãoStringDescrição secreta
EngineStringO Engine da Secret deve ser um engine válido registrado no senhasegura
renew_cloud_timeIntDefina o tempo de renovação das chaves de acesso à nuvem em minutos. Se omitido, desativará a renovação automática
renew_credential_timeIntDefina o tempo de renovação para credenciais em minutos. Se omitido, desativará a renovação automática
renew_efemeral_credential_timeIntDefina o tempo de renovação para credenciais temporárias em minutos. Se omitido, desativará a renovação automática
DadosStringDeve ser um json codificado em base64 válido

Resposta

CampoTipoDescrição
Unique KeyStringIdentificador único de uma autorização, se o valor for enviado, os campos ambiente e sistema serão ignorados para a busca de autorização
AplicationStringNome da Aplicação
SystemStringSistema a que pertence a autorização, utilizado para consulta, utilizado apenas para escrita em novas autorizações
EnvinromentStringAmbiente 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
TagsStringDefinir tags de aplicativos
Amazon ARNs (for AWS Authentication)StringDefinir ARNs da aplicação
Cloud Dynamic Provising profileStringDefine 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 ResourcesStringDefine 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 IPsStringDefine os IPs permitidos da autorização, utilizados somente na criação da autorização
Allowed HTTPS refersStringDefine 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

Este artigo foi útil?

What's Next