Concesión y revocación de privilegios de RDS para Db2
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.
Temas
- Concesión a un usuario de acceso a su base de datos
- Cambio de la contraseña de un usuario
- Agregar grupos a un usuario
- Eliminación de grupos de un usuario
- Eliminación de un usuario
- Mostrar usuarios
- Creación de un rol
- Concesión de un rol
- Revocación de un rol
- Descarte de un rol
- Concesión de autorización a la base de datos
- Revocación de la autorización de una base de datos
Concesión a un usuario de acceso a su base de datos
Para conceder a un usuario acceso a su base de datos
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_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
-
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
')" -
(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
')" -
Confirme las autoridades que están disponibles para el usuario. En el siguiente ejemplo, sustituya
rds_database_alias
,master_user
ymaster_password
por su propia información. Además, sustituyausername
por el nombre de usuario del usuario.db2 terminate db2 connect to
rds_database_alias
usermaster_user
usingmaster_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
-
Otorgue los roles
ROLE_NULLID_PACKAGES
,ROLE_TABLESPACES
yROLE_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 rolesROLE_NULLID_PACKAGES
,ROLE_TABLESPACES
yROLE_PROCEDURES
de RDS para Db2 otorgan privilegios de ejecución en paquetesNULLID
para IBM Db2 CLP y Dynamic SQL. Estas funciones también otorgan privilegios de usuario en los espacios de tabla.-
Conexión a su base de datos Db2. En el siguiente ejemplo, sustituya
database_name
,master_user
ymaster_password
por su propia información.db2 connect to
database_name
usermaster_user
usingmaster_password
-
Otorgue el rol
ROLE_NULLED_PACKAGES
a un grupo. En el siguiente ejemplo, reemplacegroup_name
por el nombre del grupo al que quiera agregar el rol.db2 "grant role ROLE_NULLID_PACKAGES to group
group_name
" -
Otorgue el rol
ROLE_TABLESPACES
al mismo grupo. En el siguiente ejemplo, reemplacegroup_name
por el nombre del grupo al que quiera agregar el rol.db2 "grant role ROLE_TABLESPACES to group
group_name
" -
Otorgue el rol
ROLE_PROCEDURES
al mismo grupo. En el siguiente ejemplo, reemplacegroup_name
por el nombre del grupo al que quiera agregar el rol.db2 "grant role ROLE_PROCEDURES to group
group_name
"
-
-
Otorgue las autoridades
connect
,bindadd
,createtab
yIMPLICIT_SCHEMA
al grupo al que agregó el usuario. En el siguiente ejemplo, reemplacegroup_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
" -
Repita los pasos 4 al 6 para cada grupo adicional al que haya agregado el usuario.
-
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
ypassword
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
userusername
usingpassword
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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
-
Conéctese a la base de datos
rdsadmin
. En el siguiente ejemplo, sustituyamaster_username
ymaster_password
por su información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Configure Db2 para generar contenido.
db2 set serveroutput on
-
Crear un rol. Para obtener más información, consulte rdsadmin.create_role.
db2 "call rdsadmin.create_role( '
database_name
', 'role_name
')" -
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
-
Conéctese a la base de datos
rdsadmin
. En el siguiente ejemplo, sustituyamaster_username
ymaster_password
por su información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Configure Db2 para generar contenido.
db2 set serveroutput on
-
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
')" -
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
-
Conéctese a la base de datos
rdsadmin
. En el siguiente ejemplo, sustituyamaster_username
ymaster_password
por su información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Revoque un rol. Para obtener más información, consulte rdsadmin.revoke_role.
db2 "call rdsadmin.revoke_role( ?, '
database_name
', 'role_name
', 'grantee
')"
Descarte de un rol
Puede utilizar el procedimiento rdsadmin.drop_role almacenado para descartar un rol.
Descarte de un rol
-
Conéctese a la base de datos
rdsadmin
. En el siguiente ejemplo, sustituyamaster_username
ymaster_password
por su información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Descartar un rol. Para obtener más información, consulte rdsadmin.drop_role.
db2 "call rdsadmin.drop_role( ?, '
database_name
', 'role_name
')"
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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.
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Cree un rol llamado
PROD_ROLE
para una base de datos llamadaTESTDB
. Para obtener más información, consulte rdsadmin.create_role.db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
-
Asigne el rol a un usuario llamado
PROD_USER
. ElPROD_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')"
-
(Opcional) Proporcione autorizaciones o privilegios adicionales. En el siguiente ejemplo, se concede la autorización
DBADM
a un rol llamadoPROD_ROLE
para una base de datos llamadaFUNDPROD
. Para obtener más información, consulte rdsadmin.dbadm_grant.db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
-
Finalice la sesión.
db2 terminate
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to TESTDB user
master_username
usingmaster_password
-
Agregue más autorizaciones al rol.
db2 "grant connect, implicit_schema on database to role PROD_ROLE"
-
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
-
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, sustituyamaster_username
ymaster_password
por su propia información.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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
')"