PostgreSQLで読み取り専用ユーザーを設定する

このチュートリアルでは、PostgreSQL forRedashで読み取り専用ユーザーを設定する方法を示します。







ドキュメントで最初に目にするのは、読み取り専用ユーザー向けにデータソースを構成するためのアドバイスです。データの視覚化のためにRedashを意味したため、これをお勧めします。INSERTUPDATE、またはDELETEアクションに基づいて構築されていません







Redashは40を超えるデータソースと無制限の数のJSONベースのAPIをサポートしているため、アプリケーションは、ユーザーがSELECT以外のクエリを実行するのを直接防ぐことはできません。これにより、データベースレベルで読み取り専用ユーザーを構成することにより、Redashユーザーによる悪意のあるDDLステートメントの実行から身を守ることができます。







PostgreSQLは最も人気のあるデータソースの1つです。この記事では、AmazonRedshiftやRDSなどのPostgresデータソースへの読み取り専用アクセスを構成する例を示します。







この記事は主に、優れた投稿AmazonAWSブログアクセス許可Postgresに基づいて書かれています







概要概要



始める前に、app-adminという名前のユーザーが所有するmyappという新しいデータベーススキーマを作成しましたこのスキーマには、ダミーデータで満たされた従業員ジョブ、および顧客のテーブルが含まれています。私はこれらの手順に従いました:







  1. myapp-readonlyという名前の新しいロールを作成しました
  2. SELECT Employees Jobs. SELECT customers, .
  3. redash myapp-readonly.
  4. Redash redash.


, , Amazon PUBLIC :







public . , , , - public .







. , myapp-readonly . . ( , Redash ).







1.



CREATE ROLE myapp_readonly;
GRANT CONNECT ON DATABASE defaultdb TO myapp_readonly;
GRANT USAGE ON SCHEMA myapp TO myapp_readonly;
      
      





Amazon. GRANT USAGE , . PostgreSQL:







[USAGE] , ( , ). , «» .







2.



GRANT SELECT ON TABLE "myapp"."employees" TO myapp_readonly;
GRANT SELECT ON TABLE "myapp"."jobs" TO myapp_readonly;
GRANT SELECT (id, name) ON TABLE myapp.customers TO myapp_readonly;
      
      





employee jobs .







myapp_readonly . . . , Redash.







, Redash . *SELECT FROM customers**, . .







3. Redash .



CREATE USER redash WITH PASSWORD 'secret';
GRANT myapp_readonly TO redash;
      
      





redash — , Redash. secret .







4. Postgres



Redash . , , .













, , .







SELECT * FROM myapp.employees
      
      











, .







INSERT INTO myapp.employees (name) VALUES ('Hal')
      
      











. myapp_readonly INSERTS. Redash INSERT!







, customers:







SELECT * FROM myapp.customers;
      
      











読み取り専用ロールは特定の列にしかアクセスできないため、アクセス許可エラーを返します。







SELECT id, name FROM myapp.customers;
      
      











ユーザーに読み取り専用の列のみを要求したため、クライアントの完全なリストを返します。







結論



データは最も重要なビジネス資産の1つです。Redashは、データベースを保護するためにデータベースのセキュリティ対策を使用することをお勧めします。これらの手順を実行することで、コンプライアンスエラーや詮索好きな目から機密情報を安全に保ちながら、内部ユーザーが有用な情報を準備できるようになります。








All Articles