Ich werde detailliert vorstellen, wie eine allgemeine Konfiguration von VPC, Step Server und RDS über den Konsolenbildschirm in AWS erstellt wird (siehe Abbildung unten).
Da es für den persönlichen Gebrauch bestimmt ist, wird der Plattformserver nicht redundant gemacht. Im Allgemeinen kostet diese Konfiguration etwa 6000 Yen pro Monat.
Möglicherweise interessiert Sie auch der Name, den Sie verwenden, aber es wäre hilfreich, wenn Sie ihn weitergeben könnten. Diese Konfiguration wird in Ihrem eigenen [DB-Migrationssystem mit Rails und AWS] erstellt (https://github.com/dodonki1223/eroge_release_db). Das eigentliche Gesamtbild ist unten
Zum Erstellen der AWS-Umgebung habe ich mich wirklich auf Udemys "Lernen Sie von den AWS-Grundlagen zu Anwendungen in 2 Wochen, während Sie Ihre Hände bewegen" bezogen. Ich kann es jetzt nicht ertragen, deshalb habe ich den Blog-Beitrag des Autors [Vorlesung zur Unterstützung von 0 → 1 des AWS-Lernens "Lernen von AWS-Grundlagen zu Anwendungen in 2 Wochen, während ich die Hände bewege" auf Udemy --log4ketancho](https :: Bitte überprüfen Sie //www.ketancho.net/entry/2018/09/03/074115)
Erstellen Sie eine VPC-Umgebung Wir werden ein öffentliches Subnetz und ein privates Subnetz in jeder Verfügbarkeitszone von ap-nordost-1a und ap-nordost-1c erstellen.
Die endgültige Konfiguration lautet wie folgt
Verwenden Sie den VPC-Assistenten, um "VPC", "öffentliches Subnetz" und "Internet-Gateway" zu erstellen
Klicken Sie im Bildschirm "VPC-Dashboard" auf "VPC-Assistenten starten"
Klicken Sie auf "Auswählen"
Geben Sie den "VPC-Namen", das "öffentliche Subnetz IPv4 CIDR", die "Verfügbarkeitszone", den "Subnetznamen" ein und klicken Sie auf "VPC erstellen"
** Geben Sie "10.0.11.0 / 24" für das "öffentliche Subnetz IPv4 CIDR" ein ** ** Geben Sie "ap-northeast-1a" für "Availability Zone" ein ** ** Geben Sie einen beliebigen Namen für "VPC-Name" und "Subnetzname" ein **
Klicken Sie auf "OK"
Stellen Sie sicher, dass die VPC erstellt wurde
Stellen Sie sicher, dass das öffentliche Subnetz erstellt wird
Stellen Sie sicher, dass IGW (Internet Gateway) in der Routentabelle festgelegt ist
Stellen Sie sicher, dass das IGW (Internet Gateway) erstellt wurde
Mit dem oben genannten wurde der folgende Status erstellt
Da das öffentliche Subnetz in "ap-northeast-1a" der Verfügbarkeitszone erstellt wurde, werden wir auch ein öffentliches Subnetz in "ap-northeast-1c" erstellen.
Klicken Sie im Bildschirm "Subzone" auf "Unterabschnitt erstellen"
Geben Sie das "Namensschild", "VPC", "Verfügbarkeitszone", "IPv4-CIDR-Block" ein und klicken Sie auf "Erstellen"
** Wählen Sie die erstellte VPC für VPC
aus **
** Geben Sie ap-northeast-1c
in Availability Zone
ein **
** Geben Sie "10.0.12.0 / 24" in "IPv4 CIDR-Block" ein **
Klicken Sie auf "Schließen"
Wählen Sie das neu erstellte Subnetz "ap-northeast-1c" aus Da "IGW (Internet Gateway)" nicht in der Routentabelle festgelegt ist, kann dieses Subnetz derzeit nicht ins Internet gehen, sodass es sich um ein "privates Subnetz" handelt.
Stellen Sie "IGW (Internet Gateway)" in der Routentabelle ein Klicken Sie auf "Routentabellenzuordnung bearbeiten"
Wechseln Sie zu der zuvor erstellten Routentabelle
Sie können sehen, dass "IGW (Internet Gateway)" hinzugefügt wurde Wenn Sie zufrieden sind, klicken Sie auf "Speichern"
Klicken Sie auf "Schließen"
Stellen Sie sicher, dass "IGW (Internet Gateway)" zur Routentabelle hinzugefügt wurde
Mit dem oben genannten wurde es bis zum folgenden Zustand erstellt
Wir werden ein privates Subnetz sowie ein öffentliches Subnetz erstellen
Erstellen Sie ein Subnetz in ap-northeast-1a
Klicken Sie auf "Unterabschnitt erstellen"
Geben Sie das "Namensschild", "VPC", "Verfügbarkeitszone", "IPv4-CIDR-Block" ein und klicken Sie auf "Erstellen"
** Wählen Sie die erstellte VPC für VPC
aus **
** Geben Sie "ap-northeast-1a" für "Availability Zone" ein **
** Geben Sie "10.0.21.0 / 24" in "IPv4 CIDR-Block" ein **
Klicken Sie auf "Schließen"
Erstellen Sie ein Subnetz in "ap-northeast-1c"
In ap-northeast-1a
wurde ein Subnetz erstellt
Wir werden auch ein Subnetz in "ap-northeast-1c" erstellen Klicken Sie auf "Unterabschnitt erstellen"
Geben Sie das "Namensschild", "VPC", "Verfügbarkeitszone", "IPv4-CIDR-Block" ein und klicken Sie auf "Erstellen"
** Wählen Sie die erstellte VPC für VPC
aus **
** Geben Sie ap-northeast-1c
in Availability Zone
ein **
** Geben Sie "10.0.22.0 / 24" in "IPv4 CIDR-Block" ein **
Klicken Sie auf "Schließen"
Bestätigen Sie, dass es erstellt wurde
Ich werde ein privates Subnetz erstellen
Geben Sie ihm einen beschreibenden Namen, bevor Sie ein privates Subnetz erstellen
Klicken Sie auf "Routentabelle erstellen"
Geben Sie das Namensschild "VPC" ein und klicken Sie auf "Erstellen"
** Wählen Sie die erstellte VPC für VPC
aus **
Klicken Sie auf "Schließen"
Bestätigen Sie, dass es erstellt wurde
Ich werde die für privat erstellte Routentabelle mit dem Subnetz verknüpfen
Klicken Sie auf "Routentabellenzuordnung bearbeiten"
Wählen Sie die soeben erstellte Routentabelle aus und klicken Sie auf "Speichern"
Klicken Sie auf "Schließen"
Ich werde die für privat erstellte Routentabelle mit dem Subnetz verknüpfen
Klicken Sie auf "Routentabellenzuordnung bearbeiten"
Wählen Sie die soeben erstellte Routentabelle aus und klicken Sie auf "Speichern"
Klicken Sie auf "Schließen"
Sie können sehen, dass das Subnetz mit der Routentabelle verknüpft ist
** Damit ist die VPC-Konstruktion abgeschlossen **
Erstellen Sie einen Plattformserver (EC2) im öffentlichen Subnetz Normalerweise ist es besser, einen Plattformserver mit "Auto Scaling" im öffentlichen Subnetz zu erstellen, aber es kostet Geld, daher werden wir ihn dieses Mal ohne "Auto Scaling" erstellen.
** Nicht sehr gute Konfiguration, da der Plattformserver ein einzelner Fehlerpunkt ist **
Nach dem Aufbau sieht das Konfigurationsdiagramm wie folgt aus.
Lassen Sie uns sofort die Umgebung aufbauen
Erstellen Sie eine EC2-Instanz für den Plattformserver
Klicken Sie auf "Instanz erstellen"
Wählen Sie "64-Bit (x86)" von "Amazon Linux 2 AMI (HVM), SSD-Volume-Typ" und klicken Sie auf "Auswählen"
Wählen Sie "t2.nano" und klicken Sie auf "Nächster Schritt: Instanzdetails festlegen"
** Wenn Sie es sich leisten können, können Sie einen etwas höheren Typ wählen **
Geben Sie das "Netzwerk", das "Subnetz" und die "automatisch zugewiesene öffentliche IP" ein
Wählen Sie das Ziel "VPC" für das Netzwerk Wählen Sie als Subnetz "ap-northeast-1a public subnet" aus Wählen Sie "Aktiviert" für die automatisch zugewiesene öffentliche IP (ich werde die elastische IP später konfigurieren, aber ich werde sie einmal aktivieren).
Wählen Sie für "Benutzerdaten" "Text" aus und fügen Sie den folgenden Inhalt ein
#!/bin/bash
#Ändern Sie den Hostnamen
# https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-hostname.html
sudo hostnamectl set-hostname eroge-release-stepping-stone-server
#PostgreSQL 11 installieren
# https://qiita.com/libra_lt/items/f2d2d8ee389daf21d3fb
sudo rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"
sudo yum install -y postgresql11
#Zeitzone Asien/Wechseln Sie nach Tokio
# https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html#change_time_zone
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo”|g' /etc/sysconfig/clock
Klicken Sie abschließend auf "Nächster Schritt: Speicher hinzufügen"
Grundsätzlich können Sie die Standardeinstellung beibehalten Klicken Sie auf "Nächster Schritt: Tag hinzufügen"
Klicken Sie auf "Anderes Tag hinzufügen", setzen Sie den Schlüssel auf "Name" und den Wert auf einen beschreibenden Namen und klicken Sie auf "Nächster Schritt: Sicherheitsgruppe festlegen".
Wählen Sie "Neue Sicherheitsgruppe erstellen" und geben Sie eine Beschreibung für "Sicherheitsgruppenname" und "Beschreibung" ein. Klicken Sie abschließend auf "Bestätigen und erstellen"
** Normalerweise setzen Sie nicht "0.0.0.0 / 0" für den "Quell" -Teil (da dieser vollständig geöffnet ist) ** ** Stellen Sie die globale IP-Adresse Ihres Hauses ein, um den SSH-Zugriff einzugrenzen **
Wenn Sie mit dem angezeigten Inhalt zufrieden sind, klicken Sie auf "Start".
Wählen Sie "Neues Schlüsselpaar erstellen", geben Sie einen beschreibenden "Schlüsselpaarnamen" ein und klicken Sie auf "Schlüsselpaar herunterladen". Klicken Sie abschließend auf "Instanz erstellen"
** Das heruntergeladene Schlüsselpaar wird verwendet, um eine Verbindung zum Plattformserver herzustellen **
Klicken Sie auf "Instanzen anzeigen"
Bestätigen Sie, dass die Instanz erstellt wurde Elastic IP wurde noch nicht festgelegt, daher werden wir Elastic IP in Zukunft festlegen.
Derzeit ändert sich die IP-Adresse jedes Mal, wenn Sie den Plattformserver starten. Erstellen Sie daher eine "elastische IP", damit die IP-Adresse festgelegt wird.
Klicken Sie auf "Elastische IP-Adresse zuweisen"
Es ist nichts festzulegen, klicken Sie also auf "Zuweisen"
Die elastische IP-Adresszuweisung ist abgeschlossen
Da es keinen Namen gibt und es schwer zu verstehen ist, fügen Sie ein Tag hinzu, damit der Name angezeigt wird
Klicken Sie auf "Aktionen" und dann auf "Details anzeigen"
Klicken Sie auf "Tags verwalten"
Geben Sie einen beschreibenden Namen für "Name" und "Wertoption" für "Schlüssel" ein Klicken Sie abschließend auf "Speichern"
Tags wurden hinzugefügt
Verknüpfen Sie die von Ihnen erstellte "elastische IP-Adresse" mit dem zuvor erstellten "Plattformserver (EC2)".
Klicken Sie auf "Elastic IP Address Association"
Wählen Sie für das Instanzelement die zuvor erstellte "EC2-Instanz" aus. Klicken Sie abschließend auf "Zuordnen"
Sie können sehen, dass die zuvor festgelegte EC2-Instanz in der zugeordneten Instanz angezeigt wird.
Sie können auch sehen, dass die zuvor erstellte "elastische IP" im EC2-Instanzbildschirm angezeigt wird.
Überprüfen Sie, ob Sie mit einem Befehl wie dem folgenden auf den erstellten Plattformserver zugreifen können
** Das Schlüsselpaar ist das, das Sie beim Erstellen der EC2-Instanz heruntergeladen haben **
$ ssh -i Schlüsselpaar ec2 - Benutzer@Elastische IP-Adresse
Wenn Sie eine Verbindung herstellen können, sind Sie fertig
** Damit ist der Aufbau des Plattformservers abgeschlossen **
Erstellen Sie PostgreSQL-Master- und Slave-Konfigurationen mit RDS
Nach dem Aufbau sieht das Konfigurationsdiagramm wie folgt aus.
Lassen Sie uns sofort die Umgebung aufbauen
Dies ist eine Einstellung für Master und Slave, in welchem Subnetz die DB-Instanz gestartet werden soll Bitte überprüfen Sie die folgenden Dokumente für Details
Klicken Sie im linken Menü auf "Subnetzgruppe" und oben rechts auf "DB-Subzonengruppe erstellen".
Geben Sie "Name", "Beschreibung", "VPC" ein ** Hinweis: Stellen Sie sicher, dass Sie die erstellte VPC anstelle der Standard-VPC auswählen. **
Fügen Sie ein "privates Subnetz" für die Zielverfügbarkeitszone hinzu ("1a" und "1c"). Klicken Sie abschließend auf die Schaltfläche "Erstellen", um den Vorgang abzuschließen.
RDS verwendet Parametergruppen zum Konfigurieren von DB-Instanzen Wenn Sie eine DB-Instanz ohne Verwendung einer Parametergruppe erstellen, wird die Standardparametergruppe verwendet. Diese ** Standardparametergruppe kann nicht geändert werden **, daher wird empfohlen, sie festzulegen.
Bitte überprüfen Sie die folgenden Dokumente für Details
Klicken Sie im linken Menü auf "Parametergruppe" und oben rechts auf "Parametergruppe erstellen"
Geben Sie die "Parametergruppenfamilie", den "Gruppennamen" und die "Beschreibung" ein
Wählen Sie PostgreSQL als Parametergruppenfamilie
Klicken Sie abschließend auf Erstellen
Erstellen Sie eine Sicherheitsgruppe, die nur den Zugriff vom Plattformserver aus ermöglicht, um die Sicherheit für RDS zu erhöhen ** Fügen Sie diese Sicherheitsgruppe auf dem Bildschirm mit den RDS-Einstellungen hinzu **
Öffnen Sie den Bildschirm der VPC-Konsole, klicken Sie im linken Menü auf "Sicherheitsgruppe" und oben links auf "Sicherheitsgruppe erstellen".
Geben Sie den Namen der Sicherheitsgruppe, die Beschreibung und die VPC ein und klicken Sie auf die Schaltfläche Erstellen. ** Hinweis: Stellen Sie sicher, dass Sie die erstellte VPC anstelle der Standard-VPC auswählen. **
Klicken Sie auf die Schaltfläche "Schließen", um den Erstellungsbildschirm zu schließen
Standardmäßig ist "Name" leer. Klicken Sie daher auf die Bleistiftschaltfläche ganz rechts in der Spalte "Name" und geben Sie einen beschreibenden Namen ein.
Klicken Sie auf die Registerkarte "Eingehende Regeln" und dann auf "Regel bearbeiten"
Klicken Sie auf "Regel hinzufügen", wenn sich der Bildschirm ändert
Klicken Sie auf den Typ und fügen Sie "PostgreSQL" und "SSH" hinzu Wählen Sie als Quellteil "Tread Server Security Group" aus
** Durch Auswahl der Plattformserver-Sicherheitsgruppe wird der Zugriff nur von der Instanz gewährt, die über die Plattformserver-Sicherheitsgruppe verfügt **
Geben Sie abschließend "Beschreibung" ein und klicken Sie auf "Regel speichern"
Klicken Sie auf die Schaltfläche "Schließen"
Damit ist die Erstellung der Sicherheitsgruppe abgeschlossen.
Ich bin bereit, die Datenbank zu erstellen, also werde ich sie jetzt erstellen.
Klicken Sie im linken Menü auf "Dashboard" und unten auf "Datenbank erstellen"
Dieses Mal werden wir sie einzeln einstellen, wählen Sie also "Standarderstellung".
Da wir eine Datenbank für PostgreSQL erstellen, wird empfohlen, "PostgreSQL" und auch die neueste Nebenversion von "Version" auszuwählen.
Wenn Sie "Free Tier" auswählen, können Sie "Multi-AZ Placement" nicht auswählen. Wählen Sie daher "Development / Test"
Geben Sie die "DB-Instanz-ID", den "Master-Benutzernamen" und das "Master-Passwort" ein
DB-Instanzkennung
ist der Name, der auf dem Konsolenbildschirm angezeigt wird. Bitte beachten Sie, dass es sich nicht um einen Datenbanknamen handelt
Überprüfen Sie die folgenden Dokumente für Hauptbenutzer
Für den persönlichen Gebrauch möchte ich diejenige mit den niedrigsten Spezifikationen auswählen, die für den Geldbeutel preisgünstig ist. Wenn ich jedoch "Entwicklung / Test" auswähle, wird eine ziemlich hohe Spezifikation ausgewählt.
Durch Auswahl von "Burstable Class (einschließlich T-Klasse)" können Sie eine brieftaschenfreundliche Spezifikation auswählen.
Wenn Sie es persönlich verwenden, können Sie die Standardeinstellung beibehalten Bei einer Konfiguration mit mehreren AZ-Layouts kosten 20 GB etwa 5 US-Dollar pro Monat.
Bitte überprüfen Sie die folgenden Dokumente für detaillierte Gebühren
Wählen Sie "Standby-Instanz erstellen (empfohlen für die Produktionsumgebung)", um eine Multi-AZ-Bereitstellung zu erstellen. ** Hinweis: Wenn die Vorlage auf den freien Nutzungsrahmen eingestellt ist, wird sie abgeblendet und kann nicht ausgewählt werden. Entwickeln / testen Sie sie daher unbedingt **
Geben Sie die Ziel-VPC in "Virtual Private Cloud (VPC)" ein ** Hinweis: Stellen Sie sicher, dass Sie die erstellte VPC anstelle der Standard-VPC auswählen. **
Klicken Sie auf "Zusätzliche Verbindungseinstellungen" und geben Sie weitere Informationen ein
Wählen Sie unter "Subnetzgruppe" die zuvor erstellte Subnetzgruppe aus.
Wählen Sie "Keine" für "Öffentlich zugänglich" ** Wählen Sie Keine, um den Zugriff über den Plattformserver zu ermöglichen **
Wählen Sie unter "VPC-Sicherheitsgruppe" die zuvor erstellte Sicherheitsgruppe aus.
Sie können den Datenbankport auf der Standardeinstellung belassen
Wenn Sie Ihre Datenbank nicht mit IAM-Anmeldeinformationen authentifizieren müssen, ist die Standardkennwortauthentifizierung in Ordnung. Bitte überprüfen Sie die folgenden Dokumente für Details
Ich werde jede zusätzliche Einstellung erklären
Durch Angabe des ersten Datenbanknamens wird RDS mit der erstellten Datenbank erstellt.
Geben Sie für "DB-Parametergruppe" die zuvor erstellte Parametergruppe an.
Wählen Sie im "Backup-Fenster" das "Auswahlfenster" und stellen Sie die "Startzeit" auf "20: 00". Mit dieser Einstellung können Sie morgens zwischen 5 und 30 Minuten sichern.
Bitte überprüfen Sie die folgenden Dokumente für Details
Performance Insights
Sie können die Standardeinstellungen für Performance Insights beibehalten
Bitte überprüfen Sie die folgenden Dokumente für Details
Sie können die Standardeinstellung für die Überwachung beibehalten
Bitte überprüfen Sie die folgenden Dokumente für Details
Überprüfen Sie "Postgresql-Protokoll", "Upgrade-Protokoll" Durch Aktivieren können Sie die Protokollausgabe mit "CloudWatch-Protokollen" überprüfen.
Bitte überprüfen Sie die folgenden Dokumente auf Protokolle
Wählen Sie im "Wartungsfenster" das "Auswahlfenster" und stellen Sie die "Startzeit" auf "18: 00". Mit dieser Einstellung können Sie die Nebenversion am Dienstagmorgen innerhalb von 30 Minuten um 3 Uhr aktualisieren.
Überprüfen Sie die folgenden Dokumente auf kleinere Versions-Upgrades
Wenn Sie dies überprüfen, können Sie die Datenbank nicht löschen. ** Sie können es löschen, indem Sie die Einstellung ändern **
Überprüfen Sie abschließend die "geschätzten monatlichen Kosten" und klicken Sie auf die Schaltfläche "Datenbank erstellen", wenn dies in Ordnung aussieht. Damit ist die RDS-Konstruktion abgeschlossen!
Bitte überprüfen Sie die folgenden Dokumente für Preisdetails
Greifen Sie mit einem Befehl ähnlich dem folgenden auf den Plattformserver zu
** Das Schlüsselpaar ist das, das Sie beim Erstellen der EC2-Instanz heruntergeladen haben **
$ ssh -i Schlüsselpaar ec2 - Benutzer@Elastische IP-Adresse
Greifen Sie mit einem Befehl ähnlich dem folgenden auf RDS zu
$ psql -h RDS-Endpunkt-U Hauptbenutzername Datenbankname
Wenn Sie darauf zugreifen können, gibt es kein Problem Nachfolgende Arbeiten werden von diesem Bildschirm aus ausgeführt
Ich werde zumindest die Bedingungen überprüfen, die zum Erstellen einer Umgebung mit PostgreSQL erforderlich sind
Ein Datenbankcluster ist eine Sammlung von Datenbanken
Bei der Erstellung mit RDS werden die ersten auf dem Bildschirm "RDS-Einstellung" festgelegten Datenbanken "," postgres "," rdsadin "," tempalte0 "und" template1 "im Datenbankcluster erstellt.
Bitte überprüfen Sie die folgenden Dokumente für Details
Eine Datenbank ist eine benannte Sammlung von Datenbankobjekten (Tabellen, Ansichten, Funktionen und Operatoren usw.).
Bitte überprüfen Sie die folgenden Dokumente für Details
Schemata können Datenbankobjekte (Tabellen, Ansichten, Funktionen und Operatoren usw.) in der Datenbank gruppieren
Bitte überprüfen Sie die folgenden Dokumente für Details
Die Rolle genehmigt die Verbindung zur Datenbank. Die Rollen sind in Datenbankbenutzer (Benutzer, die sich bei der Datenbank anmelden) und Gruppen von Datenbankbenutzern unterteilt.
Es gibt zwei Arten von SQL, um eine Rolle zu erstellen: Der Unterschied zwischen den beiden besteht darin, ob sie das LOGIN-Attribut haben
--Erstellen Sie eine Gruppe von Datenbankbenutzern
CREATE ROLE name;
--Datenbankbenutzer erstellen
CREATE USER name;
Bitte überprüfen Sie die folgenden Dokumente für Details
Wir werden eine Umgebung erstellen, die auf "Best Practices für die Verwaltung von Benutzern und Rollen" basiert, indem wir auf den AWS-Blogbeitrag verweisen. Ich werde es unter Bezugnahme auf die folgenden zwei Artikel erstellen
- Verwenden Sie den Hauptbenutzer, um Rollen für jede Anwendung oder jeden Anwendungsfall zu erstellen, z. B. "readonly" oder "readwrite"
- Fügen Sie Berechtigungen hinzu, damit diese Rollen auf verschiedene Datenbankobjekte zugreifen können. Beispielsweise kann die Rolle "schreibgeschützt" nur "SELECT" -Abfragen ausführen
- Geben Sie der Rolle die für die Funktion erforderlichen Mindestberechtigungen --Erstellen Sie für jede Anwendung oder einzelne Funktion einen neuen Benutzer, z. B. "app_user" oder "reporting_user"
- Weisen Sie diesen Benutzern die entsprechenden Rollen zu und gewähren Sie ihnen schnell die gleichen Berechtigungen wie den Rollen. Gewähren Sie beispielsweise "app_user" die Rolle "readwrite" und "reporting_user" die Rolle "readonly".
- Sie können einem Benutzer jederzeit eine Rolle entfernen, um Berechtigungen zu widerrufen
Das obige Bild und der Text stammen aus PostgreSQL-Benutzer- und Rollenverwaltung | Amazon Web Services-Blog.
Was ich damit sagen möchte, ist, Gruppenrollen wie "Leseberechtigung" und "Lese- / Schreibberechtigung" zu erstellen und sie den Benutzern entsprechend ihrem Zweck zu erteilen.
** Hinweis: Der Rest der Arbeit wird erledigt, indem vom Step Server
als Master User
eine Verbindung zum RDS hergestellt wird **
Durch das Erstellen einer neuen Datenbank wird ein "öffentliches Schema" erstellt Das Erstellen eines Datenbankobjekts wie einer Tabelle gehört zum "öffentlichen Schema"
Selbst wenn Sie einen neuen Benutzer erstellen und Berechtigungen erteilen und einschränken, wird dieser im "öffentlichen Schema" erstellt, sodass der neu erstellte Benutzer bedeutungslos ist. Sie müssen die Erstellungsberechtigungen für das "öffentliche Schema" widerrufen
In der offiziellen PostgreSQL-Dokumentation heißt es:
Standard SQL hat auch nicht das Konzept eines öffentlichen Schemas. Das öffentliche Schema sollte nicht verwendet werden, um die Einhaltung des Standards zu maximieren.
Es ist besser, das "öffentliche Schema" nicht zu verwenden Bitte überprüfen Sie das offizielle Dokument unten für Details
Führen Sie die folgende SQL aus, um das öffentliche Schema zu deaktivieren
--Widerrufen Sie die standardmäßige Erstellungsberechtigung für das öffentliche Schema aus der öffentlichen Rolle
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
--Deaktivieren Sie die Fähigkeit öffentlicher Rollen, eine Verbindung zur Datenbank herzustellen
-- ※eroge_release_db ist der Datenbankname
REVOKE ALL ON DATABASE eroge_release_db FROM PUBLIC;
Normalerweise ist es besser, für jeden Benutzer, der es erstellt, ein Schema zu erstellen. Dieses Mal erstellen wir jedoch nur ein Schema, damit alle Benutzer dieses Schema sehen.
In der offiziellen Dokumentation finden Sie empfohlene Verwendungsmuster für das Schema
Führen Sie die folgende SQL aus, um ein Schema zu erstellen
--Erstellen eines Schemas
-- ※eroge_release_db_Schema ist der Schemaname
CREATE SCHEMA eroge_release_db_schema;
Erstellen Sie eine Rolle, die nur das Lesen von Daten ermöglicht Es wird eine Rolle sein, die keine Daten aktualisieren kann
Außerdem werden automatisch Berechtigungen erteilt, damit die Rolle "Nur Lesen" auf zukünftige Tabellen und Ansichten zugreifen kann.
Führen Sie die folgende SQL aus
--Erstellen Sie eine Rolle mit dem Namen readonly(Rolle ohne Passwort oder Autorität)
CREATE ROLE readonly;
--Die schreibgeschützte Rolle ist Eroge_release_Gewähren Sie Zugriff auf db
-- ※eroge_release_db ist der Datenbankname
GRANT CONNECT ON DATABASE eroge_release_db TO readonly;
--Gewähren Sie schreibgeschützten Rollenzugriff auf das Schema
-- ※eroge_release_db_Schema ist der Schemaname
GRANT USAGE ON SCHEMA eroge_release_db_schema TO readonly;
--Gewähren Sie Zugriff auf alle Tabellen und Ansichten im Schema
-- ※eroge_release_db_Schema ist der Schemaname
GRANT SELECT ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readonly;
--Wenn in Zukunft eine neue Tabelle oder Ansicht erstellt wird, haben Sie keine Zugriffsberechtigung.
--Wenn also in Zukunft eine neue Tabelle oder Ansicht erstellt wird, wird die Zugriffsberechtigung automatisch erteilt.
-- ※eroge_release_db_Schema ist der Schemaname
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT ON TABLES TO readonly;
Erstellen Sie eine Rolle, die neben dem Lesen von Daten auch das Schreiben ermöglicht Außerdem werden automatisch Berechtigungen erteilt, damit auf zukünftige Tabellen und Ansichten über die Rolle "readwrite" zugegriffen werden kann.
Führen Sie die folgende SQL aus
--Erstellen Sie eine Rolle mit dem Namen readwrite(Rolle ohne Passwort oder Autorität)
CREATE ROLE readwrite;
--Readwrite-Rolle ist Eroge_release_Gewähren Sie Zugriff auf db
-- ※eroge_release_db ist der Datenbankname
GRANT CONNECT ON DATABASE eroge_release_db TO readwrite;
--Gewähren Sie der Berechtigung zum Lesen der Rolle, neue Objekte im Schema zu erstellen
-- ※eroge_release_db_Schema ist der Schemaname
GRANT USAGE, CREATE ON SCHEMA eroge_release_db_schema TO readwrite;
--Gewähren Sie Zugriff auf alle Tabellen und Ansichten im Schema und fügen Sie Berechtigungen hinzu, löschen Sie sie und aktualisieren Sie sie
-- ※eroge_release_db_Schema ist der Schemaname
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readwrite;
--Wenn in Zukunft eine neue Tabelle oder Ansicht erstellt wird, haben Sie keine Zugriffsberechtigung und keine Berechtigung zum Hinzufügen / Löschen / Aktualisieren.
--Wenn in Zukunft eine neue Tabelle oder Ansicht erstellt wird, werden daher automatisch Zugriffsberechtigungen und Berechtigungen zum Hinzufügen / Löschen / Aktualisieren erteilt.
-- ※eroge_release_db_Schema ist der Schemaname
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
--Gewähren Sie Zugriff auf die Sequenz, da Sie die Sequenz auch verwenden müssen
-- ※eroge_release_db_Schema ist der Schemaname
GRANT USAGE ON ALL SEQUENCES IN SCHEMA eroge_release_db_schema TO readwrite;
--Wenn in Zukunft eine neue Sequenz erstellt wird, haben Sie keine Zugriffsberechtigung.
--Wenn also in Zukunft eine neue Sequenz erstellt wird, werden Zugriffsrechte automatisch gewährt.
-- ※eroge_release_db_Schema ist der Schemaname
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT USAGE ON SEQUENCES TO readwrite;
Erstellen Sie einen Benutzer für die Anmeldung und gewähren Sie die zuvor erstellte Rolle Erstellen Sie Benutzer für "Lesen" und "Lesen / Schreiben"
--app_readonly --app (lesen / schreiben)
Bitte führen Sie die folgende SQL aus
--Erstellen Sie einen schreibgeschützten Benutzer und erteilen Sie die Leseberechtigungsrolle
-- ※app_schreibgeschützt ist der Benutzername, Passwort ist das Passwort zum Anmelden
CREATE USER app_readonly WITH PASSWORD 'password';
GRANT readonly TO app_readonly;
--readwrite Benutzer erstellen und lesen/Schreibberechtigungsrolle erteilen
--* App ist der Benutzername, Passwort ist das Passwort für die Anmeldung
CREATE USER app WITH PASSWORD 'password';
GRANT readwrite TO app;
Führen Sie die folgende SQL aus, um zu überprüfen, ob die Benutzer app
und app_readonly
angezeigt und die Rollen ordnungsgemäß zugewiesen wurden.
--Berechtigungsbestätigung SQL
SELECT r.rolname
, ARRAY(
SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b
ON m.roleid = b.oid
WHERE m.member = r.oid
) AS memberof
FROM pg_catalog.pg_roles r
WHERE r.rolname NOT IN (
'pg_execute_server_program', 'pg_monitor', 'pg_read_all_settings',
'pg_read_all_stats', 'pg_read_server_files', 'pg_stat_scan_tables',
'pg_write_server_files', 'rds_ad', 'rdsadmin',
'rds_password', 'pg_signal_backend', 'rds_iam',
'rds_replication', 'rdsrepladmin', 'rds_superuser'
)
ORDER BY r.rolname;
Mit der Standardeinstellung "Suchpfad" können Sie die Tabelle nicht durchsuchen, indem Sie den erstellten Namen "eroge_release_db_schema" weglassen. Ändern Sie die Einstellung "Suchpfad" so, dass Sie die Tabelle durchsuchen können, auch wenn Sie den Namen "eroge_release_db_schema" weglassen. ** Ersetzen Sie eroge_release_db_schema durch den Namen des von Ihnen erstellten Schemas **
Überprüfen Sie die folgenden Dokumente auf weitere Informationen zu search_path
Führen Sie die folgende SQL aus
SHOW search_path;
Im Standardzustand sucht es nach demselben Schemanamen wie der "Login-Benutzername", andernfalls sucht es nach dem "öffentlichen" Schema.
Sie können die Tabelle durchsuchen, indem Sie eroge_release_db_schema
zu search_path hinzufügen.
Wenn Sie das aktuelle aktuelle Schema überprüfen, ist es "öffentlich"
Wenn Sie versuchen, die Tabelle ohne den Schemanamen zu durchsuchen, tritt der folgende Fehler auf.
Wählen Sie die von Ihnen erstellte DB-Parametergruppe aus und bearbeiten Sie sie
Geben Sie "search_path" für den Parameter ein, geben Sie "$ user", eroge_release_db_schema "für den Werteteil ein und klicken Sie auf" Vorschau der Änderungen ".
Stellen Sie sicher, dass der neue Wert "$ user" ist, eroge_release_db_schema "und klicken Sie auf" Save Save Changes "
Führen Sie die folgende SQL aus
SHOW search_path;
Stellen Sie sicher, dass Sie die geänderten Werte in der DB-Parametergruppe haben Wenn Sie auch das aktuelle aktuelle Schema überprüfen, lautet es "eroge_release_db_schema"
Wenn Sie den Schemanamen weglassen und die Tabelle durchsuchen, können Sie sehen, dass sie fehlerfrei angezeigt wurde.
** Damit ist der Aufbau von RDS abgeschlossen **
Normalerweise sollten Sie AWS CDK oder Terraform verwenden, um Ihre Infrastruktur zu codieren. Zunächst habe ich es über den AWS-Konsolenbildschirm geschafft Es hat lange gedauert, aber ich konnte das ganze Bild erfassen und es war ein sehr guter Start. Schließlich möchte ich auch die diesmal erstellte Umgebung codieren!
Recommended Posts