Melhores Práticas de Extensões
Como Usar Esta Lista
- Revise antes de aprovar qualquer
CREATE EXTENSIONnovo em produção. - Fixe versões em Terraform, Ansible e SQL de migração em conjunto.
- Revise trimestralmente contra exportações de inventário de
pg_extension.
A - Governança
- Mantenha um ADR de lista de permissões escrita. Cada extensão instalada mapeia para o proprietário, a versão fixada e a data de revisão.
- Bloqueie extensões não confiáveis por padrão.
plpython3u,file_fdwedblinkexigem exceção do CISO. - Centralize a autoridade de instalação. Função dedicada
dba_deploy, não senhas de superusuário compartilhadas. - Registre DDL de extensões. Gatilho de evento ou
pgauditcapturaCREATE EXTENSIONcom o ator e o banco de dados. - Mesma política em staging. Instalações experimentais se infiltram em restaurações de backup e scripts de migração.
B - Instalação e Layout
- Use um schema
extensionsdedicado. Mantémpubliclimpo e esclarecesearch_pathpara funções de aplicativo. - Fixe a versão na instalação:
CREATE EXTENSION vector WITH SCHEMA extensions VERSION '0.8.0'; - Instale pacotes do SO antes do SQL. Arquivos de controle de extensão devem existir para sua versão principal do Postgres (18).
- Configure
preloadantes de reiniciar. Adicione entradasshared_preload_librariesapenas com uma janela de reinicialização planejada. - Conceda USAGE, não CREATE, a funções de aplicativo. Aplicativos chamam funções; eles não instalam extensões.
C - Atualizações e Operações
- Atualize pacotes em todos os nós primeiro. Réplicas e standbys do Patroni precisam de binários
.socorrespondentes antes deALTER EXTENSION UPDATE. - Teste de fumaça após cada atualização de extensão. Consulta de distância PostGIS, consulta de distância pgvector, criptografia pgcrypto ida e volta.
- Planeje
REINDEXpara alterações de opclass de índice. Notas de lançamento do pgvector e PostGIS indicamREINDEXobrigatório. - Itere por todos os bancos de dados.
template1,postgrese bancos de dados de análise são fáceis de esquecer. - Arquive o inventário trimestralmente.
SELECT * FROM pg_extensionpor banco de dados armazenado com IDs de ticket de alteração.
D - Segurança e Conformidade
- Revogue a execução de PUBLIC em funções sensíveis. A instalação de extensão não implica chamabilidade em todo o aplicativo.
- Mantenha extensões fora das funções de DDL de replicação lógica. Assinantes devem corresponder às versões antes da repetição.
- Verifique CVEs em versões fixadas. pgvector, PostGIS e pgcrypto têm ciclos de lançamento independentes do núcleo do Postgres.
- Documente as implicações da licença. A licença GPL do PostGIS pode importar para o empacotamento de SaaS; registre no ADR.
- Valide runbooks de restauração. A restauração PITR reaplica o conjunto de extensões antigo; execute o hook de inventário pós-restauração.
FAQs
Extensões mínimas para RAG?
Geralmente apenas `vector`. Adicione `pgcrypto` se você criptografar chaves de API em repouso.Extensões devem ficar em template1?
Somente se cada novo banco de dados precisar delas. Caso contrário, instale explicitamente por banco de dados de aplicativo.Exemplo de pin IaC?
Versão do `engine_version` do Terraform + versão do pacote `postgresql-18-pgvector` do Ansible + `VERSION '0.8.0'` do SQL do Flyway.Detectar instalações ocultas?
Trabalho noturno comparando `pg_extension` com a lista de permissões; alerte sobre diferenças.Atraso do fornecedor de nuvem?
O pin interno não pode exceder o que RDS/Cloud SQL/Neon expõe em `pg_available_extensions`.Remover extensões não utilizadas?
Sim, após revisão de `pg_depend`. Reduz a superfície de atualização e CVE.Múltiplos schemas de extensões?
Prefira um único schema `extensions`. Múltiplos schemas complicam as concessões.Extensão e poolers de conexão?
O modo de transação do pgbouncer é aceitável; extensões são do lado do servidor. Observe as instruções preparadas com alguns drivers.Documentar em runbooks?
Link para ADR, SQL de instalação, SQL de atualização e limitações de rollback (apenas restauração).Próximo gatilho de revisão?
Atualização principal do Postgres, atualização menor do pgvector com alterações de índice, ou novo recurso de produto que requer PostGIS.Relacionados
- Noções Básicas de Extensões - CREATE EXTENSION e preload
- Política de Lista de Permissões de Extensões - ADR corporativo
- Caminho de Atualização de Extensões - ALTER EXTENSION UPDATE
- Extensões Confiáveis vs. Não Confiáveis - revisão de segurança
- Noções Básicas de PostgreSQL Gerenciado na Nuvem - matrizes de extensão na nuvem
Versões de Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PostGIS 3.5+, pgbouncer 1.x e Patroni 3.x.