
Oi pessoal , passada a virada estou de volta , não sei que disse que Brasil só começa a trabalhar depois do Carnaval hehehe Estas primeiras semanas tem sido quentes .
Hoje em dia segurança da informação , auditorias , controle de acessos é cada vez mais comum no escopo de TI. Logo aqueles que detem os maiores privilégios de acessos aos dados como os DBAs e System support sempre estão na crista da onda por contem os maiores privilégios no DB2 como SYSOPR e SYSADM de instalação (aqueles que ficar na ZPARM) e os SYSADMs , SYSCTRL , SYSOPR , DBADMs que recebem os GRANTs devido ao seu tipo de trabalho como Auditores , DBAs , Systems , Programadores , etc …
Obviamente um auditor não gosta de ver que um antigo DBA ou System que não mais trabalha no ambiente ainda tem este tipo de acesso , logo sua remoção seria um processo simples e fácil :
REVOKE SYSADM FROM USUARIO ;
Mas por favor NÃO FAÇA ISSO !! No DB2 como em outro bancos relacionais os processos de remoção de privilégios são feitos em CASCADE ou seja todos os privilégio concedidos pelo ID , serão removidos quando este ID tiver seu privilégio removido.
Além de inúmeros usuários perderam acessos a planos , packages , tabelas , etc . Muita coisa pode parar de funcionar pois os planos e packages que foram feitos o BIND por estes IDs ficarão Inválidos . Agora imagina um DBA que ficou anos na conta , muitas tools , processos de backup e inúmeros objetos criados por eles pararão de funcionar. Quando isto ocorrer além do problema criado , você não terá certeza de todos privilégios que foram relamente tirados para colocar o ambiente de volta.
Com isto é altamente recomendado em utilizar um SQL para veririficar todos os Grants , packages , planos e owerships vinculado a este usuário. Deixarei o SQL no fim do artigo.
Este processo pode ser usado com qualquer ID , agora para Ex DBAs , Systems , recomendo utilizar o processo de alterar a ZPARM colocando o ID a ser removido como segundo SYSADM , reisntala a DSNTIJUZ , tira e volta o DB2 , com isto dando o REVOKE SYSADM o DB2 mantém os privilégios concedidos por este ID pois ele é um INSTALL SYSADM , logicamente você precisar trabalhar junto com seu system programmer pois um bom planejamento será necessário para retirar o DB2 do ar.
Logo entre tomar bronca da auditoria ou parar o DB2 , é melhor sempre revalidar seus IDs com privilégios e planejar com muita calma este processo.
Boa sorte
Segue o SQL para checar os GRANTS de um determinado ID.
SET CURRENT SQLID = ‘XXXXXX’;
———+———+———+———+———+———+———+–
SELECT ‘SYSUSERAUTH’,GRANTOR,GRANTEE,DATEGRANTED,SYSADMAUTH,
SYSOPRAUTH,SYSCTRLAUTH FROM SYSIBM.SYSUSERAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSDBAUTH’,GRANTOR,GRANTEE,DATEGRANTED
FROM SYSIBM.SYSDBAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSTABAUTH’,GRANTOR,GRANTEE,DATEGRANTED
FROM SYSIBM.SYSTABAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSPLANAUTH’,GRANTOR,GRANTEE,DATEGRANTED
FROM SYSIBM.SYSPLANAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSCOLAUTH’,GRANTOR,GRANTEE,DATEGRANTED,COLNAME
FROM SYSIBM.SYSCOLAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSRESAUTH’,GRANTOR,GRANTEE,NAME,DATEGRANTED
FROM SYSIBM.SYSRESAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSROUTINEAUTH’,GRANTOR,GRANTEE,SCHEMA,SPECIFICNAME,
EXECUTEAUTH
FROM SYSIBM.SYSROUTINEAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSSCHEMAAUTH’,GRANTOR,GRANTEE,SCHEMANAME
FROM SYSIBM.SYSSCHEMAAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSPACKAUTH’,GRANTOR,GRANTEE,NAME,COLLID,TIMESTAMP
FROM SYSIBM.SYSPACKAUTH
WHERE GRANTOR IN (‘OLDDBA’) OR
GRANTEE IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSDATABASE’,CREATOR,NAME,TIMESTAMP
FROM SYSIBM.SYSDATABASE
WHERE CREATOR IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSTABLES’,CREATOR,NAME,DBNAME,TSNAME
FROM SYSIBM.SYSTABLES
WHERE CREATOR IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSTABLESPACE’,CREATOR,NAME,DBNAME,STATSTIME
FROM SYSIBM.SYSTABLESPACE
WHERE CREATOR IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSPLAN’,CREATOR,BOUNDBY,BINDDATE
FROM SYSIBM.SYSPLAN
WHERE CREATOR IN (‘OLDDBA’) OR
BOUNDBY IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT * FROM SYSIBM.SYSVIEWS
WHERE CREATOR IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT ‘SYSPACKAGE’,CREATOR,NAME,COLLID,BINDTIME
FROM SYSIBM.SYSPACKAGE
WHERE CREATOR IN (‘OLDDBA’) ;
———+———+———+———+———+———+———+–
SELECT * FROM SYSIBM.SYSROUTINES
WHERE OWNER IN (‘OLDDBA’) ;