Realización de tareas comunes del sistema para instancias de base de datos de Amazon RDS para Db2 - Amazon Relational Database Service

Realización de tareas comunes del sistema para instancias de base de datos de Amazon RDS para Db2

Puede realizar ciertas tareas comunes de administrador de bases de datos relacionadas con el sistema en las instancias de base de datos de Amazon RDS que ejecuten Db2. Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso mediante shell a las instancias de bases de datos y restringe el acceso a ciertos procedimientos y tablas del sistema que requieren privilegios avanzados.

Creación de un punto de conexión de base de datos personalizado

Al migrar a Amazon RDS para Db2, puede utilizar direcciones URL de punto de conexión de base de datos personalizadas para minimizar los cambios en la aplicación. Por ejemplo, si utiliza db2.example.com como registro DNS actual, puede añadirlo a Amazon Route 53. En Route 53, puede usar zonas alojadas privadas para asignar el punto de conexión de su base de datos de DNS actual a un punto de conexión de base de datos de RDS para Db2. Para añadir un registro A o CNAME personalizado para un punto de conexión de base de datos de Amazon RDS, consulte Registro y administración de dominios mediante Amazon Route 53 en la Guía para desarrolladores de Amazon Route 53.

nota

Si no puede transferir su dominio a Route 53, puede usar su proveedor de DNS para crear un registro CNAME para la URL del punto de conexión de la base de datos de RDS para Db2. Consulte la documentación de su proveedor de DNS.

Concesión y revocación de privilegios

Los usuarios obtienen acceso a las bases de datos al pertenecer a grupos asociados a las bases de datos.

Utilice los siguientes procedimientos para conceder y revocar privilegios para controlar el acceso a la base de datos.

Estos procedimientos utilizan IBM Db2 CLP en un equipo local para conectarse a una instancia de base de datos de RDS para Db2. Asegúrese de catalogar el nodo TCP/IP y la base de datos para conectarse a la instancia de base de datos de RDS para Db2 que se ejecuta en su equipo local. Para obtener más información, consulte Conexión a la instancia de base de datos de Amazon RDS para Db2 con IBM Db2 CLP.

Concesión a un usuario de acceso a su base de datos

Para conceder a un usuario acceso a su base de datos
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password

    El resultado de este comando debería ser similar al siguiente ejemplo:

    Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
  2. Agregue un usuario a su lista de autorización llamando a rdsadmin.add_user. Para obtener más información, consulte rdsadmin.add_user.

    db2 "call rdsadmin.add_user( 'username', 'password', 'group_name,group_name')"
  3. (Opcional) Agregue grupos adicionales al usuario llamando a rdsadmin.add_groups. Para obtener más información, consulte rdsadmin.add_groups.

    db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"
  4. Confirme las autoridades que están disponibles para el usuario. En el siguiente ejemplo, sustituya rds_database_alias, master_user y master_password por su propia información. Además, sustituya username por el nombre de usuario del usuario.

    db2 terminate db2 connect to rds_database_alias user master_user using master_password db2 "SELECT SUBSTR(AUTHORITY,1,20) AUTHORITY, D_USER, D_GROUP, D_PUBLIC FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('username', 'U') ) AS T ORDER BY AUTHORITY"

    El resultado de este comando debería ser similar al siguiente ejemplo:

    AUTHORITY D_USER D_GROUP D_PUBLIC -------------------- ------ ------- -------- ACCESSCTRL N N N BINDADD N N N CONNECT N N N CREATETAB N N N CREATE_EXTERNAL_ROUT N N N CREATE_NOT_FENCED_RO N N N CREATE_SECURE_OBJECT N N N DATAACCESS N N N DBADM N N N EXPLAIN N N N IMPLICIT_SCHEMA N N N LOAD N N N QUIESCE_CONNECT N N N SECADM N N N SQLADM N N N SYSADM * N * SYSCTRL * N * SYSMAINT * N * SYSMON * N * WLMADM N N N
  5. Otorgue los roles ROLE_NULLID_PACKAGES, ROLE_TABLESPACES y ROLE_PROCEDURES de RDS para Db2 al grupo al que agregó el usuario. Para obtener más información, consulte Roles predeterminados de Amazon RDS para Db2.

    nota

    Creamos instancias de base de datos RDS para Db2 en modo RESTRICTIVE. Por lo tanto, los roles ROLE_NULLID_PACKAGES, ROLE_TABLESPACES y ROLE_PROCEDURES de RDS para Db2 otorgan privilegios de ejecución en paquetes NULLID para IBM Db2 CLP y Dynamic SQL. Estas funciones también otorgan privilegios de usuario en los espacios de tabla.

    1. Conexión a su base de datos Db2. En el siguiente ejemplo, sustituya database_name, master_user y master_password por su propia información.

      db2 connect to database_name user master_user using master_password
    2. Otorgue el rol ROLE_NULLED_PACKAGES a un grupo. En el siguiente ejemplo, reemplace group_name por el nombre del grupo al que quiera agregar el rol.

      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
    3. Otorgue el rol ROLE_TABLESPACES al mismo grupo. En el siguiente ejemplo, reemplace group_name por el nombre del grupo al que quiera agregar el rol.

      db2 "grant role ROLE_TABLESPACES to group group_name"
    4. Otorgue el rol ROLE_PROCEDURES al mismo grupo. En el siguiente ejemplo, reemplace group_name por el nombre del grupo al que quiera agregar el rol.

      db2 "grant role ROLE_PROCEDURES to group group_name"
  6. Otorgue las autoridades connect, bindadd, createtab y IMPLICIT_SCHEMA al grupo al que agregó el usuario. En el siguiente ejemplo, reemplace group_name por el nombre del segundo grupo al que haya agregado el usuario.

    db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
  7. Repita los pasos 4 al 6 para cada grupo adicional al que haya agregado el usuario.

  8. Pruebe el acceso del usuario conectándose como usuario, creando una tabla, insertando valores en la tabla y devolviendo los datos de la tabla. En el siguiente ejemplo, sustituya rds_database_alias, username y password por el nombre de la base de datos y el nombre de usuario y la contraseña del usuario.

    db2 connect to rds_database_alias user username using password db2 "create table t1(c1 int not null)" db2 "insert into t1 values (1),(2),(3),(4)" db2 "select * from t1"

