on 2011 Aug 31 1:43 PM
so the run down on this is we have a peice of software we got from a vendor DBA is the owner of all tables, so all users added to the DB have DBA rights otherwise they can not even login to the software becuase of the way the queries were wrote. so my question is there anyway to make it so all users do not need the DBA auth and be in the DBA group? this is a huge security hole and the vendor told me they are fine with this config and not to install the DB client, ahhhhhhh. Anyway this just annoys the crap out of me as we are trying to secure our infrastructure not leave huge holes.
Request clarification before answering.
You really need to have you vendor address this issue as they are best able to determine the impact of schema changes on their application(s). That said, this is actually a common design problem that can generally be fixed by granting permissions on database objects. In some cases, the problem is made difficult to solve if the queries do not use owner names i.e., dba.t vs. t. In that case, the tables may not be visible to the user. To solve that, the user must either own the table or be a member of the group that owns the table.
At a high level, one way to address this without significant application rework is
The tricky part could be step 4. You could be naive and grant all permissions -- Select,Insert, Update, Delete for tables and views and Execute to procedures and that should mimic what granting DBA authority to an user was accomplishing.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That is not a default behavior.
What version of SQL Anywhere is being used? In newer versions, you can have a login policy that limits the number of non-dba connections or prevents non-dba users from connecting. The schema may also have a login_procedure that checks the user and only permits those with DBA authority. Both of these are user implementations.
What specifically is the behaviour of "they can't login". Is there a message or error? What is the exact text?
These errors are not SQL Anywhere errors.
Here are potential explanations: 1. You have missed granting permissions on objects that are being accessed at login time. See point 4 in my answer. Tables are only one level of objects to which permissions may need to be granted. Are views and/or procedures being used by the application? 2. The application may be invoking statements that require DBA authority. If this is the case, there may be little that can be done with the vendor since it would likely means changes at the application level.
You can learn about what requests are being made with request level logging. See -zr in the online help for more details.
If you make the DBA user a group and then assign membership in that group to your users, they will have access to the tables owned by DBA but will not have DBA authority. For example:
-- as user dba grant group to dba; grant membership in group dba to graeme; grant all on mytable to dba;
User "graeme" can now access table dba.mytable
but does not have DBA authority.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
From what i have found if i remove DBA authority from a user it breaks, so i am wondering if they aren't just using table name because they are all in the DBA group, but if they do not have both then it breaks.
What would cause the DBA authority to break it? becuase if they are in the DBA group i would think they would access to the tables still.
The vendor is basically telling me deal with it this is the way it is and we are not doing anything to change it. 😞
User | Count |
---|---|
68 | |
15 | |
12 | |
7 | |
7 | |
4 | |
4 | |
4 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.