AADConditionalAccessPolicy

Parameters

Parameter Attribute DataType Description Allowed Values
DisplayName Key String DisplayName of the AAD CA Policy
Id Write String Specifies the GUID for the Policy.
State Write String Specifies the State of the Policy. disabled, enabled, enabledForReportingButNotEnforced
IncludeApplications Write StringArray[] Cloud Apps in scope of the Policy.
ApplicationsFilter Write String Rule syntax is similar to that used for membership rules for groups in Microsoft Entra ID.
ApplicationsFilterMode Write String Mode to use for the filter. Possible values are include or exclude. include, exclude
ExcludeApplications Write StringArray[] Cloud Apps out of scope of the Policy.
IncludeUserActions Write StringArray[] User Actions in scope of the Policy.
IncludeUsers Write StringArray[] Users in scope of the Policy.
ExcludeUsers Write StringArray[] Users out of scope of the Policy.
IncludeGroups Write StringArray[] Groups in scope of the Policy.
ExcludeGroups Write StringArray[] Groups out of scope of the Policy.
IncludeRoles Write StringArray[] AAD Admin Roles in scope of the Policy.
ExcludeRoles Write StringArray[] AAD Admin Roles out of scope of the Policy.
IncludeGuestOrExternalUserTypes Write StringArray[] Represents the Included internal guests or external user types. This is a multi-valued property. Supported values are: b2bCollaborationGuest, b2bCollaborationMember, b2bDirectConnectUser, internalGuest, OtherExternalUser, serviceProvider and unknownFutureValue. none, internalGuest, b2bCollaborationGuest, b2bCollaborationMember, b2bDirectConnectUser, otherExternalUser, serviceProvider, unknownFutureValue
IncludeExternalTenantsMembershipKind Write String Represents the Included Tenants membership kind. The possible values are: all, enumerated, unknownFutureValue. enumerated references an object of conditionalAccessEnumeratedExternalTenants derived type. `,all,enumerated,unknownFutureValue`
IncludeExternalTenantsMembers Write StringArray[] Represents the Included collection of tenant ids in the scope of Conditional Access for guests and external users policy targeting.
ExcludeGuestOrExternalUserTypes Write StringArray[] Represents the Excluded internal guests or external user types. This is a multi-valued property. Supported values are: b2bCollaborationGuest, b2bCollaborationMember, b2bDirectConnectUser, internalGuest, OtherExternalUser, serviceProvider and unknownFutureValue. none, internalGuest, b2bCollaborationGuest, b2bCollaborationMember, b2bDirectConnectUser, otherExternalUser, serviceProvider, unknownFutureValue
ExcludeExternalTenantsMembershipKind Write String Represents the Excluded Tenants membership kind. The possible values are: all, enumerated, unknownFutureValue. enumerated references an object of conditionalAccessEnumeratedExternalTenants derived type. `,all,enumerated,unknownFutureValue`
ExcludeExternalTenantsMembers Write StringArray[] Represents the Excluded collection of tenant ids in the scope of Conditional Access for guests and external users policy targeting.
IncludeServicePrincipals Write StringArray[] Service Principals in scope of the Policy. 'Attribute Definition Reader' role is needed.
ExcludeServicePrincipals Write StringArray[] Service Principals out of scope of the Policy. 'Attribute Definition Reader' role is needed.
ServicePrincipalFilterMode Write String Mode to use for the Service Principal filter. Possible values are include or exclude. 'Attribute Definition Reader' role is needed. include, exclude
ServicePrincipalFilterRule Write String Rule syntax for the Service Principal filter. 'Attribute Definition Reader' role is needed.
IncludePlatforms Write StringArray[] Client Device Platforms in scope of the Policy.
ExcludePlatforms Write StringArray[] Client Device Platforms out of scope of the Policy.
IncludeLocations Write StringArray[] AAD Named Locations in scope of the Policy.
ExcludeLocations Write StringArray[] AAD Named Locations out of scope of the Policy.
DeviceFilterMode Write String Client Device Filter mode of the Policy. include, exclude
DeviceFilterRule Write String Client Device Filter rule of the Policy.
UserRiskLevels Write StringArray[] AAD Identity Protection User Risk Levels in scope of the Policy.
SignInRiskLevels Write StringArray[] AAD Identity Protection Sign-in Risk Levels in scope of the Policy.
ClientAppTypes Write StringArray[] Client App types in scope of the Policy.
GrantControlOperator Write String Operator to be used for Grant Controls. AND, OR
BuiltInControls Write StringArray[] List of built-in Grant Controls to be applied by the Policy.
ApplicationEnforcedRestrictionsIsEnabled Write Boolean Specifies, whether Application Enforced Restrictions are enabled in the Policy.
CloudAppSecurityIsEnabled Write Boolean Specifies, whether Cloud App Security is enforced by the Policy.
CloudAppSecurityType Write String Specifies, what Cloud App Security control is enforced by the Policy.
SignInFrequencyValue Write UInt32 Sign in frequency time in the given unit to be enforced by the policy.
TermsOfUse Write String Display name of the terms of use to assign.
CustomAuthenticationFactors Write StringArray[] Custom Controls assigned to the grant property of this policy.
SignInFrequencyType Write String Sign in frequency unit (days/hours) to be interpreted by the policy. Days, Hours, ``
SignInFrequencyIsEnabled Write Boolean Specifies, whether sign-in frequency is enforced by the Policy.
SignInFrequencyInterval Write String Sign in frequency interval. Possible values are: timeBased, everyTime and unknownFutureValue. timeBased, everyTime, unknownFutureValue
PersistentBrowserIsEnabled Write Boolean Specifies, whether Browser Persistence is controlled by the Policy.
PersistentBrowserMode Write String Specifies, what Browser Persistence control is enforced by the Policy. Always, Never, ``
AuthenticationStrength Write String Name of the associated authentication strength policy.
TransferMethods Write String Names of the associated authentication flow transfer methods. Possible values are '', 'deviceCodeFlow', 'authenticationTransfer', or 'deviceCodeFlow,authenticationTransfer'.
AuthenticationContexts Write StringArray[] Authentication context class references.
InsiderRiskLevels Write String Insider risk levels conditions. minor, moderate, elevated, unknownFutureValue
Ensure Write String Specify if the Azure AD CA Policy should exist or not. Present, Absent
Credential Write PSCredential Credentials for the Microsoft Graph delegated permissions.
ApplicationId Write String Id of the Azure Active Directory application to authenticate with.
TenantId Write String Id of the Azure Active Directory tenant used for authentication.
ApplicationSecret Write PSCredential Secret of the Azure Active Directory application to authenticate with.
CertificateThumbprint Write String Thumbprint of the Azure Active Directory application's authentication certificate to use for authentication.
ManagedIdentity Write Boolean Managed ID being used for authentication.
AccessTokens Write StringArray[] Access token used for authentication.

