Stephen Bubb (Customer) asked a question.

Microsoft Entra ID - Collecting group owner information for non-on-premises synced groups

We are attempting to collect in all Entra ID cloud only groups (not synced from on-premises AD) using a Generic REST Account Collector. The only way we can determine to collect in ONLY cloud groups and NOT groups synced from on-premises AD is to use the filter query 'NOT (onPremisesSyncEnabled eq true)' or another such query that relies on filtering on the onPremisesSyncEnabled value being null. In order to do such, we are required to use advanced querying in Graph API (ConsistencyLevel: eventual and $count=true). This works as intended and only collects in cloud groups from Entra.

 

The issue is we also need to be able to collect in group owner information for Entra groups. The only way we can find to do this is by using the $expand query parameter in the API call.

 

Herein lies the problem, use of advanced query parameters (ConsistencyLevel: eventual and $count=true) cannot be used at the same time as the $expand parameter.

 

Has anyone been able to configure their REST collectors for Entra in order to be able to collect in ONLY cloud groups but also collect group owner information?

 


  • Disclaimer:

    I haven't fully tested it and haven't given it much thought on whether this should be done.

    Do your own testing and your own research.

    --------------------------------------------------------------------------

     

    The only thing that comes in mind, is this workaround:

     

    Remove the $filter

    Add the $expand

    collect the value of onPremisesSyncEnabled

     

    In pre processor config, delete the records which have onPremisesSyncEnabled =True from:

    T_DC_SOURCEDATA_GROUP

    T_DC_SOURCEDATA_GROUP_MEM

     

    imageIf this is not enabled, check this article - https://community.rsa.com/s/article/RSA-Governance-Lifecycle-Data-Processors-Basics

     

    In the example below (as a proof of concept) I was relying on group name. in your use case, you will need to adjust the PL SQL query to identify the relevant groups (which are not synced from AD).

     

    image 

    Expand Post
  • Stephen Bubb (Customer)

    Thank you Boris, this got me headed in the right direction. I was able to filter out the onPremisesSyncEnabled groups using the pre-processor on the account collector. This allowed me to use the $expand parameter and collect owner property as well. 

     

    The downside is it makes the collection time go from ~2 minutes to ~16 minutes due to the need to process a lot more groups and group memberships in the collection but that's a fair trade off to get this additional information.

     

    In case it helps others with a similar issue, this is how I handled in the preprocessor.

     

    BEGIN

    -- 1. Delete all rows from T_DC_SOURCEDATA_GROUP_MEM for groups where cas10 (onPremisesSyncEnabled) = 'true' in the T_DC_SOURCEDATA_GROUP table

    DELETE FROM T_DC_SOURCEDATA_GROUP_MEM entragroupmem

    WHERE entragroupmem.dc_id = v_dc_id

    AND entragroupmem.run_id = v_run_id

    AND entragroupmem.group_name IN (

    SELECT name

    FROM T_DC_SOURCEDATA_GROUP

    WHERE dc_id = v_dc_id

    AND run_id = v_run_id

    AND cas10 = 'true'

    );

     

    -- 2. Delete all rows from T_DC_SOURCEDATA_GROUP for groups where cas10 (onPremisesSyncEnabled) = 'true'

    DELETE FROM T_DC_SOURCEDATA_GROUP

    WHERE dc_id = v_dc_id

    AND run_id = v_run_id

    AND cas10 = 'true';

      

    COMMIT;

    END;

     

    Expand Post