Anwendungsbenutzer und Rollen in Aurora SQL Postgre-Compatible erstellen - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anwendungsbenutzer und Rollen in Aurora SQL Postgre-Compatible erstellen

Erstellt von Abhishek Verma () AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Beliebige Datenbank

Ziel: Postgre-Datenbank SQL

R-Typ: Re-Architect

Arbeitsaufwand: Open Source

Technologien: Migration; Datenbanken

AWSDienstleistungen: AmazonRDS; Amazon Aurora

Übersicht

Wenn Sie zu Amazon Aurora Postgre SQL -Compatible Edition migrieren, müssen die Datenbankbenutzer und Rollen, die in der Quelldatenbank vorhanden sind, in der Aurora SQL Postgre-Compatible Datenbank erstellt werden. Sie können die Benutzer und Rollen in Aurora SQL Postgre-Compatible mithilfe von zwei verschiedenen Ansätzen erstellen:

  • Verwenden Sie in der Zieldatenbank ähnliche Benutzer und Rollen wie in der Quelldatenbank. Bei diesem Ansatz werden die Datendefinitionssprachen (DDLs) für Benutzer und Rollen aus der Quelldatenbank extrahiert. Anschließend werden sie transformiert und auf die Aurora SQL Postgre-kompatible Zieldatenbank angewendet. Der Blogbeitrag Use SQLto map users, roles and grants from Oracle to Postgre SQL behandelt beispielsweise die Verwendung der Extraktion aus einer Oracle-Quelldatenbank-Engine.

  • Verwenden Sie standardisierte Benutzer und Rollen, die häufig bei der Entwicklung, Verwaltung und Durchführung anderer verwandter Operationen in der Datenbank verwendet werden. Dazu gehören Schreibschutz, Lese-/Schreibvorgänge, Entwicklungs-, Verwaltungs- und Bereitstellungsvorgänge, die von den jeweiligen Benutzern ausgeführt werden.

Dieses Muster enthält die erforderlichen Berechtigungen für die Erstellung von Benutzern und Rollen in Aurora SQL Postgre-Compatible, die für den standardisierten Benutzer- und Rollenansatz erforderlich sind. Die Schritte zur Benutzer- und Rollenerstellung orientieren sich an der Sicherheitsrichtlinie, den Datenbankbenutzern die geringsten Rechte zu gewähren. In der folgenden Tabelle sind die Benutzer, ihre entsprechenden Rollen und ihre Details in der Datenbank aufgeführt.

Benutzer

Rollen

Zweck

APP_read

APP_RO

Wird für den schreibgeschützten Zugriff auf das Schema verwendet APP

APP_WRITE

APP_RW

Wird für Schreib- und Lesevorgänge auf dem Schema verwendet APP

APP_dev_user

APP_DEV

Wird für Entwicklungszwecke im Schema verwendetAPP_DEV, mit schreibgeschütztem Zugriff auf das Schema APP

Admin_User

rds_superuser

Wird für die Ausführung von Administratoroperationen an der Datenbank verwendet

APP

APP_DEP

Wird für die Erstellung der Objekte unter dem APP Schema und für die Bereitstellung von Objekten im APP Schema verwendet

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives Amazon Web Services (AWS) -Konto

  • Eine SQL Postgre-Datenbank, Amazon Aurora SQL Postgre-Compatible Edition-Datenbank oder Amazon Relational Database Service (AmazonRDS) für Postgre-Datenbank SQL

Produktversionen

  • Alle Versionen von Postgre SQL

Architektur

Quelltechnologie-Stack

  • Beliebige Datenbank

Zieltechnologie-Stack

  • Amazon Aurora Postgre-kompatibel SQL

Zielarchitektur

Das folgende Diagramm zeigt Benutzerrollen und die Schemaarchitektur in der Aurora SQL Postgre-Compatible-Datenbank.

Benutzerrollen und Schemaarchitektur für die Aurora SQL Postgre-Compatible-Datenbank.

                                                                                                                                    

Automatisierung und Skalierung

Dieses Muster enthält die Benutzer, Rollen und das Skript zur Schemaerstellung, das Sie mehrfach ausführen können, ohne dass dies Auswirkungen auf bestehende Benutzer der Quell- oder Zieldatenbank hat.

Tools

AWSDienste

  • Amazon Aurora SQL Postgre-Compatible Edition ist eine vollständig verwaltete, ACID konforme relationale Datenbank-Engine, die Sie bei der Einrichtung, dem Betrieb und der Skalierung von Postgre-Bereitstellungen unterstützt. SQL

