サポートされている PostgreSQL 拡張機能バージョン
RDS for PostgreSQL は、多くの PostgreSQL エクステンションをサポートしています。PostgreSQL コミュニティでは、これらをモジュールと呼ぶことがあります。エクステンションは、PostgreSQL エンジンが提供する機能を拡張します。Amazon RDS がサポートするエクステンションのリストは、該当する PostgreSQL バージョンのデフォルトの DB パラメータグループで確認できます。また、次の例に示すように、psql
で rds.extensions
パラメータを表示することで、最新のエクステンションのリストを確認することもできます。
SHOW rds.extensions;
注記
マイナーバージョンのリリースで追加されたパラメータは、rds.extensions
で psql
パラメータを使用する際に正しく表示されない場合があります。
RDS for PostgreSQL 13 以降、rds_superuser
以外のデータベースユーザーがインストールできる拡張機能があります。これらは、信頼できる拡張機能として知られています。詳細については、「PostgreSQL 信頼できるエクステンション」を参照してください。
RDS for PostgreSQL の特定のバージョンでは、rds.allowed_extensions
パラメータに対応しています。このパラメータにより、rds_superuser
は RDS for PostgreSQL DB インスタンスにインストールできる拡張機能を制限します。(詳しくは、「PostgreSQL エクステンションのインストールを制限する」を参照してください。)
利用できる各 RDS for PostgreSQL バージョンでサポートされている PostgreSQL 拡張機能のリストについては、Amazon RDS for PostgreSQL リリースノートの「Amazon RDS でサポートされる PostgreSQL の拡張機能」を参照してください。
PostgreSQL エクステンションのインストールを制限する
PostgreSQL DB インスタンスにインストールできるエクステンションを制限できます。デフォルトでは、このパラメータは設定されていないため、ユーザーに権限がある場合は、サポートされている任意の拡張機能を追加できます。そのためには、rds.allowed_extensions
パラメータをカンマで区切った拡張子名の文字列に設定します。このパラメータに拡張機能のリストを追加すると、RDS for PostgreSQL DB インスタンスで使用できる拡張機能が明示的に特定できます。その後、PostgreSQL DB インスタンスにインストールできるのは、これらのエクステンションだけです。
rds.allowed_extensions
パラメータのデフォルトの文字列は '*' です。これは、そのエンジンのバージョンで使用できるエクステンションは何でもインストールできることを意味します。動的パラメータであるため、rds.allowed_extensions
パラメータを変更しても、データベースを再起動する必要はありません。
rds.allowed_extensions
パラメータを使用するには、PostgreSQL DB インスタンスエンジンは次のバージョンのいずれかである必要があります。
-
すべての PostgreSQL 16 バージョン
-
PostgreSQL 15 以降のすべてのバージョン
-
PostgreSQL 14 以降のすべてのバージョン
-
PostgreSQL 13.3 以降のマイナーバージョン
-
PostgreSQL 12.7 以降のマイナーバージョン
どのエクステンションのインストールが許可されているかを確認するには、次の psql コマンドを使用します。
postgres=>
SHOW rds.allowed_extensions;
rds.allowed_extensions ------------------------ *
エクステンションが rds.allowed_extensions
パラメータのリストから除外される前にインストールされていた場合でも、エクステンションは正常に使用でき、ALTER EXTENSION
や DROP
EXTENSION
などのコマンドは引き続き機能します。ただし、エクステンションが制限されると、制限されたエクステンションの CREATE EXTENSION
コマンドは失敗します。
CREATE EXTENSION CASCADE
とのエクステンションの依存関係のインストールも制限されています。エクステンションとその依存関係は、rds.allowed_extensions
で指定する必要があります。拡張依存のインストールが失敗すると、CREATE EXTENSION CASCADE
文全体が失敗します。
rds.allowed_extensions
パラメータにエクステンションが含まれていない場合、インストールしようとすると、次のようなエラーが表示されます。
ERROR: permission denied to create extension "extension-name
"
HINT: This extension is not specified in "rds.allowed_extensions".
PostgreSQL 信頼できるエクステンション
ほとんどの PostgreSQL エクステンションをインストールするには、rds_superuser
権限が必要です。PostgreSQL 13 では、信頼できるエクステンションが導入されました。これにより、一般ユーザーに rds_superuser
特権を付与する必要が少なくなります。この機能を使用すると、ユーザーは、CREATE
ロールを要求する代わりに、現在のデータベースに対する rds_superuser
権限を持っている場合、多くのエクステンションをインストールできます。詳細については、PostgreSQL ドキュメントの SQL CREATE EXTENSION
以下に、現在のデータベースに対する CREATE
権限を持ち、rds_superuser
ロールを必要としないユーザーがインストールできるエクステンションを示します。
-
bool_plperl
-
jsonb_plperl
利用できる各 RDS for PostgreSQL バージョンでサポートされている PostgreSQL 拡張機能のリストについては、Amazon RDS for PostgreSQL リリースノートの「Amazon RDS でサポートされる PostgreSQL の拡張機能」を参照してください。