Question
How can I define a filter on a source system in the permissions API?
Answer
Metadata security can be used to filter the results for entity objects and attributes. The scope of the implementation is centered around:
- GET
/{tenant}/entities/{id} - POST
/{tenant}/entities/{id} - DELETE
/{tenant}/entities/{id} - POST
/{tenant}/entities/{id}/_update
To enable source system filtering, roles should be created that specify which source systems should be limited and the privileges.
The minimum privilege is the READ
[
{
"uri": "configuration/entityTypes/HCP",
"permissions": [
{
"role": "ROLE_FB_READ",
"filter": "equals(sourceSystems,'FB')",
"access": [
"READ"
]
}
]
}
]
The above example would limit results for configuration/entityTypes/HCP to configuration/sources/FB sources.
The results from filtering the results will be the same as calling the {tenant}/entities/{id}/_slice endpoint.
The permissions can be configured at a granular level.
[
{
"uri": "configuration/entityTypes/HCP",
"permissions": [
{"role" : "ROLE_FB_CREATE", "filter" : "equals(sourceSystems,'FB')",
"access" : ["CREATE"]},
{"role" : "ROLE_FB_READ", "filter" : "equals(sourceSystems,'FB')",
"access" : ["READ"]},
{"role" : "ROLE_FB_UPDATE", "filter" : "equals(sourceSystems,'FB')",
"access" : ["UPDATE"]},
{"role" : "ROLE_FB_DELETE", "filter" : "equals(sourceSystems,'FB')",
"access" : ["DELETE"]},
{"role" : "ROLE_TWITTER_CREATE", "filter" : "equals(sourceSystems,'TWITTER')",
"access" : ["CREATE"]},
{"role" : "ROLE_TWITTER_READ", "filter" : "equals(sourceSystems,'TWITTER')",
"access" : ["READ"]},
{"role" : "ROLE_TWITTER_UPDATE", "filter" : "equals(sourceSystems,'TWITTER')",
"access" : ["UPDATE"]},
{"role" : "ROLE_TWITTER_DELETE", "filter" : "equals(sourceSystems,'TWITTER')",
"access" : ["DELETE"]},
{"role" :"ROLE_VEEVA_CREATE", "filter" : "equals(sourceSystems,'Veeva')",
"access": ["CREATE"]},
{"role" :"ROLE_VEEVA_READ", "filter" : "equals(sourceSystems,'Veeva')",
"access": ["READ"]},
{"role" :"ROLE_VEEVA_UPDATE", "filter" : "equals(sourceSystems,'Veeva')",
"access": ["UPDATE"]},
{"role" :"ROLE_VEEVA_DELETE", "filter" : "equals(sourceSystems,'Veeva')",
"access": ["DELETE"]}
]
}
] This would restrict the user access at a Metadata security level for access and then also implement filtered results in the response to the supported endpoints.
Security can be configured to restrict and filter based on multiple sources.
[
{
"uri": "configuration/entityTypes/HCP",
"permissions": [
{"role" : "ROLE_TWIT_AND_FB_CREATE",
"filter" : "equals(sourceSystems,'FB') AND equals(sourceSystems,'TWITTER')",
"access" : ["CREATE"]},
{"role" : "ROLE_TWIT_AND_FB_READ",
"filter" : "equals(sourceSystems,'FB') AND equals(sourceSystems,'TWITTER')",
"access" : ["READ"]},
{"role" : "ROLE_TWIT_AND_FB_UPDATE",
"filter" : "equals(sourceSystems,'FB') AND equals(sourceSystems,'TWITTER')",
"access" : ["UPDATE"]},
{"role" : "ROLE_TWIT_AND_FB_DELETE",
"filter" : "equals(sourceSystems,'FB') AND equals(sourceSystems,'TWITTER')",
"access" : ["DELETE"]}
]
}
] This would limit access and filtering to the configuration/sources/FB and configuration/sources/TWITTER sources.
Comments
Please sign in to leave a comment.