Co-Author: @nereddy999
Product Managers: Kapil Gulshan Rohra, Sal Daoud
- Are you struggling with multi region/multi brand scenario in your Adobe Experience Platform implementation using multiple sandboxes?
- Does the ensuing cost, governance, and maintenance overhead impact your total effort and timeline?
Worry no more! Now you can implement Attribute-Based Access Control in a single sandbox to streamline your multi region/multi brand implementation while complying with the organization's Data Governance requirements.
We shall walk you through 'how' you can use Attribute-Based Access Control for implementing multi-region isolation of profiles in a single sandbox of Adobe Experience Platform. We’ll be doing this through the lens of a fictitious example that we’re calling Customer Luma .The customer has different field marketing Roles per region (e.g., APAC/AMER/EMEA) and they want to isolate segments and some sensitive data by each region.
Note: Attribute-based access control & OLAC (Object level Access Control) are also available in Adobe Journey Optimizer but not covered in this article.
One of the key capabilities of Attribute-based access control functionality is XDM (Experience Data Model) field level access control. This allows data stewards to label individual attributes of the schema and enforce access controls to data at a field level. Utilizing Attribute-based access controls at the field level access control capabilities for labelling a unified profile is a flexible solution. This allows a rule based, controlled access to every Adobe Experience Platform Real-Time Customer Profile . Ex: A profile can be labelled as AMERICAS_THEATER or AMERICAS_REGION and thereby can only be accessed by Roles with permissions to AMERICAS_THEATER.
Customer Luma’s Administrators effectively used the field level access controls to limit the access of an Adobe Experience Platform Unified Profile at a Theater or a Region level.
5 Administration Pre-requisite Steps
Prerequisite: Access control for Adobe Experience Platform is provided through the Permissions in Adobe Experience Cloud. This functionality leverages roles, permissions and an Attribute-based access control policy set by a product administrator, which links users with permissions and sandboxes.
For this Attribute based access control walkthrough, we shall use the term ‘Theater’ for region/market.
1. Create a ‘Custom Label’ for each theater/region
![saswata_ghosh_1-1693952683865.png saswata_ghosh_1-1693952683865.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62542i56A361E172613388/image-size/large?v=v2&px=999)
2. Create Theater-Based Roles from the ‘Permissions’ Panel
![saswata_ghosh_2-1693952774733.png saswata_ghosh_2-1693952774733.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62543iCF5BAB4FAE319479/image-size/large?v=v2&px=999)
3. Apply the Custom Labels to their Theater-Based Roles.
E.g., “AMER_THEATER role” has been created and ‘AMER_THEATER’ label applied to it.
![saswata_ghosh_3-1693952825747.png saswata_ghosh_3-1693952825747.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62544i08904C10D4144BB0/image-size/large?v=v2&px=999)
4. Add Users/User Groups to their Theater-Based Roles
![saswata_ghosh_4-1693952873943.png saswata_ghosh_4-1693952873943.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62545i0DB75EABCCFB6B27/image-size/large?v=v2&px=999)
5. Activate the ‘Default Label Based Access Control Policy’
Reference: Manage Access Control Policies | Adobe Experience Platform
![saswata_ghosh_5-1693952922955.png saswata_ghosh_5-1693952922955.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62546i73E26BE6B0432410/image-size/large?v=v2&px=999)
5-Step Implementation for Multi-Region using ‘Attribute-based Access Control’.
Once the Administrator setup the roles and tied the labels to the roles, then it was time for the Data Architects to model Customer’s data into XDM schema which has theater/region dedicated attributes.
1. Schema: Add a ‘Theater/Region’ Object to the Schema
We have created an ‘Account Theater’ object under _tenant which has an explicit Boolean attribute for each of the theater (AMER, APAC, EMEA).
![saswata_ghosh_6-1693952968626.png saswata_ghosh_6-1693952968626.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62547i241D7DD96A2E0389/image-size/large?v=v2&px=999)
2. Schema: Apply Access Label to the Attribute
Each of the Theater attribute must be tied with the custom label created for it.
E.g.,” Account Theater/AMER” attribute will be labelled with the AMER_THEATER custom label.
This ensures that users from only ‘AMER_THEATER Role’ created by the Administrator will be able to see/use this attribute.
![saswata_ghosh_7-1693953010527.png saswata_ghosh_7-1693953010527.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62548i933E6327CB300D74/image-size/large?v=v2&px=999)
3. Dataset: Populate The Theater Attributes using Data-Prep
Source Data: The Data from Customer has just one ‘THEATER’ attribute populated with either of ‘EMEA,’ ‘APAC’ or ‘AMER’
![saswata_ghosh_8-1693953054175.png saswata_ghosh_8-1693953054175.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62549iE6394BFEC26304E1/image-size/large?v=v2&px=999)
Once the Data Model for Customer Luma was setup, the Data Engineer ensures that source data is ingested into the theater/region designated attributes only.
Source to Destination XDM Schema mapping:
As row-level filtering is currently not available in Adobe Experience Platform, we transpose the row data to three mutually exclusive theater-specific attributes which populate to ‘true’ when the data belongs to that theater.
![saswata_ghosh_9-1693953081870.png saswata_ghosh_9-1693953081870.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62550i2A09FDB8E3B75A4C/image-size/large?v=v2&px=999)
The dataflow can be scheduled to ingest data once the mapping step is completed.
![saswata_ghosh_10-1693953118693.png saswata_ghosh_10-1693953118693.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62551i25729496B4DBFD1B/image-size/large?v=v2&px=999)
The dataflow runs successfully to populate the ‘THEATER’ object in the dataset and its mutually exclusive theatre attributes as true.
![saswata_ghosh_11-1693953148039.png saswata_ghosh_11-1693953148039.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62552i05B8A82E1A4844DA/image-size/large?v=v2&px=999)
4. Create a ‘Default’ Audience for each Theater.
After previewing the data in the dataset, Realtime-CDP Consultants helped Customer Luma setup the ‘default’ audiences for each theater which would filter the profiles for the specific theater/region.
![saswata_ghosh_12-1693953313325.png saswata_ghosh_12-1693953313325.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62553i2F7F8466ACAC80A8/image-size/large?v=v2&px=999)
![saswata_ghosh_14-1693953409207.png saswata_ghosh_14-1693953409207.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62557iB7F3EFD1CE7F9434/image-size/large?v=v2&px=999)
Apply the Access Label for the Theater we had earlier applied on the schema attribute.
![saswata_ghosh_15-1693953438958.png saswata_ghosh_15-1693953438958.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62558iF46864C5649CA8B0/image-size/large?v=v2&px=999)
Repeat these steps for the other theater.
![saswata_ghosh_16-1693953465572.png saswata_ghosh_16-1693953465572.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62559iD59C8ECA8E17814E/image-size/large?v=v2&px=999)
’Attribute-Based Access Control’ label applied on a schema attribute hides it for the other roles but does not apply a ‘row-level security/filtering’ on the data itself. Hence this step is important to explicitly apply the filter condition on the ‘default’ audience created for the theater. Customer Luma was asked to provide a guideline to their marketers to not edit these ‘default’ audiences.
5. Create New Business Audiences using the ‘<Theater> Default Audience.’
Now when the Customer Luma’s marketers created new audiences, they abided by two rules to isolate the audiences of their theater from being accessed by other theater-
- Include the <Theater> Default audience before adding more rules.
- After building the audience rules, ‘Apply the <THEATER> access label’ on this new audience as well.
![saswata_ghosh_17-1693953500660.png saswata_ghosh_17-1693953500660.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62560i02EED53BACC10982/image-size/large?v=v2&px=999)
Bonus Steps Needed for Hiding PII Across Theater/Region
For the sake of simplicity, we showed Customer Luma, how to implement Attribute-based access control at attribute-level. This implementation can be further extended to apply Attribute-based access control at entire Theater/Region-object level wherein each theater/region object has sensitive information like PII (Personally Identifiable Information) which should also be hidden from the users of different regions.
It is sufficient to apply the label at the top object level instead of each attribute under the object hierarchy.
![saswata_ghosh_18-1693953528358.png saswata_ghosh_18-1693953528358.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62561iC8A2D2842B80DF67/image-size/large?v=v2&px=999)
This should be followed by dataflow mapping discussed in the earlier implementation section. Mapping based on the theater/region would ensure that only the PII object for the specific theater is populated. This will ensure that other region users cannot view the PII information at multiple places like Profile UI, dataset preview, segmentation etc. as validated in the next section.
![saswata_ghosh_20-1693953582800.png saswata_ghosh_20-1693953582800.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62563i5EAA9FB140451594/image-size/large?v=v2&px=999)
Caution: Attribute redundancy is advisable for a handful of regions/brands/business units only but may not be suitable for e.g., 100 customer entities trying to adopt this single-sandbox approach as it may exceed profile size beyond soft guardrails or licensed profile richness (the average size of your profile data in Experience Platform). For complex use cases like this, you may need to have multiple sandboxes.
3-step API Validation of Access Labels
Customer Luma was also interested to create or validate Attribute based access control in bulk for multiple roles or objects. Hence, we also recommended the following APIs for their automation.
1. Fetch Labels Associated with a Role
Roles API Endpoint | Adobe Experience Platform
![saswata_ghosh_0-1693947622287.png saswata_ghosh_0-1693947622287.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62532i59BCD43B8BC3B15F/image-size/large?v=v2&px=999)
A successful API response will return the Role and the access labels applied on the role. E.g.
![saswata_ghosh_1-1693947622293.png saswata_ghosh_1-1693947622293.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62534i40619998784821B2/image-size/small?v=v2&px=200)
2. Fetch Labels Associated with a Schema Attribute.
Whenever an access label is applied on a schema attribute, a descriptor of type ‘descriptorLabel’ is created for the attribute which has the attribute name, fieldgroup and the access label applied.
Schema Registry API (adobe.com)
![saswata_ghosh_2-1693947622295.png saswata_ghosh_2-1693947622295.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62533iDDB389C0DC007EA4/image-size/small?v=v2&px=200)
https://platform.adobe.io/data/foundation/schemaregistry/tenant/descriptors?property={{property}}&or...
![saswata_ghosh_3-1693947622308.png saswata_ghosh_3-1693947622308.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62535i9EAF42EA8095C503/image-size/medium?v=v2&px=400)
3. Fetch Labels Associated with an Audience.
When we create an Audience and apply an access label, the Audience Definition fetched via API lists the access labels applied on the Audience.
Segmentation Service API (adobe.com)
![saswata_ghosh_4-1693947622314.png saswata_ghosh_4-1693947622314.png](https://experienceleaguecommunities.adobe.com/t5/image/serverpage/image-id/62536iACCE44C95AFE768E/image-size/medium?v=v2&px=400)
In this way you can implement and validate the Attribute-based Access Labels on schema attributes and audiences as per your role configuration.
We've covered the business point of view on this dilemma of single vs multiple sandboxes in the Adobe Tech Blog on medium.com:
Multi Region Governance Made Easy: Adopt Attribute-Based Access Control in Adobe Experience Platform...
Brief Summary of the above article:
4 Challenges with the Multi-Sandbox Approach
10-Fold Data-Isolation Outcome
7 Key Considerations
4 Benefits of Single-Sandbox Approach Using Attribute Based Access Control
We are optimistic that you now have all the tools necessary to plan/implement Attribute-based access control in your Adobe Experience Platform sandbox; not just for multi-region use case example above, but for multi-brand or multi-context scenarios as you see fit.
Related Links:
#AEP #Adobe Experience Platform #ABAC # Access Control #Data Governance #Multi Region
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.