Gestión de usuarios, roles y privilegios
PostgreSQL utiliza un sistema de roles para gestionar los permisos de base de datos. Se utilizan roles para otorgar un conjunto de privilegios a un usuario individual o a un grupo de usuarios. Determine roles, grupos y privilegios en el despliegue
utilizando el mandato psql
\du
.
Cuando se aprovisiona una nueva implantación en IBM Cloud, se le asigna automáticamente un usuario admin
para acceder a PostgreSQL y gestionarla.
El usuario admin
Cuando se aprovisiona una nueva implantación en IBM Cloud, se le asigna automáticamente un usuario admin
para acceder a PostgreSQL y gestionarla. Una vez que haya establecido la contraseña de administrador,
utilícela para conectarse a su implantación.
Cuando admin
crea un recurso en una base de datos, como una tabla, admin
es el propietario de ese objeto. Los recursos creados por admin
no son accesibles para otros usuarios, a menos que se les concedan
expresamente permisos.
La mayor diferencia entre el usuario admin
y cualquier otro usuario que añada a su despliegue es la función pg_monitor
y pg_signal_backend
roles. El rol pg_monitor
proporciona un conjunto de permisos que hacen que el usuario administrador sea el adecuado para supervisar el servidor de base de datos. El rol pg_signal_backend
proporciona al usuario administrativo la posibilidad de enviar señales para cancelar consultas y conexiones iniciadas por otros usuarios. No es capaz de enviar señales a procesos propiedad de superusuarios.
También puede utilizar el usuario admin
para conceder estas dos funciones a otros usuarios de su despliegue.
Para exponer la capacidad de cancelar consultas a otros usuarios de la base de datos, conceda el rol pg_signal_backend
del usuario admin
. Utilice un mandato como:
GRANT pg_signal_backend TO joe;
Para permitir que el usuario joe
cancele los programas de fondo, otorgue pg_signal_backend
a todos los usuarios con el rol ibm-cloud-base-user
con un mandato como:
GRANT pg_signal_backend TO "ibm-cloud-base-user";
Este privilegio permite al usuario o usuarios terminar cualquier conexión con la base de datos.
Para configurar un usuario de supervisión específico, mary
, utilice un mandato como:
GRANT pg_monitor TO mary;
Otorgue pg_signal_backend
a todos los usuarios con el rol ibm-cloud-base-user
con un mandato como:
GRANT pg_monitor TO "ibm-cloud-base-user";
Establecer la contraseña de administrador en la interfaz de usuario
Establezca su contraseña de administrador a través de la interfaz de usuario seleccionando su instancia en la lista de recursos del IBM Cloud Dashboard. A continuación, seleccione Configuración. A continuación, en la sección Cambiar contraseña de administrador de la base de datos escriba una nueva contraseña y haga clic en Cambiar contraseña.
Configuración de la contraseña de administrador en la CLI
Utilice el mandato cdb user-password
del plugin de CLICloud Databases para establecer la contraseña de admin
.
Por ejemplo, para establecer la contraseña de administrador de una implantación denominada example-deployment
, utilice el siguiente comando:
ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>
Configuración de la contraseña de administrador en la API
El punto final de la base que se muestra en la sección de detalles de despliegue del panel Overview de su servicio proporciona la base URL para acceder a este despliegue a través de la API. Utilícelo con el punto final Establecer contraseña de usuario especificada para establecer la contraseña de administrador.
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"}` \
Usuarios de Credencial de servicio
Los usuarios que crea mediante el panel Credenciales de servicio son miembros de ibm-cloud-base-user
.
Pueden iniciar sesión, crear usuarios y crear bases de datos.
Cuando un usuario de un grupo crea un recurso en una base de datos, como una tabla, todos los usuarios que estén en el mismo grupo tendrán acceso a dicho recurso. Los recursos creados por cualquiera de los usuarios de ibm-cloud-base-user
son accesibles para otros usuarios en ibm-cloud-base-user
, incluido el usuario administrativo.
Usuarios creados a través de la CLI
Los usuarios que cree a través del plugin de CLI Cloud Databases también son miembros de ibm-cloud-base-user
. Pueden iniciar sesión, crear usuarios y crear bases de datos.
Cuando un usuario crea un recurso en una base de datos, como una tabla, todos los usuarios que estén en el mismo grupo tendrán acceso a dicho recurso. Los recursos creados por cualquiera de los usuarios de ibm-cloud-base-user
son
accesibles para los demás usuarios de ibm-cloud-base-user
, incluido el usuario admin
.
Los usuarios que se crean directamente en la API y la CLI no aparecen en Credenciales de servicio, pero puede añadirlos si lo desea.
Usuarios creados a través de la API
Los usuarios que cree a través de la API Cloud Databases también son miembros de ibm-cloud-base-user
. Pueden iniciar sesión, crear
usuarios y crear bases de datos.
Cuando un usuario crea un recurso en una base de datos, como una tabla, todos los usuarios que estén en el mismo grupo tendrán acceso a dicho recurso. Los recursos creados por cualquiera de los usuarios de ibm-cloud-base-user
son
accesibles para otros usuarios en ibm-cloud-base-user
, incluido el usuario administrativo.
Los usuarios que se crean directamente en la API y la CLI no aparecen en Credenciales de servicio, pero puede añadirlos si lo desea.
El usuario de solo lectura
ibm-cloud-base-user-ro
gestiona los privilegios de los usuarios creados para acceder a las réplicas de solo lectura. Para obtener más información, consulte Configuración de réplicas de solo lectura.
El usuario repl
El usuario repl
tiene privilegios de replicación y se utiliza si habilita el complemento wal2json
en su implantación. Mientras habilita
wal2json
, establezca la contraseña del usuario repl
, que permite al complemento wal2json
utilizarlo.
Otros usuarios ibm
Si ejecuta el comando \du
con su cuenta admin
, es posible que observe usuarios que se denominan ibm
, ibm-cloud-base-user
, ibm-replication
y ibm-rewind
.
ibm-cloud-base-user
se utiliza como plantilla para gestionar roles de grupo para otros usuarios. Se utiliza para gestionar los usuarios que se crean a través de la CLI y la API, así como para habilitar la integración con la creación
de usuarios de Credenciales de servicio en IBM Cloud. Un usuario que sea miembro de ibm-cloud-base-user
heredará el rol de creación y los atributos de creación de bases de datos de ibm-cloud-base-user
. ibm-cloud-base-user
no puede iniciar sesión.
La cuenta ibm
es el único superusuario en el despliegue. Una cuenta de superusuario no está disponible para nosotros. Este usuario es una cuenta administrativa interna que gestiona la estabilidad del despliegue.
Usuarios creados con psql
Puede omitir la creación de usuarios a través de IBM Cloud completamente y crear usuarios directamente en PostgreSQL con psql
. Esto le permite utilizar PostgreSQL's nativo gestión de roles y usuarios. Los usuarios/roles creados en psql
deben tener todos sus privilegios establecidos manualmente, así como los privilegios de los objetos que crean.
Los usuarios que se crean directamente en PostgreSQL no aparecen en Credenciales de servicio, pero puede añadirlos si así lo desea.
Tenga en cuenta que estos usuarios no están integrados con los controles IAM, incluso si se añaden a Credenciales de servicio.
Usuarios y series de conexión adicionales
El acceso a su implantación de Databases for PostgreSQL no está limitado al usuario admin
. Añade usuarios en la interfaz de usuario en Credenciales de servicio, con el Cloud Databases complemento CLI,
o la Cloud Databases API.
Todos los usuarios del despliegue pueden utilizar las series de conexión, incluidas las series de conexión para los puntos finales públicos o privados.
Al crear un usuario, se le asignan determinados privilegios y roles de base de datos. Estos privilegios incluyen la capacidad de iniciar sesión, crear bases de datos y crear otros usuarios.
Creación de usuarios en la interfaz de usuario
- Vaya al panel de control del servicio.
- Haga clic en Credenciales de servicio para abrir Credenciales de servicio.
- Pulse Nueva credencial.
- Elija un nombre descriptivo para la nueva credencial.
- Opcional Especifique si las nuevas credenciales deben utilizar un punto final público o privado. Utilice
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
en el campo Añadir parámetros de configuración en línea para generar cadenas de conexión utilizando el punto final especificado. El uso del punto final no se aplica, solo controla qué nombres de host están en las series de conexión. Los puntos finales privados se generan por defecto. - Pulse Añadir para suministrar las nuevas credenciales. Se generan automáticamente un nombre de usuario, una contraseña y un usuario de base de datos asociado en la base de datos PostgreSQL.
Las nuevas credenciales aparecen en la tabla y las series de conexión están disponibles como JSON en un campo de pulsar para copiar en Ver credenciales.
Creación de usuarios desde la CLI
Si gestiona el servicio mediante la CLI de IBM Cloud y el plugin de Cloud Databases, puede crear un nuevo usuario con cdb user-create
. Por ejemplo, para crear un nuevo usuario
para un "ejemplo-despliegue", utilice el siguiente comando:
ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>
Una vez finalizada la tarea, puede recuperar las series de conexión del nuevo usuario con el mandato ibmcloud cdb deployment-connections
.
Creación de usuarios desde la API
El Punto final base que se muestra en el panel Visión general Detalles del despliegue del servicio proporciona el URL base para acceder a este despliegue a través de la API. Para crear y gestionar usuarios, utilice
el URL base con el punto 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"}'
Una vez finalizada la tarea, recupere las cadenas de conexión del nuevo usuario desde el endpoint /users/{userid}/connections
.
Adición de usuarios a Credenciales de servicio
La creación de un nuevo usuario desde la CLI o la API no llena automáticamente las series de conexión de ese usuario en Credenciales de servicio. Para añadirlos, cree una nueva credencial con la información de usuario existente.
Especifique el nombre de usuario y la contraseña en el campo JSON Añadir parámetros de configuración en línea o especifique un archivo donde se almacena la información de JSON. Por ejemplo, poner {"existing_credentials":{"username":"Robert","password":"supersecure"}}
en el campo genera Credenciales de servicio con el nombre de usuario "Robert" y la contraseña "supersecure" llenados en las series de conexión.
Al generar credenciales de un usuario existente no se comprueba ni se crea dicho usuario.