Andere Dienste

  • psql ist ein terminalbasiertes Frontend-Tool, das bei jeder Postgre-Datenbankinstallation installiert wird. SQL Es verfügt über eine Befehlszeilenschnittstelle zum Ausführen von PL SQL - PGSQL und Betriebssystembefehlen.

  • pgAdminist ein Open-Source-Verwaltungstool für SQL Postgre. Es bietet eine grafische Oberfläche, mit der Sie Datenbankobjekte erstellen, verwalten und verwenden können.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie den Deployment-Benutzer.

Der Deployment-Benutzer APP wird verwendet, um die Datenbankobjekte während der Bereitstellung zu erstellen und zu ändern. Verwenden Sie die folgenden Skripts, um die Deployment-Benutzerrolle APP_DEP im Schema APP zu erstellen. Überprüfen Sie die Zugriffsrechte, um sicherzustellen, dass dieser Benutzer nur berechtigt ist, Objekte im erforderlichen Schema zu erstellenAPP.

  1. Stellen Sie eine Verbindung mit dem Admin-Benutzer her und erstellen Sie das Schema.

    CREATE SCHEMA APP;
  2. Erstellen Sie den Benutzer.

    CREATE USER APP WITH PASSWORD <password> ;
  3. Erstellen Sie die -Rolle.

    CREATE ROLE APP_DEP ; GRANT all on schema APP to APP_DEP ; GRANT USAGE ON SCHEMA APP to APP_DEP ; GRANT connect on database <db_name> to APP_DEP ; GRANT APP_DEP to APP;
  4. Um die Rechte zu testen, stellen Sie eine Verbindung zu den Tabellen her APP und erstellen Sie sie.

    set search_path to APP; SET CREATE TABLE test(id integer ) ; CREATE TABLE
  5. Überprüfen Sie die Rechte.

    select schemaname , tablename , tableowner from pg_tables where tablename like 'test' ; schemaname | tablename | tableowner APP | test | APP
DBA

Erstellen Sie den schreibgeschützten Benutzer.

Der schreibgeschützte Benutzer APP_read wird für die Ausführung des schreibgeschützten Vorgangs im Schema verwendet. APP Verwenden Sie die folgenden Skripten, um den schreibgeschützten Benutzer zu erstellen. Überprüfen Sie die Zugriffsrechte, um sicherzustellen, dass dieser Benutzer nur berechtigt ist, die Objekte im Schema zu lesen APP und allen neuen Objekten, die im Schema erstellt wurden, automatisch Lesezugriff zu gewähren. APP

  1. Erstellen Sie den BenutzerAPP_read.

    create user APP_read ; alter user APP_read with password 'your_password' ;
  2. Erstellen Sie die -Rolle.

    CREATE ROLE APP_ro ; GRANT SELECT ON ALL TABLES IN SCHEMA APP TO APP_RO ; GRANT USAGE ON SCHEMA APP TO APP_RO GRANT CONNECT ON DATABASE testdb TO APP_RO ; GRANT APP_RO TO APP_read;
  3. Um die Rechte zu testen, melden Sie sich mit dem APP_read Benutzer an.

    set search_path to APP ; create table test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; insert into test values (34) ; ERROR: permission denied for table test SQL state: 42501 select from test no rows selected
DBA

Erstellen Sie den Benutzer mit Lese-/Schreibzugriff.

Der Benutzer mit Lese-/Schreibzugriff APP_WRITE wird verwendet, um Lese- und Schreiboperationen im Schema auszuführen. APP Verwenden Sie die folgenden Skripten, um den Lese-/Schreibbenutzer zu erstellen und ihm die Rolle zuzuweisen. APP_RW Überprüfen Sie die Zugriffsrechte, um sicherzustellen, dass dieser Benutzer nur Lese- und Schreibrechte für die Objekte im Schema hat, APP und um jedem neuen Objekt, das im Schema erstellt wurde, automatisch Lese- und Schreibzugriff zu gewähren. APP

  1. Erstellen Sie den Benutzer.

    CREATE USER APP_WRITE ; alter user APP_WRITE with password 'your_password' ;
  2. Erstellen Sie die -Rolle.

    CREATE ROLE APP_RW; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA APP TO APP_RW ; GRANT CONNECT ON DATABASE postgres to APP_RW ; GRANT USAGE ON SCHEMA APP to APP_RW ; ALTER DEFAULT PRIVILEGES IN SCHEMA APP GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO APP_RW ; GRANT APP_RW to APP_WRITE
  3. Um die Rechte zu testen, melden Sie sich mit dem APP_WRITE Benutzer an.

    SET SEARCH_PATH to APP; CREATE TABLE test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; SELECT * FROM test ; id ---- 12 INSERT INTO test values (31) ; INSERT 0 1

