Element security - where is WRITE access required?
Posted: Tue Jul 24, 2012 9:54 pm
We are encountering problems where users in Contributor are unable to commit their sandbox data. Initially they don't have a problem, but at some point many users encounter an issue where their changes remain in blue font, and their data isn't committed. We reported the issue to IBM, and have been told that in part it is a known issue fixed in 9.5.2 FP2 (which we are in the process of installing/testing this week), but also in part due to security in our model. They have said that some of the data changes that are attempting to be committed to a user's sandbox are to cells where the user doesn't have WRITE access, and that's why it fails. However the user's security is definitely not changing in between commits, so it's not clear why it fails sometimes and not others. I have at least figured out a way to reproduce this issue, through a series of steps, I just can't figure out why those steps cause the issue, and yet others do not (in short I can commit three times, but on the fourth attempt it doesn't work, in addition to some other specific actions I take).
We do have security implemented via rules in some }ElementSecurity cubes to control users (via their roles) having READ vs. WRITE access to certain elements. One example IBM gave was with an element where all user roles who have access to the cube have READ access only (although no one can write to it, since it's actually rules-calculated). So the reason it's getting updated at all as a change in their sandbox is because they've updated other cells that are part of its calculation. For this particular element, we could remove the READ restriction (since it's rules-calculated anyway), but my understanding is that because we are using rules in the }ElementSecurity cube, we would need to give explicit WRITE access to fix the problem we're having, since going from READ to nothing wouldn't give the user the access they needed. For this element (and probably others we're handling similarly) that's fine, if that's what we should be doing.
My question is how far this needs to go. We have users with roles where they don't have access to certain cubes (security handled in }CubeSecurity, which is set via a TI process). But our model is set up so that a user could update data in one cube (say cube A) that via rules, affects data in cube B, where that user/role doesn't have any access, both at the }CubeSecurity and }ElementSecurity level. What I'm not clear on is if that limitation will then continue to cause problems with committing their data, so if even if we fix }ElementSecurity, will some users still encounter this problem due to the overall data flow in our model, and their access or lack of access to parts of it.
Obviously I can (and will) test this, but what we'd need to change and test could potentially affect a lot of our model, given how it's been set up. So I wanted to make sure I understood the concept and what was needed first, in case it is not all necessary, or in case I encounter other problems with our security, if I'm missing something. So if anyone has any suggestions or can point me to more information on this (I looked but didn't find documentation on this sort of a situation) I would appreciate it.
We do have security implemented via rules in some }ElementSecurity cubes to control users (via their roles) having READ vs. WRITE access to certain elements. One example IBM gave was with an element where all user roles who have access to the cube have READ access only (although no one can write to it, since it's actually rules-calculated). So the reason it's getting updated at all as a change in their sandbox is because they've updated other cells that are part of its calculation. For this particular element, we could remove the READ restriction (since it's rules-calculated anyway), but my understanding is that because we are using rules in the }ElementSecurity cube, we would need to give explicit WRITE access to fix the problem we're having, since going from READ to nothing wouldn't give the user the access they needed. For this element (and probably others we're handling similarly) that's fine, if that's what we should be doing.
My question is how far this needs to go. We have users with roles where they don't have access to certain cubes (security handled in }CubeSecurity, which is set via a TI process). But our model is set up so that a user could update data in one cube (say cube A) that via rules, affects data in cube B, where that user/role doesn't have any access, both at the }CubeSecurity and }ElementSecurity level. What I'm not clear on is if that limitation will then continue to cause problems with committing their data, so if even if we fix }ElementSecurity, will some users still encounter this problem due to the overall data flow in our model, and their access or lack of access to parts of it.
Obviously I can (and will) test this, but what we'd need to change and test could potentially affect a lot of our model, given how it's been set up. So I wanted to make sure I understood the concept and what was needed first, in case it is not all necessary, or in case I encounter other problems with our security, if I'm missing something. So if anyone has any suggestions or can point me to more information on this (I looked but didn't find documentation on this sort of a situation) I would appreciate it.