Cambio de la contraseña de un usuario

Para cambiar la contraseña de un usuario
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Cambie la contraseña llamando a rdsadmin.change_password. Para obtener más información, consulte rdsadmin.change_password.

    db2 "call rdsadmin.change_password( 'username', 'new_password')"

Agregar grupos a un usuario

Para agregar grupos a un usuario
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Agregue grupos a un usuario mediante una llamada a rdsadmin.add_groups. Para obtener más información, consulte rdsadmin.add_groups.

    db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"

Eliminación de grupos de un usuario

Para eliminar grupos de un usuario
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Elimine grupos llamando a rdsadmin.remove_groups. Para obtener más información, consulte rdsadmin.remove_groups.

    db2 "call rdsadmin.remove_groups( 'username', 'group_name,group_name')"

Eliminación de un usuario

Para eliminar un usuario de la lista de autorizaciones
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Elimine un usuario de la lista de autorización llamando a rdsadmin.remove_user. Para obtener más información, consulte rdsadmin.remove_user.

    db2 "call rdsadmin.remove_user('username')"

Mostrar usuarios

Para mostrar los usuarios en una lista de autorización, llame al procedimiento almacenado rdsadmin.list_users. Para obtener más información, consulte rdsadmin.list_users.

db2 "call rdsadmin.list_users()"

Creación de un rol

Puede utilizar el procedimiento almacenado rdsadmin.create_role para crear un rol.

Para crear un rol
  1. Conéctese a la base de datos rdsadmin. En el siguiente ejemplo, sustituya master_username y master_password por su información.

    db2 connect to rdsadmin user master_username using master_password
  2. Configure Db2 para generar contenido.

    db2 set serveroutput on
  3. Crear un rol. Para obtener más información, consulte rdsadmin.create_role.

    db2 "call rdsadmin.create_role( 'database_name', 'role_name')"
  4. Configure Db2 para que no genere contenido.

    db2 set serveroutput off

Concesión de un rol

Puede usar el procedimiento almacenado rdsadmin.grant_role para asignar un rol a un rol, usuario o grupo.

Asignación de un rol
  1. Conéctese a la base de datos rdsadmin. En el siguiente ejemplo, sustituya master_username y master_password por su información.

    db2 connect to rdsadmin user master_username using master_password
  2. Configure Db2 para generar contenido.

    db2 set serveroutput on
  3. Asigne un rol. Para obtener más información, consulte rdsadmin.grant_role.

    db2 "call rdsadmin.grant_role( 'database_name', 'role_name', 'grantee', 'admin_option')"
  4. Configure Db2 para que no genere contenido.

    db2 set serveroutput off

