Gestion des utilisateurs, des rôles et des privilèges
PostgreSQL utilise un système de rôles pour gérer des droits de base de données. Les rôles sont utilisés pour octroyer à un utilisateur ou à un groupe d'utilisateurs un ensemble de privilèges. Déterminez les rôles, les groupes et les privilèges
dans votre déploiement à l'aide de la psql
commande \du
.
Lorsque vous provisionnez un nouveau déploiement dans IBM Cloud, un utilisateur admin
vous est automatiquement attribué pour accéder à PostgreSQL et le gérer.
Administrateur (admin
)
Lorsque vous provisionnez un nouveau déploiement dans IBM Cloud, un utilisateur admin
vous est automatiquement attribué pour accéder à PostgreSQL et le gérer. Une fois le mot de passe administrateur défini,
utilisez-le pour vous connecter à votre déploiement.
Lorsque admin
crée une ressource dans une base de données, comme une table, admin
est propriétaire de cet objet. Les ressources créées par admin
ne sont pas accessibles aux autres utilisateurs, sauf si
vous leur en accordez expressément l'autorisation.
La plus grande différence entre l'utilisateur admin
et tous les autres utilisateurs que vous ajoutez à votre déploiement est l'utilisation de l'attribut pg_monitor
et pg_signal_backend
sont les rôles de l'utilisateur et de l'utilisateur. Le rôle pg_monitor
fournit un ensemble de droits
autorisant l'administrateur à surveiller le serveur de base de données. Le rôle pg_signal_backend
fournit à l'administrateur la possibilité d'envoyer des signaux afin d'annuler des requêtes et des connexions qui sont initiées
par d'autres utilisateurs. Il ne peut pas envoyer de signaux à des processus appartenant à des superutilisateurs.
Vous pouvez également utiliser l'utilisateur admin
pour attribuer ces deux rôles à d'autres utilisateurs de votre déploiement.
Pour permettre à d'autres utilisateurs de la base de données d'annuler des requêtes, attribuez le rôle pg_signal_backend
à l'utilisateur admin
. Utilisez une commande telle que:
GRANT pg_signal_backend TO joe;
Pour permettre à l'utilisateur joe
d'annuler des systèmes de back end, accordez pg_signal_backend
à tous les utilisateurs ayant le rôle ibm-cloud-base-user
à l'aide d'une commande telle que:
GRANT pg_signal_backend TO "ibm-cloud-base-user";
Ce privilège permet à l'utilisateur ou aux utilisateurs de mettre fin à toute connexion à la base de données.
Pour configurer un utilisateur de surveillance spécifique, mary
, utilisez une commande telle que:
GRANT pg_monitor TO mary;
Accordez pg_signal_backend
à tous les utilisateurs ayant le rôle ibm-cloud-base-user
à l'aide d'une commande telle que:
GRANT pg_monitor TO "ibm-cloud-base-user";
Définition du mot de passe administrateur dans l'interface utilisateur
Définissez votre mot de passe d'administrateur via l'interface utilisateur en sélectionnant votre instance dans la liste des ressources dans le IBM Cloud Tableau de bord. Sélectionnez ensuite Paramètres. Ensuite, dans la section Changement du mot de passe de l'administrateur de la base de données, saisissez un nouveau mot de passe et cliquez sur Changement du mot de passe.
Définition du mot de passe administrateur dans le CLI
Utilisez la commande cdb user-password
à partir du plug-in d'interface de ligne de commande Cloud Databases pour définir le mot de passe admin
.
Par exemple, pour définir le mot de passe administrateur d'un déploiement nommé example-deployment
, utilisez la commande suivante :
ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>
Définition du mot de passe administrateur dans l'API
Le point de terminaison de la fondation qui est indiqué dans la section Détails du déploiement du panneau de présentation de votre service fournit la base URL pour accéder à ce déploiement par l'intermédiaire de l'API. Utilisez-le avec le noeud final Définir le mot de passe de l'utilisateur spécifié pour définir le mot de passe de l'administrateur.
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
Utilisateurs pour les données d'identification de service
Les utilisateurs que vous Créer via le panneau Données d'identification sont membres de ibm-cloud-base-user
.
Ils peuvent se connecter, mais aussi créer des utilisateurs et des bases de données.
Lorsqu'un utilisateur d'un groupe crée une ressource dans une base de données, par exemple, une table, tous les utilisateurs de ce groupe ont accès à cette ressource. Les ressources créées par n'importe lequel des utilisateurs du groupe ibm-cloud-base-user
sont accessibles aux autres utilisateurs du groupe ibm-cloud-base-user
, y compris l'administrateur.
Utilisateurs créés via l'interface de ligne de commande
Les utilisateurs que vous créez via le plug-in d'interface de ligne de commandeCloud Databases sont également membres de ibm-cloud-base-user
. Ils peuvent se connecter, mais aussi créer des
utilisateurs et des bases de données.
Lorsqu'un utilisateur crée une ressource dans une base de données, par exemple, une table, tous les utilisateurs du même groupe ont accès à cette ressource. Les ressources créées par l'un des utilisateurs de ibm-cloud-base-user
sont accessibles aux autres utilisateurs de ibm-cloud-base-user
, y compris à l'utilisateur de admin
.
Les utilisateurs créés directement à partir de l'API et de l'interface CLI n'apparaissent pas dans Données d'identification, mais vous pouvez Les ajouter si vous le choisissez.
Utilisateurs créés via l'API
Les utilisateurs que vous créez via l'APICloud Databases sont également membres de ibm-cloud-base-user
. Ils peuvent se connecter,
mais aussi créer des utilisateurs et des bases de données.
Lorsqu'un utilisateur crée une ressource dans une base de données, par exemple, une table, tous les utilisateurs du même groupe ont accès à cette ressource. Les ressources créées par n'importe lequel des utilisateurs du groupe ibm-cloud-base-user
sont accessibles aux autres utilisateurs du groupe ibm-cloud-base-user
, y compris l'administrateur.
Les utilisateurs créés directement à partir de l'API et de l'interface CLI n'apparaissent pas dans Données d'identification, mais vous pouvez Les ajouter si vous le choisissez.
Utilisateur de réplique accessible en lecture seule
Le rôle ibm-cloud-base-user-ro
gère les privilèges des utilisateurs qui sont créés pour accéder aux répliques accessibles en lecture seule. Pour plus d'informations, voir Configuration des répliques en lecture seule.
Administrateur (repl
)
L'utilisateur repl
a des privilèges de réplication et est utilisé si vous activez le plug-in wal2json
sur votre déploiement. Tout
en activant wal2json
, définissez le mot de passe de l'utilisateur repl
, ce qui permet au plug-in wal2json
de l'utiliser.
Autres utilisateurs ibm
Si vous exécutez la commande \du
avec votre compte admin
, vous remarquerez peut-être des utilisateurs nommés ibm
, ibm-cloud-base-user
, ibm-replication
et ibm-rewind
.
Le groupe ibm-cloud-base-user
sert de modèle pour gérer les rôles de groupe pour d'autres utilisateurs. Permet de gérer les utilisateurs créés via l'interface CLI et l'API et d'activer l'intégration avec la création d'utilisateur
Données d'identification de service sous IBM Cloud. Un utilisateur membre de ibm-cloud-base-user
hérite du rôle de création et crée des attributs de base de données à partir de ibm-cloud-base-user
. Le groupe
ibm-cloud-base-user
ne peut pas se connecter.
Le compte ibm
est le seul superutilisateur de votre déploiement. Nous ne disposons pas d'un compte superutilisateur. Cet utilisateur est un compte d'administration interne qui gère la stabilité de votre déploiement.
Utilisateurs créés avec psql
Vous pouvez complètement ignorer la création d'utilisateurs via IBM Cloud et créer des utilisateurs directement dans PostgreSQL avec psql
. Cela vous permet d'utiliser des PostgreSQL's natifs gestion des rôles et des utilisateurs. Les utilisateurs/rôles créés dans psql
doivent avoir tous leurs privilèges définis manuellement, ainsi que les privilèges pour les objets qu'ils créent.
Les utilisateurs créés directement dans PostgreSQL n'apparaissent pas dans Données d'identification, mais vous pouvez Les ajouter si vous le choisissez.
Notez que ces utilisateurs ne sont pas intégrés aux contrôles IAM, même s'ils sont ajoutés à Données d'identification.
Utilisateurs et chaînes de connexion supplémentaires
L'accès à votre déploiement Databases for PostgreSQL n'est pas limité à l'utilisateur admin
. Ajoutez des utilisateurs dans l'interface utilisateur dans Accréditations du service, avec le Cloud Databases CLI plug-in,
ou l'Cloud Databases API.
Tous les utilisateurs de votre déploiement peuvent utiliser les chaînes de connexion, y compris celles pour des noeuds finaux publics ou privés.
Lorsque vous créez un utilisateur, il reçoit certains rôles et privilèges de base de données. Ces privilèges incluent la possibilité de se connecter, de créer des bases de données et de créer d'autres utilisateurs.
Création d'utilisateurs dans l'interface utilisateur
- Accédez au tableau de bord de votre service.
- Cliquez sur Accréditations de service pour ouvrir Accréditations de service.
- Cliquez sur Nouvelles données d'identification.
- Choisissez un nom descriptif pour vos nouvelles données d'identification.
- Facultatif Indiquer si les nouvelles informations d'identification doivent utiliser un point de terminaison public ou privé. Utilisez
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
dans le champ Ajouter des paramètres de configuration en ligne pour générer des chaînes de connexion à l'aide du point de terminaison spécifié. L'utilisation du noeud final n'est pas imposée, elle permet juste de contrôler les noms d'hôte mentionnés dans les chaînes de connexion. Les points de terminaison privés sont générés par défaut. - Cliquez sur Ajouter pour fournir les nouvelles données d'identification. Un nom d'utilisateur et un mot de passe, et un utilisateur de base de données associé dans la base de données PostgreSQL sont générés automatiquement.
Les nouvelles données d'identification apparaissent dans la table et les chaînes de connexion sont disponibles au format JSON dans une zone de type Cliquer pour copier sous Afficher les données d'identification.
Création d'utilisateurs à partir de l'interface de programmation
Si vous gérez votre service via l'interface de ligne de commande IBM Cloud et le plug-in Cloud Databases, vous pouvez créer un nouvel utilisateur à l'aide de la commande cdb user-create
.
Par exemple, pour créer un nouvel utilisateur pour un "exemple de déploiement", utilisez la commande suivante :
ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>
Une fois la tâche terminée, vous pouvez extraire les chaînes de connexion du nouvel utilisateur à l'aide de la commande ibmcloud cdb deployment-connections
.
Création d'utilisateurs à partir de l'API
Le Noeud final de base qui s'affiche sur le panneau Aperçu Détails du déploiement de votre service fournit l'URL de base permettant d'accéder à ce déploiement via l'API. Pour créer et gérer des utilisateurs, utilisez
l'URL de base avec le noeud final /users
.
curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'
Une fois la tâche terminée, récupérez les chaînes de connexion du nouvel utilisateur à partir du point de terminaison /users/{userid}/connections
.
Ajout d'utilisateurs à Données d'identification de service
La création d'un nouvel utilisateur à partir de l'interface de ligne de commande ou de l'API ne remplit pas automatiquement les chaînes de connexion de cet utilisateur dans Données d'identification du service. Pour les ajouter, créez de nouvelles données d'identification avec les informations utilisateur existantes.
Entrez le nom d'utilisateur et le mot de passe dans la zone JSON Ajouter des paramètres de configuration en ligne ou indiquez un fichier dans lequel les informations JSON sont stockées. Par exemple, le fait de placer {"existing_credentials":{"username":"Robert","password":"supersecure"}}
dans la zone génère Données d'identification avec le nom d'utilisateur "Robert" et le mot de passe "supersecure" rempli dans les chaînes de connexion.
Lorsque des données d'identification sont générées à partir d'un utilisateur existant, celui-ci n'est pas vérifié ni créé.