Je vais vous présenter en détail comment créer une configuration générale de VPC, de serveur d'étape, de RDS à partir de l'écran de la console sur AWS, comme indiqué dans l'image ci-dessous.
Puisqu'il est destiné à un usage personnel, le serveur de la plateforme n'est pas rendu redondant. Généralement, avec cette configuration, cela coûte environ 6000 yens par mois.
En outre, vous pouvez être curieux de connaître le nom que vous utilisez, mais il serait utile que vous puissiez le transmettre. Cette configuration sera créée dans votre propre DB Migration System with Rails and AWS La grande image réelle est ci-dessous
Pour la création de l'environnement AWS, j'ai vraiment fait référence à «Apprendre des bases d'AWS aux applications en 2 semaines tout en bougeant les mains» d'Udemy. Je ne peux pas le prendre maintenant, j'ai donc publié le billet de blog de l'auteur [Conférence pour prendre en charge 0 → 1 de l'apprentissage AWS "Apprendre des bases d'AWS aux applications en 2 semaines en passant la main" sur Udemy --log4ketancho](https :: Veuillez vérifier //www.ketancho.net/entry/2018/09/03/074115)
Créer un environnement VPC Nous allons créer un sous-réseau public et un sous-réseau privé dans chaque zone de disponibilité de ap-nord-est-1a et ap-nord-est-1c.
La configuration finale sera la suivante
Utilisez l'assistant VPC pour créer «VPC», «sous-réseau public» et «passerelle Internet»
Cliquez sur "Lancer l'assistant VPC" sur l'écran "Tableau de bord VPC"
Cliquez sur "Sélectionner"
Entrez le nom du VPC, le CIDR IPv4 du sous-réseau public, la zone de disponibilité, le nom du sous-réseau et cliquez sur Créer un VPC.
** Entrez 10.0.11.0 / 24
pour le CIDR IPv4 du sous-réseau public
**
** Entrez ʻap-north-1a pour ʻAvailability Zone
**
** Entrez n'importe quel nom pour VPC name
et subnet name
**
Cliquez sur «OK»
Assurez-vous que le VPC est créé
Assurez-vous que le sous-réseau public est créé
Assurez-vous que IGW (Internet Gateway) est défini dans la table de routage
Assurez-vous que l'IGW (Internet Gateway) est créé
Avec ce qui précède, l'état suivant a été créé
Puisque le sous-réseau public a été créé dans la zone de disponibilité ʻap-nord-est-1a, nous allons également créer un sous-réseau public dans ʻap-nord-est-1c
.
Cliquez sur «Créer une sous-section» sur l'écran «Sous-zone»
Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»
** Sélectionnez le VPC créé pour VPC
**
** Entrez ʻap-nord-est-1c pour ʻAvailability Zone
**
** ʻEnter 10.0.12.0 / 24
pour le bloc CIDR IPv4` **
Cliquez sur «Fermer»
Sélectionnez le sous-réseau ʻap-north-1cnouvellement créé Puisque ʻIGW (passerelle Internet)
n'est pas défini dans la table de routage, ce sous-réseau ne peut pas sortir vers Internet pour le moment, il s'agit donc d'un sous-réseau privé
.
Définissez ʻIGW (Internet Gateway) dans la table de routage Cliquez sur ʻEdit Route Table Association
Passer à la table de routage
créée précédemment
Vous pouvez voir que ʻIGW (Internet Gateway) `a été ajouté Si vous êtes satisfait, cliquez sur "Enregistrer"
Cliquez sur «Fermer»
Assurez-vous que ʻIGW (Internet Gateway) ʻest ajouté à la table de routage
Avec ce qui précède, il a été créé jusqu'à l'état suivant
Nous allons créer un sous-réseau privé ainsi qu'un sous-réseau public
ʻAp-Northwest-1a` créera un sous-réseau
Cliquez sur "Créer une sous-section"
Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»
** Sélectionnez le VPC créé pour VPC
**
** Entrez ʻap-north-1a pour ʻAvailability Zone
**
** ʻEnter 10.0.21.0 / 24
pour le bloc IPv4 CIDR` **
Cliquez sur «Fermer»
ʻAp-Nord-Est-1c` créera un sous-réseau
Un sous-réseau a été créé à ʻap-north-1a`
ʻAp-Northwest-1c` sera également créé comme sous-réseau Cliquez sur "Créer une sous-section"
Entrez le «nom tag», «VPC», «zone de disponibilité», «bloc CIDR IPv4» et cliquez sur «Créer»
** Sélectionnez le VPC créé pour VPC
**
** Entrez ʻap-nord-est-1c pour ʻAvailability Zone
**
** ʻEnter 10.0.22.0 / 24
pour le bloc IPv4 CIDR` **
Cliquez sur «Fermer»
Confirmez qu'il a été créé
Je vais créer un sous-réseau privé
Donnez-lui un nom descriptif avant de créer un sous-réseau privé
Cliquez sur Créer une table de routage
Entrez le nom tag
, VPC
et cliquez sur Créer
** Sélectionnez le VPC créé pour VPC
**
Cliquez sur «Fermer»
Confirmez qu'il a été créé
Je vais lier la table de routage créée pour le privé au sous-réseau
Cliquez sur ʻEdit Route Table Association`
Sélectionnez la table de routage que vous venez de créer et cliquez sur «Enregistrer»
Cliquez sur «Fermer»
Je vais lier la table de routage créée pour le privé au sous-réseau
Cliquez sur ʻEdit Route Table Association`
Sélectionnez la table de routage que vous venez de créer et cliquez sur «Enregistrer»
Cliquez sur «Fermer»
Vous pouvez voir que le sous-réseau est lié à la table de routage
** Ceci termine la construction du VPC **
Créer un serveur de plateforme (EC2) sur le sous-réseau public
Normalement, il est préférable de construire un serveur de plate-forme en utilisant ʻAuto Scaling sur le sous-réseau public, mais cela coûte de l'argent, donc cette fois nous allons le construire sans utiliser ʻAuto Scaling
.
** Pas très bonne configuration car le serveur de la plateforme est un point de défaillance unique **
Après construction, le diagramme de configuration sera le suivant.
Construisons l'environnement immédiatement
Créer une instance EC2 pour le serveur de plateforme
Cliquez sur "Créer une instance"
ʻSelect 64-bit (x86) ʻof Amazon Linux 2 AMI (HVM), SSD Volume Type
et cliquez surSélectionner
Sélectionnez t2.nano
et cliquez sur Étape suivante: définir les détails de l'instance
** Si vous pouvez vous le permettre, vous pouvez choisir un type légèrement supérieur **
Entrez le «réseau», «sous-réseau» et «IP publique attribuée automatiquement»
Sélectionnez la cible VPC
pour le réseau
Sélectionnez ʻap-nord-est-1a public subnet` pour le sous-réseau
Sélectionnez «Activé» pour l'adresse IP publique attribuée automatiquement (je configurerai l'adresse IP Elastic plus tard, mais je l'activerai une fois)
Pour les données utilisateur
, sélectionnez dans
texte et collez le contenu suivant
#!/bin/bash
#Changer le nom d'hôte
# https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-hostname.html
sudo hostnamectl set-hostname eroge-release-stepping-stone-server
#Installer PostgreSQL 11
# 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
#Fuseau horaire de l'Asie/Changer pour Tokyo
# 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
Enfin, cliquez sur Étape suivante: Ajouter du stockage
En gros, vous pouvez laisser la valeur par défaut
Cliquez sur Étape suivante: Ajouter une balise
Cliquez sur «Ajouter une autre balise», définissez la clé sur «Nom» et la valeur sur un nom descriptif, puis cliquez sur «Étape suivante: définir le groupe de sécurité».
Sélectionnez «Créer un nouveau groupe de sécurité» et entrez quelque chose de descriptif pour le «nom du groupe de sécurité» et la «description». Enfin cliquez sur "Confirmer et créer"
** Normalement, ne définissez pas 0.0.0.0 / 0
pour la partie source
(car elle est complètement ouverte) **
** Définissez l'adresse IP globale de votre domicile pour restreindre l'accès SSH **
Si vous êtes satisfait du contenu affiché, cliquez sur «Démarrer».
Sélectionnez «Créer une nouvelle paire de clés», saisissez un «nom de paire de clés descriptif», puis cliquez sur «Télécharger la paire de clés».
Enfin cliquez sur Créer une instance
** La paire de clés téléchargée sera utilisée pour se connecter au serveur de la plateforme **
Cliquez sur "Afficher les instances"
Confirmez que l'instance a été créée L'IP Elastic n'a pas encore été définie, nous définirons donc l'IP Elastic à l'avenir.
Dans la situation actuelle, l'adresse IP change à chaque fois que le serveur de la plate-forme est démarré, donc créez ʻElastic IP` pour que l'adresse IP soit fixe.
Cliquez sur «Attribution d'adresse IP élastique»
Il n'y a rien à définir, alors cliquez sur ʻAssign`
L'attribution d'adresse IP élastique est terminée
Puisqu'il n'y a pas de nom et qu'il est difficile à comprendre, ajoutez une balise pour que le nom s'affiche
Cliquez sur «Actions» et cliquez sur «Afficher les détails»
Cliquez sur "Gérer les balises"
Entrez un nom descriptif pour «Nom» et «option-valeur» pour «clé»
Enfin cliquez sur Enregistrer
Des balises ont été ajoutées
Associez l '«adresse IP élastique» que vous avez créée au «Tread Server (EC2)» que vous avez créé précédemment.
ʻCliquez sur Elastic IP Address Association`
Pour l'élément d'instance, sélectionnez l '«instance EC2» créée précédemment. Enfin cliquez sur ʻAssocier`
Vous pouvez voir que l'instance EC2 que vous avez définie précédemment est affichée dans l'instance associée.
Vous pouvez également voir que l 'ʻElastic IP ʻElastic IP
que vous avez créée précédemment est affichée sur l'écran d'instance EC2.
Vérifiez si vous pouvez accéder au serveur de plate-forme créé à l'aide d'une commande comme celle-ci
** La paire de clés sera celle que vous avez téléchargée lors de la création de l'instance EC2 **
$ ssh -i paire de clés ec2 – utilisateur@Adresse IP élastique
Si vous pouvez vous connecter, vous avez terminé
** Ceci termine la construction du serveur de plate-forme **
Créer des configurations maître et esclave PostgreSQL avec RDS
Après construction, le diagramme de configuration sera le suivant.
Construisons l'environnement immédiatement
C'est un paramètre pour Master et Slave sur quel sous-réseau démarrer l'instance de base de données Veuillez consulter les documents suivants pour plus de détails
Cliquez sur «Groupe de sous-réseaux» dans le menu de gauche et cliquez sur «Créer un groupe de sous-zones DB» en haut à droite.
Entrez nom
, description
, VPC
** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **
Ajouter un Sous-réseau privé
pour la zone de disponibilité cible ( 1a
et 1c
)
Enfin, cliquez sur le bouton Créer
pour terminer.
RDS utilise des groupes de paramètres pour configurer les instances de base de données Si vous créez une instance de base de données sans utiliser de groupe de paramètres, le groupe de paramètres par défaut sera utilisé. Ce ** groupe de paramètres par défaut ne peut pas être modifié **, il est donc recommandé de le définir.
Veuillez consulter les documents suivants pour plus de détails
Cliquez sur «Groupe de paramètres» dans le menu de gauche et cliquez sur «Créer un groupe de paramètres» en haut à droite
Entrez la famille de groupe de paramètres
, le nom du groupe
et la description
Sélectionnez PostgreSQL pour la famille de groupes de paramètres
Enfin cliquez sur Créer
Créez un groupe de sécurité qui autorise uniquement l'accès à partir du serveur de la plate-forme pour augmenter la sécurité pour RDS ** Joindre ce groupe de sécurité sur l'écran des paramètres RDS **
Ouvrez l'écran de la console VPC, cliquez sur «Groupe de sécurité» dans le menu de gauche, puis sur «Créer un groupe de sécurité» en haut à gauche.
Entrez le "nom du groupe de sécurité", la "description" et le "VPC" et cliquez sur le bouton "Créer". ** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **
Cliquez sur le bouton Fermer
pour fermer l'écran de création
Par défaut, name
est vide, cliquez donc sur le bouton crayon à l'extrême droite de la colonne Name
et donnez-lui un nom descriptif.
Cliquez sur l'onglet «Règles entrantes» et cliquez sur «Modifier la règle»
Cliquez sur «Ajouter une règle» lorsque l'écran change
Cliquez sur le type et ajoutez PostgreSQL
et SSH
Sélectionnez Tread Server Security Group
pour la pièce source
** En sélectionnant le groupe de sécurité du serveur de plateforme, l'accès ne sera autorisé qu'à partir de l'instance qui possède le groupe de sécurité du serveur de plateforme **
Enfin, entrez description
et cliquez sur Enregistrer la règle
Cliquez sur le bouton fermer
Ceci termine la création du groupe de sécurité.
Je suis prêt à créer la base de données, je vais donc la créer maintenant.
Cliquez sur «Tableau de bord» dans le menu de gauche et cliquez sur «Créer une base de données» en bas
Cette fois, nous les définirons un par un, alors sélectionnez «Création standard».
Puisque nous allons créer une base de données pour PostgreSQL, il est recommandé de sélectionner PostgreSQL
et de sélectionner également la dernière version mineure de version
.
Si vous sélectionnez «Niveau gratuit», vous ne pourrez pas sélectionner «Placement multi-AZ», alors sélectionnez «Développement / Test».
Saisissez l '«identificateur d'instance de base de données», le «nom d'utilisateur principal» et le «mot de passe principal» «Identificateur d'instance de base de données» est le nom affiché sur l'écran de la console. Veuillez noter qu'il ne s'agit pas d'un nom de base de données
Vérifiez les documents suivants pour les utilisateurs principaux
Pour un usage personnel, j'aimerais choisir celui avec les spécifications les plus basses qui soit respectueux du portefeuille en termes de prix, mais si je sélectionne `` Développement / Test '', une spécification assez élevée sera sélectionnée.
En sélectionnant classe extensible (y compris la classe t)
, vous pourrez sélectionner une spécification compatible avec le portefeuille.
Si vous l'utilisez personnellement, vous pouvez laisser la valeur par défaut Avec une configuration «multi-AZ», 20 Go coûteront environ 5 $ par mois.
Veuillez consulter les documents suivants pour connaître les frais détaillés
Sélectionnez Créer une instance de secours (recommandé pour l'environnement de production)
pour créer un déploiement multi-AZ.
** Remarque: si le modèle est défini sur le cadre d'utilisation gratuite, il sera grisé et ne pourra pas être sélectionné, alors assurez-vous de le développer / tester **
Entrez le VPC cible dans Virtual Private Cloud (VPC)
** Remarque: assurez-vous de sélectionner le VPC créé au lieu du VPC par défaut **
Cliquez sur «Paramètres de connexion supplémentaires» et saisissez plus d'informations
Pour Groupe de sous-réseaux
, sélectionnez le groupe de sous-réseaux que vous avez créé précédemment.
Sélectionnez "Aucun" pour "Accessible au public" ** Sélectionnez Aucun pour autoriser l'accès via le serveur de la plateforme **
Pour VPC Security Group
, sélectionnez le groupe de sécurité que vous avez créé précédemment.
Vous pouvez laisser le port de base de données
par défaut
Si vous n'avez pas besoin d'authentifier votre base de données à l'aide des informations d'identification IAM, l'authentification par mot de passe par défaut convient. Veuillez consulter les documents suivants pour plus de détails
Je vais expliquer chaque paramètre supplémentaire
En spécifiant «premier nom de base de données», RDS sera construit avec la base de données créée.
Pour Groupe de paramètres DB
, spécifiez le groupe de paramètres créé précédemment.
Dans la «fenêtre de sauvegarde», sélectionnez la «fenêtre de sélection» et définissez «l'heure de début» sur «20: 00». Avec ce paramètre, vous pourrez effectuer une sauvegarde entre 5 et 30 minutes du matin.
Veuillez consulter les documents suivants pour plus de détails
Performance Insights
Vous pouvez conserver les valeurs par défaut pour Performance Insights
Veuillez consulter les documents suivants pour plus de détails
Vous pouvez laisser la valeur par défaut pour la surveillance
Veuillez consulter les documents suivants pour plus de détails
Vérifiez Journal PostgreSQL
, Journal de mise à niveau
Vous pouvez vérifier la sortie du journal par CloudWatch Logs
en la vérifiant.
Veuillez vérifier les documents suivants pour les journaux
Dans la «fenêtre de maintenance», sélectionnez la «fenêtre de sélection» et définissez «l'heure de début» sur «18: 00». Avec ce paramètre, vous pourrez mettre à jour la version mineure dans les 30 minutes à 3 heures le mardi matin.
Consultez les documents suivants pour les mises à niveau de version mineures
Si vous le cochez, vous ne pourrez pas supprimer la base de données. ** Vous pouvez le supprimer en modifiant le paramètre **
Enfin, vérifiez le «coût mensuel estimé» et cliquez sur le bouton «Créer une base de données» si cela semble correct. Ceci termine la construction du RDS!
Veuillez consulter les documents suivants pour plus de détails sur les prix
Accédez au serveur de plateforme à l'aide d'une commande similaire à la suivante
** La paire de clés sera celle que vous avez téléchargée lors de la création de l'instance EC2 **
$ ssh -i paire de clés ec2 – utilisateur@Adresse IP élastique
Accédez à RDS à l'aide d'une commande similaire à la suivante
$ psql -h Point final RDS-Nom de la base de données de noms d'utilisateur maître U
Si vous pouvez y accéder, il n'y a pas de problème Les travaux suivants seront effectués à partir de cet écran
Je passerai en revue au moins les termes nécessaires pour créer un environnement avec PostgreSQL
Un cluster de bases de données est un ensemble de bases de données
Lorsqu'elle est créée avec RDS, la première base de données ,
postgres,
rdsadin,
tempalte0et
template1` définies sur l'écran de réglage RDS sont créées dans le cluster de bases de données.
Veuillez consulter les documents suivants pour plus de détails
Une base de données est une collection nommée d'objets de base de données (tables, vues, fonctions et opérateurs, etc.)
Veuillez consulter les documents suivants pour plus de détails
Les schémas peuvent regrouper des objets de base de données (tables, vues, fonctions et opérateurs, etc.) dans la base de données
Veuillez consulter les documents suivants pour plus de détails
Le rôle approuve la connexion à la base de données. Les rôles sont divisés en utilisateurs de base de données (utilisateurs qui se connectent à la base de données) et groupes d'utilisateurs de base de données.
Il existe deux types de SQL pour créer un rôle: La différence entre les deux est de savoir s'ils ont l'attribut LOGIN
--Créer un groupe d'utilisateurs de base de données
CREATE ROLE name;
--Créer un utilisateur de base de données
CREATE USER name;
Veuillez consulter les documents suivants pour plus de détails
Nous allons créer un environnement basé sur les «meilleures pratiques pour la gestion des utilisateurs et des rôles» en nous référant au billet de blog AWS. Je vais le créer en référence aux deux articles suivants
--Utilisez l'utilisateur maître pour créer des rôles pour chaque application ou cas d'utilisation, tels que
readonly
oureadwrite
: Ajoutez des autorisations pour permettre à ces rôles d'accéder à divers objets de base de données. Par exemple, le rôlereadonly
ne peut exécuter que des requêtesSELECT
--Donner au rôle les privilèges minimum requis pour la fonctionnalité --Créez un nouvel utilisateur pour chaque application ou fonctionnalité individuelle, telle que ʻapp_userou
reporting_user: Attribuez les rôles appropriés à ces utilisateurs et accordez-leur rapidement les mêmes privilèges que les rôles. Par exemple, accordez le rôle
readwriteà ʻapp_user
et le rôlereadonly
àreporting_user
.
- Vous pouvez supprimer un rôle d'un utilisateur à tout moment pour révoquer des autorisations
Les images et le texte ci-dessus sont tirés de PostgreSQL User and Role Management | Amazon Web Services Blog
Ce que je dis, c'est de créer des rôles de groupe tels que «autorisation de lecture» et «autorisation de lecture / écriture» et les accorder aux utilisateurs en fonction de leur objectif.
** Remarque: Le reste du travail sera effectué en se connectant au RDS depuis le step server
en tant que master user
**
Créer une nouvelle base de données crée un schéma public
La création d'un objet de base de données tel qu'une table appartiendra au schéma public
Même si vous créez un nouvel utilisateur et accordez des autorisations et limitez-le, il sera créé dans le schéma public
, de sorte que l'utilisateur nouvellement créé n'aura aucun sens.
Vous devez révoquer les autorisations de création sur le schéma public
La documentation officielle de PostgreSQL dit:
Le SQL standard n'a pas non plus le concept de schéma public. Le schéma public ne doit pas être utilisé pour maximiser la conformité à la norme.
Il vaut mieux ne pas utiliser le schéma public
Veuillez consulter le document officiel ci-dessous pour plus de détails
Exécutez le SQL suivant pour désactiver le schéma public
--Révoquer l'autorisation de création par défaut pour le schéma public du rôle public
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
--Désactiver la capacité des rôles publics à se connecter à la base de données
-- ※eroge_release_db est le nom de la base de données
REVOKE ALL ON DATABASE eroge_release_db FROM PUBLIC;
Normalement, il est préférable de créer un schéma pour chaque utilisateur qui le crée, mais cette fois, nous allons créer un seul schéma afin que tous les utilisateurs voient ce schéma
Consultez la documentation officielle pour connaître les modèles d'utilisation recommandés pour le schéma
Exécutez le SQL suivant pour créer un schéma
--Créer un schéma
-- ※eroge_release_db_schema est le nom du schéma
CREATE SCHEMA eroge_release_db_schema;
Créer un rôle qui autorise uniquement la lecture des données Ce sera un rôle qui ne peut pas mettre à jour les données
Il accorde également automatiquement des autorisations afin que le rôle readonly
puisse accéder aux futures tables et vues.
Exécutez le SQL suivant
--Créer un rôle nommé en lecture seule(Rôle sans mot de passe ni autorité)
CREATE ROLE readonly;
--Le rôle en lecture seule est eroge_release_Accorder l'accès à db
-- ※eroge_release_db est le nom de la base de données
GRANT CONNECT ON DATABASE eroge_release_db TO readonly;
--Accorder un accès de rôle en lecture seule au schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE ON SCHEMA eroge_release_db_schema TO readonly;
--Accorder l'accès à toutes les tables et vues du schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT SELECT ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readonly;
--Lorsqu'une nouvelle table ou vue est créée à l'avenir, vous n'aurez pas d'autorisation d'accès.
--Ainsi, lorsqu'une nouvelle table ou vue est créée à l'avenir, l'autorisation d'accès sera donnée automatiquement.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT ON TABLES TO readonly;
Créer un rôle qui permet d'écrire en plus de lire des données
Il accorde également automatiquement des autorisations afin que les futures tables et vues soient accessibles par le rôle readwrite
.
Exécutez le SQL suivant
--Créer un rôle nommé readwrite(Rôle sans mot de passe ni autorité)
CREATE ROLE readwrite;
--le rôle readwrite est eroge_release_Accorder l'accès à db
-- ※eroge_release_db est le nom de la base de données
GRANT CONNECT ON DATABASE eroge_release_db TO readwrite;
--Accordez au rôle readwrite l'autorisation de créer de nouveaux objets dans le schéma
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE, CREATE ON SCHEMA eroge_release_db_schema TO readwrite;
--Accordez l'accès à toutes les tables et vues du schéma et ajoutez / supprimez / mettez à jour des autorisations
-- ※eroge_release_db_schema est le nom du schéma
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA eroge_release_db_schema TO readwrite;
--Lorsqu'une nouvelle table ou vue est créée à l'avenir, vous n'aurez pas d'autorisation d'accès ni d'autorisation d'ajout / suppression / mise à jour.
--Par conséquent, lorsqu'une nouvelle table ou vue est créée à l'avenir, l'autorisation d'accès et l'autorisation d'ajout / suppression / mise à jour sont automatiquement accordées.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
--Accordez l'accès à la séquence car vous devez également utiliser la séquence
-- ※eroge_release_db_schema est le nom du schéma
GRANT USAGE ON ALL SEQUENCES IN SCHEMA eroge_release_db_schema TO readwrite;
--Lorsqu'une nouvelle séquence est créée à l'avenir, vous n'aurez pas d'autorisation d'accès.
--Ainsi, lorsqu'une nouvelle séquence est créée à l'avenir, les droits d'accès seront accordés automatiquement.
-- ※eroge_release_db_schema est le nom du schéma
ALTER DEFAULT PRIVILEGES IN SCHEMA eroge_release_db_schema GRANT USAGE ON SEQUENCES TO readwrite;
Créez un utilisateur pour la connexion et accordez le rôle créé précédemment Créer des utilisateurs pour «lire» et «lire / écrire»
--app_readonly --app (lecture / écriture)
Veuillez exécuter le SQL suivant
--Créer un utilisateur en lecture seule et accorder le rôle d'autorisation de lecture
-- ※app_readonly est le nom d'utilisateur, le mot de passe est le mot de passe pour se connecter
CREATE USER app_readonly WITH PASSWORD 'password';
GRANT readonly TO app_readonly;
--readwrite Créer et lire un utilisateur/Accorder le rôle d'autorisation d'écriture
--* L'application est le nom d'utilisateur, le mot de passe est le mot de passe pour la connexion
CREATE USER app WITH PASSWORD 'password';
GRANT readwrite TO app;
ʻApp, ʻapp_readonly
Les utilisateurs sont affichés et vérifient si les rôles sont correctement attribués en exécutant le SQL suivant.
--Confirmation d'autorisation 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;
Avec le paramètre par défaut «search_path», vous ne pouvez pas rechercher la table en omettant le nom «eroge_release_db_schema» créé.
Modifiez le paramètre search_path
pour pouvoir rechercher dans la table même si vous omettez le nom ʻeroge_release_db_schema`.
** Remplacez eroge_release_db_schema par le nom du schéma que vous avez créé **
Consultez les documents suivants pour plus d'informations sur search_path
Exécutez le SQL suivant
SHOW search_path;
Dans l'état par défaut, il recherche le même nom de schéma que le nom d'utilisateur de connexion
, sinon il recherche le schéma public
.
Vous pouvez rechercher la table en ajoutant ʻeroge_release_db_schema` à search_path.
Si vous vérifiez le schéma actuel actuel, il sera public
Si vous essayez de rechercher la table sans le nom de schéma, l'erreur suivante se produit.
Sélectionnez le groupe de paramètres DB que vous avez créé et modifiez-le
Entrez search_path
pour le paramètre, entrez '$ user', eroge_release_db_schema
pour la valeur, et cliquez sur Preview Changes
.
Assurez-vous que la nouvelle valeur est `` $ user ', eroge_release_db_schema et cliquez sur
Enregistrer les modifications`
Exécutez le SQL suivant
SHOW search_path;
Assurez-vous que vous disposez des valeurs modifiées dans le groupe de paramètres DB Si vous vérifiez également le schéma actuel actuel, ce sera ʻeroge_release_db_schema`.
Si vous omettez le nom du schéma et recherchez la table, vous pouvez voir qu'il a été affiché sans erreur.
** Ceci termine la construction du RDS **
Vous devez normalement utiliser AWS CDK ou Terraform pour coder votre infrastructure. Tout d'abord, je l'ai fait à partir de l'écran de la console AWS Cela a pris du temps comme une bonne chose, mais j'ai pu saisir la situation dans son ensemble et c'était un très bon début. Finalement, j'aimerais aussi coder l'environnement créé cette fois!
Recommended Posts