[
https://issues.apache.org/jira/browse/RANGER-5215?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dhaval Shah updated RANGER-5215:
--------------------------------
Description:
*Problem Statement:*
Currently, when Ranger Usersync is configured with case conversion and special
character replacement using regex, it transforms the original user/group names
from the source (e.g., AD/LDAP) before storing them in the Ranger Admin
database.
*Example:*
* Original name in LDAP/AD: {{John-jacobs}}
* Usersync configuration:
*
** {{ranger.usersync.ldap.username.caseconversion = lower}}
*
** {{ranger.usersync.mapping.username.regex = s/[-]/_/g}}
* Transformed and stored name in Ranger: {{john_jacobs}}
*Issue:*
If a Ranger plugin (e.g., Hive) uses the original name {{John-jacobs}} during
authorization checks, it fails because Ranger Admin only recognizes the
transformed name {{{}john_jacobs{}}}.
*Error Example:*
{code:java}
Permission denied: user [John-jacobs] does not have [SELECT] privilege on
[vehicle/cars/*] {code}
*Solution:*
To ensure consistency, the same transformation logic used by Usersync must also
be applied on the plugin side before authorization. This transformation should
be made available as a utility library packaged with the plugins.
*Configurability:*
This feature must be configurable at the plugin level via a property (e.g.,
{{{}ranger.plugin.<serviceType>.supports.name.transformation{}}}), allowing
users to enable or disable it based on their environment needs.
In ranger-admin-site.xml
# ranger.plugins.ldap.username.caseconversion
# ranger.plugins.ldap.groupname.caseconversion
# ranger.plugins.mapping.username.handler
# ranger.plugins.mapping.groupname.handler
# ranger.plugins.mapping.regex.separator
# ranger.plugins.mapping.username.regex
# ranger.plugins.mapping.groupname.regex
was:
*Problem Statement:*
Currently, when Ranger Usersync is configured with case conversion and special
character replacement using regex, it transforms the original user/group names
from the source (e.g., AD/LDAP) before storing them in the Ranger Admin
database.
*Example:*
* Original name in LDAP/AD: {{John-jacobs}}
* Usersync configuration:
*
** {{ranger.usersync.ldap.username.caseconversion = lower}}
*
** {{ranger.usersync.mapping.username.regex = s/[-]/_/g}}
* Transformed and stored name in Ranger: {{john_jacobs}}
*Issue:*
If a Ranger plugin (e.g., Hive) uses the original name {{John-jacobs}} during
authorization checks, it fails because Ranger Admin only recognizes the
transformed name {{{}john_jacobs{}}}.
*Error Example:*
{code:java}
Permission denied: user [John-jacobs] does not have [SELECT] privilege on
[vehicle/cars/*] {code}
*Solution:*
To ensure consistency, the same transformation logic used by Usersync must also
be applied on the plugin side before authorization. This transformation should
be made available as a utility library packaged with the plugins.
*Configurability:*
This feature must be configurable at the plugin level via a property (e.g.,
{{{}ranger.plugin.<serviceType>.supports.name.transformation{}}}), allowing
users to enable or disable it based on their environment needs.
> Policy authroisation fails for Ranger Plugins in case of users/groups
> converted by Ranger userysnc as per given Regex
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: RANGER-5215
> URL: https://issues.apache.org/jira/browse/RANGER-5215
> Project: Ranger
> Issue Type: Improvement
> Components: Ranger, usersync
> Reporter: Dhaval Shah
> Assignee: Dhaval Shah
> Priority: Major
>
> *Problem Statement:*
> Currently, when Ranger Usersync is configured with case conversion and
> special character replacement using regex, it transforms the original
> user/group names from the source (e.g., AD/LDAP) before storing them in the
> Ranger Admin database.
> *Example:*
> * Original name in LDAP/AD: {{John-jacobs}}
> * Usersync configuration:
> *
> ** {{ranger.usersync.ldap.username.caseconversion = lower}}
> *
> ** {{ranger.usersync.mapping.username.regex = s/[-]/_/g}}
> * Transformed and stored name in Ranger: {{john_jacobs}}
> *Issue:*
> If a Ranger plugin (e.g., Hive) uses the original name {{John-jacobs}} during
> authorization checks, it fails because Ranger Admin only recognizes the
> transformed name {{{}john_jacobs{}}}.
> *Error Example:*
> {code:java}
> Permission denied: user [John-jacobs] does not have [SELECT] privilege on
> [vehicle/cars/*] {code}
> *Solution:*
> To ensure consistency, the same transformation logic used by Usersync must
> also be applied on the plugin side before authorization. This transformation
> should be made available as a utility library packaged with the plugins.
> *Configurability:*
> This feature must be configurable at the plugin level via a property (e.g.,
> {{{}ranger.plugin.<serviceType>.supports.name.transformation{}}}), allowing
> users to enable or disable it based on their environment needs.
> In ranger-admin-site.xml
> # ranger.plugins.ldap.username.caseconversion
> # ranger.plugins.ldap.groupname.caseconversion
> # ranger.plugins.mapping.username.handler
> # ranger.plugins.mapping.groupname.handler
> # ranger.plugins.mapping.regex.separator
> # ranger.plugins.mapping.username.regex
> # ranger.plugins.mapping.groupname.regex
--
This message was sent by Atlassian Jira
(v8.20.10#820010)