tmaestrini / easyGovernance

governance and validation for configuration baselines in M365 – made as easy as possible
MIT License
11 stars 4 forks source link

Provide support for validation of baseline items with value 'configured' #28

Closed tmaestrini closed 1 month ago

tmaestrini commented 1 month ago

Many baseline items have to be defined specifically (for example in a customer's context). Upon this, the baseline schema and the validation process must be extended.

When a baseline item is defined as configured, an appropriate definition of the configuration must follow. The configuration contains all necessary values that have to be configured specifically.

Example: M365.IAM.1-2.1. The baseline item CustomDomainNames for MicrosoftEntraID needs to be configured:

Configuration:
  - enforces: MicrosoftEntraID
    with:
      CustomDomainNames: configured # Specifies whether custom domain names are configured.

From now on, instead of providing a string value (such as "true" or "4392" or "configured") the configuration snippet needs to be extended by either an array or an object value as follows:

Configuration:
  - enforces: MicrosoftEntraID
    with:
      CustomDomainNames: 
        - customdomainname.it
        - seconddomainname.com
        - thirddomainname.ch

This example defines three custom domain names that must be included in the baseline item CustomDomainNames.

[!NOTE] The value configured mustn't be used anymore. All configured values of an according baseline items have to be properly declared.

dako365 commented 1 month ago

Hey @tmaestrini! I am currently working on M365.TENANT... baseline. We definitely need to talk about the implementation again. The “Custom Themes” area in particular needs to be discussed. It is still unclear to me how we can add it to the baseline and validate it accordingly.

tmaestrini commented 1 month ago

@dako365 Thanks for your contribution and your great work on the "configurable" items. 🚀

I suggest discussing the structure that you've built in a9e716e0083372ba4d9be71ffdd8f0838fe8ca84 again: I'd prefer objects rather than arrays within the configurable properties, as they specify the config item in more detail. Arrays are a good choice when we want to specify a list of objects or items.

Would this be fine?