dilluns, 18 de setembre del 2017

MDS: problema models sense accés

Tornem amb MDS.
Recentment m'he trobat amb un problema amb els permisos. Quan es crea un model, per defecte, només té permisos la persona/grup que l'ha creat. Si s'esborra el grup ningú té accés a aquest model i queda penjat.
Hi ha una forma de recuperar-ho per la porta del darrera, a través de la BBDD MDS.
La taula que té els models és: [mdm].[tblModel]. D'aquí extraurem l'id del model que volem recuperar permisos.
Amb la consulta:
    select *
    from [mdm].[tblSecurityRole]
    where name like 'Role for UserAccount %\<<usuari>>'

    obtindrem l'id de l'usuari al que volem donar permisos.
La taula amb els usuaris és: [mdm].[tblUser]
La taula on s'ha de fer insert és: [mdm].[tblSecurityRoleAccess]

L'insert ha de ser del tipus:
    insert into [mdm].[tblSecurityRoleAccess]
    (Role_ID, Privilege_ID, Model_ID, Securable_ID, Object_ID, Description, Status_ID, EnterDTM, EnterUserID, LastChgDTM, LastChgUserID, MUID)
    values
    (<<ROLE_ID>>, 2, <<MODEL_ID>>, <<MODEL_ID>>, 1, <<Nom model>> (Update), 1, getdate(), <<USER_ID>, getdate(),<<USER_UD>>, newid())


Un cop fet aquest insert l'usuari ja tindrà accés al model penjat.
Crec que és un error del sistema el fet que no hi hagi un superusuari que tingui accés a tots els models i que hi hagi la possiblitat que quedin models penjats.
També és un error (subsanable amb permisos de BBDD) que es puguin fer inserts directament a les taules de sistema, sobretot tenint en compte que preten ser un sistema amb auditoría de canvis.