Revocación de un rol

Puede usar el procedimiento almacenado rdsadmin.revoke_role para revocar un rol a un rol, usuario o grupo.

Revocación de un rol
  1. Conéctese a la base de datos rdsadmin. En el siguiente ejemplo, sustituya master_username y master_password por su información.

    db2 connect to rdsadmin user master_username using master_password
  2. Revoque un rol. Para obtener más información, consulte rdsadmin.revoke_role.

    db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"

Concesión de autorización a la base de datos

El usuario maestro, que tiene la autorización DBADM, puede conceder autorización DBADM, ACCESSCTRL o DATAACCESS a un rol, usuario o grupo.

Para conceder autorización a la base de datos
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Conceda acceso a un usuario llamando a rdsadmin.dbadm_grant. Para obtener más información, consulte rdsadmin.dbadm_grant.

    db2 "call rdsadmin.dbadm_grant( ?, 'database_name, 'authorization', 'grantee')"

Ejemplo de caso de uso

El siguiente procedimiento le mostrará cómo crear un rol, conceder la autorización DBADM al rol, asignar el rol a un usuario y conceder el rol a un grupo.

  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Cree un rol llamado PROD_ROLE para una base de datos llamada TESTDB. Para obtener más información, consulte rdsadmin.create_role.

    db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
  3. Asigne el rol a un usuario llamado PROD_USER. El PROD_USER recibe la autorización de administrador para asignar roles. Para obtener más información, consulte rdsadmin.grant_role.

    db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
  4. (Opcional) Proporcione autorizaciones o privilegios adicionales. En el siguiente ejemplo, se concede la autorización DBADM a un rol llamado PROD_ROLE para una base de datos llamada FUNDPROD. Para obtener más información, consulte rdsadmin.dbadm_grant.

    db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
  5. Finalice la sesión.

    db2 terminate
  6. Conéctese a la base de datos TESTDB con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to TESTDB user master_username using master_password
  7. Agregue más autorizaciones al rol.

    db2 "grant connect, implicit_schema on database to role PROD_ROLE"
  8. Otorgue el rol PROD_ROLE a un grupo.

    db2 "grant role PROD_ROLE to group PRODGRP"

Los usuarios que pertenecen al grupo PRODGRP ahora pueden realizar acciones como conectarse a la base de datos de TESTDB, crear tablas o crear esquemas.

Revocación de la autorización de una base de datos

El usuario maestro, que tiene la autorización DBADM, puede revocar la autorización DBADM, ACCESSCTRL o DATAACCESS a un rol, usuario o grupo.

Para revocar una autorización de una base de datos
  1. Conéctese a la base de datos rdsadmin con el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya master_username y master_password por su propia información.

    db2 connect to rdsadmin user master_username using master_password
  2. Revoque el acceso de los usuarios llamando a rdsadmin.dbadm_revoke. Para obtener más información, consulte rdsadmin.dbadm_revoke.

    db2 "call rdsadmin.dbadm_revoke( ?, 'database_name, 'authorization', 'grantee')"

Asociación a la instancia de base de datos RDS para Db2 remota

Para asociar a la instancia de base de datos RDS para Db2 remota
  1. Ejecute una sesión IBM Db2 CLP en el cliente. Para obtener información sobre la catalogación de la instancia de base de datos y la base de datos de RDS para Db2, consulte Conexión a la instancia de base de datos de Amazon RDS para Db2 con IBM Db2 CLP. Tome nota del nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2.

  2. Asocie la instancia de base de datos de RDS para Db2. En el siguiente ejemplo, sustituya node_name, master_username y master_password por el nombre del nodo TCPIP que haya catalogado y el nombre de usuario y la contraseña maestros de su instancia de base de datos de RDS para Db2.

    db2 attach to node_name user master_username using master_password

Tras la asociación a la instancia de base de datos remota de RDS para Db2, puede ejecutar los siguientes comandos y otros comandos get snapshot. Para obtener más información, consulte Comando GET SNAPSHOT en la documentación de IBM Db2.

db2 list applications db2 get snapshot for all databases db2 get snapshot for database manager db2 get snapshot for all applications