Estamos felizes em anunciar que a versão beta do Provedor Terraform do Psono está agora disponível publicamente no Registro de Provedores Terraform.
Equipes de infraestrutura agora podem gerenciar chaves individuais dentro das entradas de Variáveis de Ambiente já criadas no Psono como parte do seu fluxo de trabalho com Terraform. O provedor pode preservar valores existentes, gerar novas senhas, rotacionar valores gerenciados, gravar valores fornecidos externamente e ler segredos através de recursos efêmeros do Terraform.
O tratamento de segredos em infraestrutura como código exige cuidados especiais. Uma flag de sensibilidade pode esconder um valor da saída padrão do CLI, mas isso não necessariamente impede que esse valor seja salvo no estado do Terraform. O provedor do Psono utiliza as capacidades de somente escrita e recursos efêmeros do Terraform para evitar esse problema e requer o Terraform 1.11 ou superior.
O provedor suporta três fluxos de trabalho comuns:
Isso torna possível incluir operações do ciclo de vida de segredos no Terraform enquanto mantém os valores reais no Psono.
O provedor utiliza uma chave de API restrita do Psono. Você atribui apenas as entradas de Variáveis de Ambiente que o Terraform precisa e concede permissão de leitura para todas as operações. Para criar, atualizar, rotacionar ou excluir chaves, é necessário permissão de escrita adicionalmente. O provedor não precisa de uma chave de API irrestrita e não pode criar entradas de cofres, pastas ou depósitos de dados.
A criptografia e descriptografia ocorrem localmente no provedor. A verificação do certificado HTTPS não pode ser desativada, e autoridades certificadoras privadas podem ser adicionadas através de um bundle PEM de CA. Sistemas em produção devem sempre usar uma URL Psono com HTTPS.
É necessário o Terraform 1.11 ou mais recente. Adicione o provedor à sua configuração do Terraform:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configure as credenciais por variáveis de ambiente em vez de colocá-las nos arquivos do Terraform:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='SUBSTITUA_PELO_ID_DA_API_KEY'
export PSONO_API_SECRET_KEY='SUBSTITUA_PELO_API_SECRET_KEY'
Depois, inicialize o diretório de trabalho:
terraform init
O Terraform baixa a versão assinada do provedor e verifica sua assinatura de checksum.
O recurso abaixo gerencia o DB_PASSWORD em uma entrada existente de Variáveis de Ambiente do Psono:
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
length = 32
min_lower = 4
min_upper = 4
min_numeric = 4
min_special = 4
rotation_version = 1
}
Se a chave já existir, o provedor a adota sem alterar seu valor. Se não existir, o provedor gera e armazena um novo valor no Psono. O valor gerado não é retornado pelo recurso gerenciado e não entra no estado do Terraform.
Incremente o rotation_version quando o Terraform precisar gerar uma substituição. Isso também substitui valores que foram originalmente adotados ou importados, portanto, mudanças de rotação devem ser revisadas antes de aplicá-las.
Um valor efêmero de outro provedor pode ser gravado no Psono com o value_wo:
ephemeral "random_password" "database" {
length = 32
}
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
value_wo = ephemeral.random_password.database.result
value_wo_version = 1
}
O valor fica disponível durante a operação do Terraform, mas não é armazenado no plano ou estado. Incremente o value_wo_version quando o Terraform precisar gravar uma substituição.
Destruir um recurso gerenciado mantém sua chave no Psono por padrão. Isso protege valores que o Terraform adotou, mas não criou. Defina deletion_policy = "Delete" apenas quando o Terraform deve remover explicitamente a chave do Psono durante a destruição ou substituição do recurso.
O provedor é open source e está disponível hoje:
A versão beta foca deliberadamente em entradas de Variáveis de Ambiente e chaves de API restritas. Isso mantém permissões reduzidas, evita acesso irrestrito ao cofre e proporciona uma base prática para gerenciar segredos operacionais com segurança a partir do Terraform.