Description

This resource configures an Azure Active Directory Conditional Access Policy.

Permissions

Microsoft Graph

To authenticate with the Microsoft Graph API, this resource required the following permissions:

Delegated permissions

  • Read

    • Agreement.Read.All, Group.Read.All, Policy.Read.All, RoleManagement.Read.Directory, User.Read.All, CustomSecAttributeDefinition.Read.All
  • Update

    • Agreement.Read.All, Group.Read.All, Policy.Read.All, Policy.ReadWrite.ConditionalAccess, RoleManagement.Read.Directory, User.Read.All, CustomSecAttributeDefinition.Read.All

Application permissions

  • Read

    • Agreement.Read.All, Application.Read.All, Group.Read.All, Policy.Read.All, RoleManagement.Read.Directory, User.Read.All, CustomSecAttributeDefinition.Read.All
  • Update

    • Agreement.Read.All, Application.Read.All, Group.Read.All, Policy.Read.All, Policy.ReadWrite.ConditionalAccess, RoleManagement.Read.Directory, User.Read.All, CustomSecAttributeDefinition.Read.All

Examples

Example 1

This example is used to test new resources and showcase the usage of new resources being worked on. It is not meant to use as a production baseline.

Configuration Example
{
    param(
        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint
    )
    Import-DscResource -ModuleName Microsoft365DSC

    node localhost
    {
        AADConditionalAccessPolicy 'ConditionalAccessPolicy'
        {
            BuiltInControls                          = @("mfa");
            ClientAppTypes                           = @("all");
            ApplicationId         = $ApplicationId
            TenantId              = $TenantId
            CertificateThumbprint = $CertificateThumbprint
            DeviceFilterMode                         = "exclude";
            DeviceFilterRule                         = "device.trustType -eq `"AzureAD`" -or device.trustType -eq `"ServerAD`" -or device.trustType -eq `"Workplace`"";
            DisplayName                              = "Example CAP";
            Ensure                                   = "Present";
            ExcludeUsers                             = @("admin@$Domain");
            GrantControlOperator                     = "OR";
            IncludeApplications                      = @("All");
            IncludeRoles                             = @("Attack Payload Author");
            SignInFrequencyInterval                  = "timeBased";
            SignInFrequencyIsEnabled                 = $True;
            SignInFrequencyType                      = "hours";
            SignInFrequencyValue                     = 1;
            State                                    = "disabled";
        }
    }
}

Example 2

This example is used to test new resources and showcase the usage of new resources being worked on. It is not meant to use as a production baseline.

Configuration Example
{
    param(
        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint
    )
    Import-DscResource -ModuleName Microsoft365DSC

    node localhost
    {
        AADConditionalAccessPolicy 'ConditionalAccessPolicy'
        {
            BuiltInControls                          = @("mfa");
            ClientAppTypes                           = @("all");
            ApplicationId         = $ApplicationId
            TenantId              = $TenantId
            CertificateThumbprint = $CertificateThumbprint
            DeviceFilterMode                         = "exclude";
            DeviceFilterRule                         = "device.trustType -eq `"AzureAD`" -or device.trustType -eq `"ServerAD`" -or device.trustType -eq `"Workplace`"";
            DisplayName                              = "Example CAP";
            Ensure                                   = "Present";
            ExcludeUsers                             = @("admin@$Domain");
            GrantControlOperator                     = "OR";
            IncludeApplications                      = @("All");
            IncludeRoles                             = @("Attack Payload Author");
            SignInFrequencyInterval                  = "timeBased";
            SignInFrequencyIsEnabled                 = $True;
            SignInFrequencyType                      = "hours";
            SignInFrequencyValue                     = 2; # Updated Porperty
            State                                    = "disabled";
        }
    }
}

Example 3

This example is used to test new resources and showcase the usage of new resources being worked on. It is not meant to use as a production baseline.

Configuration Example
{
    param(
        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint
    )
    Import-DscResource -ModuleName Microsoft365DSC

    node localhost
    {
        AADConditionalAccessPolicy 'ConditionalAccessPolicy'
        {
            DisplayName                          = 'Example CAP'
            Ensure                               = 'Absent'
            ApplicationId         = $ApplicationId
            TenantId              = $TenantId
            CertificateThumbprint = $CertificateThumbprint
        }
    }
}