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
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
:
-
bool_plperl
-
jsonb_plperl
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).