[アップデート] Amazon Aurora PostgreSQL 16.8 がリリースされたので、Babelfish 4.5 のアップデート内容を確認してみた
いわさです。
先日 Aurora PostgreSQL 16.8 がリリースされました。
RDS for PostgeSQL では 16.7 がリリースされていたのですが、Aurora ではスキップされましたね。
背景として、2025 年 2 月 13 日に PostgreSQL 本体の 16.7 がリリースされているのですが、CVE-2025-1094 関連でエラーが発生する可能性がありました。
これに対処するために本来 2025 年 5 月 8 日を予定していた PostgreSQL 16.8 が 2025 年 2 月 20 日に定期スケジュール外でリリースされることになりました。
RDS for PostgreSQL でいうと 2025 年 2 月 13 日に 16.7 がリリースされ、2025 年 2 月 21 日には 16.8 がリリースされています。
ちなみに 16.7 はもうコンソールから選択することが出来ません。
Aurora PostgreSQL は、RDS for PostgreSQL から少し遅れてバージョンサポートされるため 16.7 自体がリリースされておらず 16.6 の次に 16.8 がリリースされる形となりました。
Babelfish 4.5.0 もリリース
Aurora PostgreSQL では新しいバージョンがリリースされるごとに Babelfish のバージョンも更新されており、SQL Server との互換性が上がっていきます。
というわけで今回も Babelfish の新しい機能を確認してみることに。
次のように Aurora PostgreSQL 16.8 を選択して作成します。途中の Babelfish 有効化オプションを有効にしましょう。(デフォルトは OFF)
まずはpsql
で接続してバージョン確認してみます。
% psql -h hoge0411babelfish.cluster-cpnu9ipu74g4.ap-northeast-1.rds.amazonaws.com -U postgres -d babelfish_db
Password for user postgres:
psql (14.15 (Homebrew), server 16.8)
WARNING: psql major version 14, server major version 16.
Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
babelfish_db=> SELECT aurora_version() AS aurora_version, version() AS postgresql_version, sys.version() AS Babelfish_compatibility, sys.SERVERPROPERTY('BabelfishVersion') AS Babelfish_Version;
aurora_version | postgresql_version | babelfish_compatibility | babelfish_version
----------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------
16.8.0 | PostgreSQL 16.8 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 10.5.0, 64-bit | Babelfish for Aurora PostgreSQL with SQL Server Compatibility - 12.0.2000.8+| 4.5.0
| | Mar 25 2025 01:11:18 +|
| | Copyright (c) Amazon Web Services +|
| | PostgreSQL 16.8 on x86_64-pc-linux-gnu (Babelfish 4.5.0) |
(1 row)
Babelfish バージョンが 4.5.0 であることが確認できました。
新機能を確認してみる
Babelfish のリリースノートはこちらになります。
今回のリリース 4.5.0 ではアプリケーションレイヤーが意識する大きな新機能はなさそうな感じがしますね。
固定データベースロールがいくつかサポートされているくらいで、そのほかは小さな不具合修正がリリースされている感じです。
以下を参考に固定データベースロールを付与させてみます。
まずはユーザー作成し、ロールの確認をしてみます。
1> create login hogeuser with password = 'password';
2> go
1> create user hogeuser;
2> go
1> alter role db_datareader add member hogeuser;
2> go
1> base_role_members.role_principal_id = roles.principal_id INNER JOIN sys.database_principals AS members ON database_role_members.member_principal_id = members.principal_id;
2> go
RolePrincipalID RolePrincipalName MemberPrincipalID MemberPrincipalName
--------------- -------------------------------------------------------------------------------------------------------------------------------- ----------------- --------------------------------------------------------------------------------------------------------------------------------
16384 db_owner 24145 dbo
16390 db_datareader 24181 hogeuser
(2 rows affected)
データベース管理者で事前にテーブルやレコードを作成しておきます。
% sqlcmd -S hoge0411babelfish.cluster-cpnu9ipu74g4.ap-northeast-1.rds.amazonaws.com -U postgres
Password:
1> use hogedb;
2> go
Changed database context to 'hogedb'.
1> CREATE table hogetbl (fuga int , piyo char (20));
2> go
1> insert into hogetbl values (1, 'aaa');
2> go
(1 rows affected)
db_datareader
のユーザーでアクセスしてみましょう。
% sqlcmd -S hoge0411babelfish.cluster-cpnu9ipu74g4.ap-northeast-1.rds.amazonaws.com -U hogeuser
Password:
1> use hogedb;
2> go
Changed database context to 'hogedb'.
1> select * from hogetbl;
2> go
fuga piyo
----------- --------------------
1 aaa
(1 rows affected)
1> CREATE table hogetbl2 (fuga int , piyo char (20));
2> go
Msg 33557097, Level 16, State 1, Server hoge0411babelfish-instance-1, Line 1
permission denied for schema dbo
1> insert into hogetbl values (2, 'bbb');
2> go
Msg 33557097, Level 16, State 1, Server hoge0411babelfish-instance-1, Line 1
permission denied for table hogetbl
読み取りのみ許可できました。
さいごに
本日は Amazon Aurora PostgreSQL 16.8 がリリースされたので、Babelfish 4.5 のアップデート内容を確認してみました。
固定データベースロールがいくつかサポートされたので、個別に権限を割り当てるのではなくまとまった権限を与えたいときに今後良いのではないでしょうか。