Erstellen Sie den Admin-Benutzer.

Der Admin-Benutzer Admin_User wird verwendet, um Admin-Operationen an der Datenbank durchzuführen. Beispiele für diese Operationen sind CREATE ROLE undCREATE DATABASE. Admin_Userverwendet die integrierte Rollerds_superuser, um Admin-Operationen in der Datenbank durchzuführen. Verwenden Sie die folgenden Skripts, um die Rechte für den Admin-Benutzer Admin_User in der Datenbank zu erstellen und zu testen.

  1. Erstellen Sie den Benutzer und gewähren Sie ihm die Rolle.

    create user Admin_User WITH PASSWORD ‘Your password’ ALTER user Admin_user CREATEDB; ALTER user Admin_user CREATEROLE;
  2. Um das Recht zu testen, melden Sie sich vom Admin_User Benutzer aus an.

    SELECT * FROM APP.test ; id ---- 31 CREATE ROLE TEST ; CREATE DATABASE test123 ;
DBA

Erstellen Sie den Entwicklungsbenutzer.

Der Entwicklungsbenutzer APP_dev_user erhält die Rechte, die Objekte in seinem lokalen Schema zu erstellen APP_DEV und über Lesezugriff im Schema zu verfügenAPP. Verwenden Sie die folgenden Skripten, um die Rechte des Benutzers APP_dev_user in der Datenbank zu erstellen und zu testen.

  1. Erstellen Sie den Benutzer.

    CREATE USER APP1_dev_user with password ‘your password’;
  2. Erstellen Sie das APP_DEV Schema für dieApp_dev_user.

    CREATE SCHEMA APP1_DEV ;
  3. Erstellen Sie die APP_DEV-Rolle.

    CREATE ROLE APP1_DEV ; GRANT APP1_RO to APP1_DEV ; GRANT SELECT ON ALL TABLES IN SCHEMA APP1_DEV to APP1_dev_user GRANT USAGE, CREATE ON SCHEMA APP1_DEV to APP1_DEV_USER GRANT APP1_DEV to APP1_DEV_USER ;
  4. Um die Rechte zu testen, melden Sie sich von anAPP_dev_user.

    CREATE TABLE APP1_dev.test1( id integer ) ; CREATE TABLE INSERT into APP1_dev.test1 ( select * from APP1.test ); INSERT 0 1 CREATE TABLE APP1.test4 ( id int) ; ERROR: permission denied for schema APP1 LINE 1: create table APP1.test4 ( id int) ;
DBA

Zugehörige Ressourcen

Postgre-Dokumentation SQL

 

Zusätzliche Informationen

Erweiterung für Postgre SQL 14

Postgre SQL 14 bietet eine Reihe vordefinierter Rollen, die den Zugriff auf bestimmte häufig benötigte, privilegierte Funktionen und Informationen ermöglichen. Administratoren (einschließlich Rollen mit entsprechenden RechtenCREATE ROLE) können Benutzern diese Rollen oder andere Rollen in ihrer Umgebung zuweisen und ihnen so Zugriff auf die angegebenen Funktionen und Informationen gewähren.

Administratoren können Benutzern mithilfe des GRANT Befehls Zugriff auf diese Rollen gewähren. Um beispielsweise die pg_signal_backend Rolle zu erteilenAdmin_User, können Sie den folgenden Befehl ausführen.

GRANT pg_signal_backend TO Admin_User;

Die pg_signal_backend Rolle soll es Administratoren ermöglichen, vertrauenswürdigen Rollen ohne Superuser-Rechte das Senden von Signalen an andere Backends zu ermöglichen. Weitere Informationen finden Sie unter Erweiterung von Postgre 14. SQL

Feinabstimmung des Zugriffs

In einigen Fällen kann es erforderlich sein, den Benutzern einen detaillierteren Zugriff zu gewähren (z. B. tabellenbasierter Zugriff oder spaltenbasierter Zugriff). In solchen Fällen können zusätzliche Rollen erstellt werden, um den Benutzern diese Rechte zu gewähren. Weitere Informationen finden Sie unter SQLPostgre-Grants.