PostgreSQLのアクセスを特定のテーブルと列に制限するには、スキーマと選択的なGRANTステートメントを使用できます。
特定のテーブルへのアクセスを制限する方法については、次の手順を参照してください。
ただし、特定の列へのアクセスを制限する必要がある場合は、スキーマとビューの組み合わせを使用してアクセスを制限する必要がある場合があります。データベースに1000を超えるテーブルがあり、Chartioに接続しようとしている場合にも、これを行うことができます。
-
psqlまたはpgadminを使用してPostgreSQLデータベースに接続します。以下を実行して、データベース内のテーブルのリストを返します。
sudo -u postgres psql c databasename;
-
Chartioの読み取り専用ユーザーに固有のスキーマを作成し、次を実行します。
CREATE SCHEMA chartio_read_only; CREATE ROLE chartio_schema_user LOGIN PASSWORD‘secure_password’; GRANT CONNECT ON DATABASE databasename TO chartio_schema_user; SCHEMAchartio_read_onlyの使用をchartio_schema_userに付与します;
-
dコマンドを使用してデータベースの関係を確認してください。
d
スキーマ|名前|タイプ|所有者———- + ————————- + ———- + ————– public |アカウント|テーブル| postgres public |訪問者|テーブル| postgres public |ユーザー|テーブル| postgres public |サブスクリプション|テーブル| postgres
-
Accountsテーブルには機密情報が含まれており、ChartioがAccount_ID列とDate__Created列にのみアクセスするようにします。 ._以下を実行して、chartio_read_onlyスキーマにビューを追加し、そのビューへのアクセスをchartio_schema_userに許可します。
CREATE VIEWchartio_read_only。” Accounts” AS SELECT Account_ID、Date_Created FROM Accounts; GRANT SELECT ONchartio_read_only。” Accounts” TO chartio_schema_user;
-
訪問者テーブルからすべてのデータを選択する権限を付与します。
CREATE VIEWchartio_read_only。”ビジター” AS SELECT*FROMビジター; GRANT SELECT ONchartio_read_only。” Visitors” TO chartio_schema_user;
これで、chartio_schema_userをデータベースに接続すると、スキーマに付与した2つの制限されたビューにのみアクセスできるようになります。
詳細については、PostgreSQLのドキュメントを参照してください。