Versões de extensões do PostgreSQL compatíveis - Amazon Relational Database Service

Versões de extensões do PostgreSQL compatíveis

O RDS para PostgreSQL é compatível com várias extensões do PostgreSQL. A comunidade PostgreSQL às vezes se refere a elas como módulos. Extensões expandem a funcionalidade fornecida pelo mecanismo PostgreSQL. Você pode encontrar uma lista de extensões às quais o Amazon RDS oferece suporte no grupo de parâmetros de banco de dados padrão para essa versão do PostgreSQL. Você também pode ver a lista de extensões atuais que usam o psql exibindo o parâmetro rds.extensions conforme o exemplo a seguir.

SHOW rds.extensions;
nota

Os parâmetros adicionados em uma versão secundária podem ser exibidos incorretamente ao usar o parâmetro rds.extensions em psql.

A partir do RDS para PostgreSQL 13, determinadas extensões podem ser instaladas por usuários do banco de dados que não sejam o rds_superuser. Elas são conhecidas como extensões confiáveis. Para saber mais, consulte Extensões confiáveis do PostgreSQL.

Determinadas versões do RDS para PostgreSQL oferecem suporte ao parâmetro rds.allowed_extensions. Esse parâmetro permite que um rds_superuser limite as extensões que podem ser instaladas na instância de banco de dados do RDS para PostgreSQL. Para ter mais informações, consulte Restringir a instalação de extensões do PostgreSQL.

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte “PostgreSQL extensions supported on Amazon RDS” (Extensões do PostgreSQL compatíveis com o Amazon RDS) em “Amazon RDS for PostgreSQL Release Notes” (Notas de lançamento do Amazon RDS para PostgreSQL).

Restringir a instalação de extensões do PostgreSQL

Você pode restringir quais extensões podem ser instaladas em uma instância de banco de dados PostgreSQL. Por padrão, esse parâmetro não está definido, portanto, qualquer extensão compatível pode ser adicionada se o usuário tiver permissões para isso. Para fazer isso, defina o parâmetro rds.allowed_extensions para uma string de nomes de extensão separados por vírgulas. Ao adicionar uma lista de extensões a esse parâmetro, você identifica explicitamente as extensões que a instância de banco de dados do RDS para PostgreSQL pode usar. Somente essas extensões podem ser instaladas na instância de banco de dados PostgreSQL.

A string padrão para o rds.allowed_extensions parâmetro é '*', o que significa que qualquer extensão disponível para a versão do motor pode ser instalada. Alterar o parâmetro rds.allowed_extensions não requer uma reinicialização do banco de dados porque é um parâmetro dinâmico.

O mecanismo de instância de banco de dados PostgreSQL deve ser uma das seguintes versões para você usar o parâmetro rds.allowed_extensions:

  • Todas as versões 16 do PostgreSQL

  • PostgreSQL 15 e todas as versões posteriores

  • PostgreSQL 14 e todas as versões posteriores

  • PostgreSQL 13.3 e versões secundárias posteriores

  • PostgreSQL 12.7 e versões secundárias posteriores

Para ver quais instalações de extensão são permitidas, use o comando psql a seguir.

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

Se uma extensão foi instalada antes de ser deixada de fora da lista no parâmetro rds.allowed_extensions, a extensão ainda pode ser usada normalmente, e comandos como ALTER EXTENSION e DROP EXTENSION continuarão a funcionar. No entanto, depois que uma extensão é restrita, CREATE EXTENSION os comandos para a extensão restrita falharão.

Instalação de dependências de extensão com CREATE EXTENSION CASCADE também são restritas. A extensão e suas dependências devem ser especificadas em rds.allowed_extensions. Se uma instalação de dependência de extensão falhar, a instrução CREATE EXTENSION CASCADE inteira falhará.

Se uma extensão não estiver incluída no parâmetro rds.allowed_extensions, você verá um erro como o mostrado a seguir, caso tente instalá-la.

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

Extensões confiáveis do PostgreSQL

Para instalar a maioria das extensões do PostgreSQL são necessários privilégios de rds_superuser. O PostgreSQL 13 introduziu as extensões confiáveis, o que reduz a necessidade de privilégios de rds_superuser para usuários comuns. Com esse recurso, os usuários podem instalar diversas extensões, se tiverem o privilégio CREATE no banco de dados atual, em vez de precisarem ter a função rds_superuser. Para obter mais informações, consulte o comando SQL CREATE EXTENSION na documentação do PostgreSQL.

A seguir listamos as extensões que podem ser instaladas por um usuário que tem o privilégio CREATE no banco de dados atual e não necessitam da função rds_superuser:

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte PostgreSQL extensions supported on Amazon RDS (Extensões do PostgreSQL compatíveis com o Amazon RDS) em “Amazon RDS for PostgreSQL Release Notes” (Notas de lançamento do Amazon RDS para PostgreSQL).