理系学生日記

おまえはいつまで学生気分なのか

postgresql

有効期限のあるPostgreSQLユーザを動的に作成する効率的な方法を考える

データベースは機密情報が格納される場所であり、その重要性からできるだけ限定されたユーザだけがアクセスできるようにしたいと考えるのは当然です。一歩進めて、理想的にはデータベースへのアクセスに必要なユーザを静的に設定するのではなく、都度必要に…

PostgreSQLにおけるCOLLATIONとソート

PostgreSQLを使っているとき、日本語がうまくソートできない。これはいわゆるCOLLATION (照合順序)の設定によります。 色々とこの順番を設定できるため、今回その設定を試してみました。 基礎知識 Postgresqlでは、それぞれのデータタイプはcollationを持っ…

機密情報を参照させないPostgreSQLのカラムレベル権限設定

本番環境のシステム運用を考えたとき、データベースの中身を参照せざるを得ないことは多くあります。 データは貴重な情報資産であるため、運用者に対してすら、そのデータ参照を厳しく制限せねばなりません。 例えば要配慮個人情報を運用者に対して簡単に参…

PostgreSQLの接続文字列のフォーマット

いつも感覚&Google検索でやっていたのですが、公式の情報源はこちら。 PostgreSQL: Documentation: 15: 34.1. Database Connection Control Functions 基本的なフォーマットは以下のようになります。 postgresql://[user]:[password]@[host]:[port]/[databas…

Docker ComposeでPostgresqlを立ち上げるとき、任意のデータベース・スキーマ上にテーブルを自動で作成したい

本エントリでは、Docker ComposeでPostgreSQLを立ち上げるとき、特定のデータベース・スキーマ配下にテーブルを作成する方法を紹介します。 前提としてのpostgresイメージの持つ自動SQL実行機能 データベースをもつシステムをローカルで開発するにあたり、Do…

マルチテナントデータを安全に扱うための Row Level Security、そして1ユーザーが複数のテナントに所属するときの対応について

このエントリでは、マルチテナントアプリケーションを構築する場合に、テナントに紐づくデータをどう安全に扱うかという点でRLSについて記載します。 特に、1ユーザが複数テナントに関する権限を持つ場合にRLSをどう適用すべきか、頭を悩ませました。 マルチ…

Postgresqlに対するアプリケーション用DBユーザーの作成と権限

データストアにPostgresqlを採用し、アプリケーションから当該DBに対してDB接続する。そういうユースケースは枚挙に暇がありません。 データベース・スキーマの作成 アプリケーション用ユーザーの作成 ユーザーのデフォルトスキーマ切り替え ユーザーへの権…