<?xml version="1.0" encoding="UTF-8"?>
<CHECKLIST>
  <ASSET>
    <ROLE>None</ROLE>
    <ASSET_TYPE>Computing</ASSET_TYPE>
    <HOST_NAME></HOST_NAME>
    <HOST_IP></HOST_IP>
  </ASSET>
  <STIGS>
    <iSTIG>
      <STIG_INFO>
        <SI_DATA>
          <SID_NAME>title</SID_NAME>
          <SID_DATA>Microsoft Entra ID Security Technical Implementation Guide</SID_DATA>
        </SI_DATA>
        <SI_DATA>
          <SID_NAME>version</SID_NAME>
          <SID_DATA>1</SID_DATA>
        </SI_DATA>
        <SI_DATA>
          <SID_NAME>releaseinfo</SID_NAME>
          <SID_DATA>Release: 1</SID_DATA>
        </SI_DATA>
      </STIG_INFO>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270200</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270200r1085610_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must initiate a session lock after a 15-minute period of inactivity.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Session locks are temporary actions taken to prevent logical access to organizational systems when users stop work and move away from the immediate vicinity of those systems but do not want to log out because of the temporary nature of their absences. Session locks can be implemented at the operating system level or at the application level. A proximity lock may be used to initiate the session lock (e.g., via a Bluetooth-enabled session or dongle). User-initiated session locking is behavior or policy-based and, as such, requires users to take physical action to initiate the session lock. Session locks are not an acceptable substitute for logging out of systems, such as when organizations require users to log out at the end of workdays.

Satisfies: SRG-APP-000295</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>To verify the inactivity timeout is configured for 15 minutes or less, follow the steps outlined below:

1. Sign in to entra.microsoft.us.
2. Navigate to the Gear icon (right) and select Settings &gt;&gt; Signing out + notifications.
3. Check that the &quot;Enable directory level idle timeout&quot; is selected.
4. Verify the Signing out value is 15 minutes or less.

If the directory level idle timeout is not set to 15 minutes or less, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>1. Sign into entra.microsoft.us.
2. Navigate to the Gear icon (right) and select Settings &gt;&gt; Signing out + notifications. 
3. Check the &quot;Enable directory level idle timeout&quot; box.
4. Populate the &quot;Hours&quot; field to &quot;0&quot; and the &quot;Minutes&quot; field to &quot;15&quot;.
5. Click &quot;Apply&quot;.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270204</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270204r1085660_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must automatically disable accounts after a 35-day period of account inactivity.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Attackers that are able to exploit an inactive account can potentially obtain and maintain undetected access to an application. Owners of inactive accounts will not notice if unauthorized access to their user account has been obtained. Applications need to track periods of user inactivity and disable accounts after 35 days of inactivity. Such a process greatly reduces the risk that accounts will be hijacked, leading to a data compromise. 

To address access requirements, many application developers choose to integrate their applications with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements. Such integration allows the application developer to offload those access control functions and focus on core application features and functionality. 

This policy does not apply to either emergency accounts or infrequently used accounts. Infrequently used accounts are local login administrator accounts used by system administrators when network or normal logon/access is not available. Emergency accounts are administrator accounts created in response to crisis situations.

References:
https://learn.microsoft.com/en-us/powershell/module/microsoft.graph.users/get-mguser?view=graph-powershell-1.0
https://learn.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&amp;tabs=http
https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties
https://learn.microsoft.com/en-us/graph/api/resources/signinactivity?view=graph-rest-1.0#properties

For any PowerShell scripts that are Graph, note that Graph endpoints differ depending on where the tenant is located.
- For commercial tenants, graph endpoints are graph.microsoft.com.
- For GCC High tenants (IL4), graph endpoints are graph.microsoft.us.
- For DOD tenants (IL5), graph endpoints are dod-graph.microsoft.us.

Satisfies: SRG-APP-000025, SRG-APP-000163</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify Entra ID disables accounts after 35 days of inactivity.

Use the following procedure to discover inactive user accounts in Entra ID (35+ days) via the use of the Graph PowerShell SDK.

Installation instructions: 
https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation?view=graph-powershell-1.0

Required roles:
At least Global Reader

Required tenant license:
Entra ID Premium P1

Example PowerShell commands:
Connect-MgGraph -Scopes AuditLog.Read.All,User.Read.All -Environment USGov

$inactiveDate = (Get-Date).AddDays(-35)

$users = Get-MgUser -All:$true -Property Id, DisplayName, UserPrincipalName, UserType, createdDateTime, SignInActivity, AccountEnabled | Where-Object { $_.AccountEnabled -eq $true }

$inactiveUsers =
$users | Where-Object {
    ($_.SignInActivity.LastSignInDateTime -lt $inactiveDate) -or ($_.SignInActivity.LastSignInDateTime -eq $null -and $_.CreatedDateTime -lt $inactiveDate)
} | Select-Object DisplayName, UserPrincipalName, UserType, createdDateTime, @{Name = &apos;LastSignInDateTime&apos;; Expression = {($_.SignInActivity).LastSignInDateTime}}, Id | Sort-Object LastSignInDateTime 

$inactiveUsers | Format-Table -AutoSize

If accounts are not disabled after a 35-day period of account inactivity, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>1. Sign in to the Microsoft Entra admin center as at least a Reports Reader.
2. Browse to Identity &gt;&gt; Users &gt;&gt; All users.
3. Select a user from the list.
4. Use the following procedure to disable inactive user accounts in Entra ID via the use of the Graph PowerShell SDK.

Installation instructions:  
https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation?view=graph-powershell-1.0

Required roles:
Global Administrator

Install the Microsoft Graph PowerShell SDK.

Install-Module Microsoft.Graph -Scope CurrentUser

Connect-MgGraph -Scopes &quot;User.ReadWrite.All&quot;, &quot;Directory.ReadWrite.All&quot;, &quot;SignInActivity.Read.All&quot;

# Set the inactivity threshold (in days)
$inactivityThreshold = 35

# Get the current date
$currentDate = Get-Date

# Get all users and their last sign-in activity
$users = Get-MgUser -All -Property &quot;DisplayName&quot;, &quot;SignInActivity&quot;

# Filter for inactive users
$inactiveUsers = $users | Where-Object {
    $_.SignInActivity.LastSignInDateTime -lt ($currentDate.AddDays(-$inactivityThreshold))
}

# Disable inactive users
foreach ($user in $inactiveUsers) {
    Set-MgUser -UserId $user.Id -AccountEnabled $false
    Write-Host &quot;Disabled user: $($user.DisplayName)&quot;
}</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270208</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270208r1085616_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must enforce the limit of three consecutive invalid logon attempts by a user during a 15-minute time period.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account.

Satisfies: SRG-APP-000345</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify Entra ID is configured to enforce the limit of three consecutive invalid logon attempts by a user during a 15-minute time period.

1. Sign in to the Microsoft Entra admin center as at least an Authentication Policy Administrator.
2. Browse to Identity &gt;&gt; Protection &gt;&gt; Authentication methods &gt;&gt; Password protection.
3. Verify the Lockout Threshold has been set to &quot;3&quot; and Lockout duration is set to &quot;900&quot; or more.

If Entra ID is not configured to enforce the limit of three consecutive invalid logon attempts with a lockout period of 15 minutes, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>To configure account lockout settings, complete these steps: 

1. Sign in to the Microsoft Entra admin center as at least an Authentication Administrator.
2. Browse to Identity &gt;&gt; Protection &gt;&gt; Authentication methods &gt;&gt; Password protection.
3. Set the Lockout threshold to &quot;3&quot;.
4. Set the Lockout duration to &quot;900&quot; (15 minutes).</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270209</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270209r1085618_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must display the Standard Mandatory DOD Notice and Consent Banner before granting access to the application.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Display of the DOD-approved use notification before granting access to the application ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.

System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist.

The banner must be formatted in accordance with DTM-08-060. Use the following verbiage for applications that can accommodate banners of 1300 characters:

&quot;You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.

By using this IS (which includes any device attached to this IS), you consent to the following conditions:

-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.

-At any time, the USG may inspect and seize data stored on this IS.

-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.

-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.

-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.&quot;
 
Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner:

&quot;I&apos;ve read &amp; consent to terms in IS user agreem&apos;t.&quot;

Satisfies: SRG-APP-000068, SRG-APP-000069, SRG-APP-000070</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify Entra ID has been configured to display the DOD logon banner when a user logs on.

1. Sign in to the Microsoft Entra admin center as a Global Administrator.
2. Browse to or search &quot;Company Branding&quot;.
3. Browse to the &quot;Sign-in form&quot; tab and review the required DOD banner text in the &quot;Sign-in page text&quot;. Note: This field is limited to 1024 characters.

If the DOD logon banner text is not present in the &quot;Sign-in page text&quot; field, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>To create the standard DOD banner in Entra ID:

1. Sign in to the Microsoft Entra admin center as a Global Administrator.
2. Browse to or search &quot;Company Branding&quot;.
3. Select &quot;Customize&quot; under &quot;Default sign-in experience&quot;.
4. Browse to the &quot;Sign-in form&quot; tab and place the required DOD banner text in the &quot;Sign-in page text&quot;. Note: This field is limited to 1024 characters.
5. Populate all required fields.
6. Click &quot;Review + Create&quot;.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270227</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270227r1085728_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must be configured to transfer logs to another server for storage, analysis, and reporting.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Protection of log data includes ensuring log data is not accidentally lost or deleted. Backing up audit records to a different system or onto separate media than the system being audited on an organizationally defined frequency helps to ensure the audit records will be retained in the event of a catastrophic system failure. 

This also ensures a compromise of the information system being audited does not result in a compromise of the audit records.

This requirement only applies to applications that have a native backup capability for audit records. Operating system backup requirements cover applications that do not provide native backup functions.

Satisfies: SRG-APP-000358</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify Microsoft Entra ID sign-in logs are updated in Microsoft Sentinel or equivalent SIEM. Verify the Connected Status is &quot;green&quot; with Last Log Received within the past hour. 

1. Sign in to the Microsoft Entra admin center as a Global Administrator.
2. Browse to Identity &gt;&gt; Monitoring &amp; health &gt;&gt; Diagnostic settings.
3. Select &quot;Edit settings&quot; for the entry that has an established log analytics workspace.
4. Review the selected log categories. The minimum required categories are:
- SigninLogs.
- AuditLogs.
- ServicePrincipalSignInLogs.
- ManagedIdentitySignInLogs.
- UserRiskEvents.
- RiskyUsers.
- RiskyServicePrincipals.
- ServicePrincipalRiskEvents.

If there is not an entry established to offload logs to a log analytic workspace and the minimum log categories are not selected, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Configure the Microsoft Entra to transfer Microsoft Entra server logs to another server for storage, analysis, and reporting at least every seven days.

1. Sign in to the Microsoft Entra admin center as a Global Administrator.
2. Browse to Identity &gt;&gt; Monitoring &amp; health &gt;&gt; Diagnostic settings.
3. Select &quot;+ Add diagnostic settings&quot;.
4. Select at least these required categories:
- SigninLogs.
- AuditLogs.
- ServicePrincipalSignInLogs.
- ManagedIdentitySignInLogs.
- UserRiskEvents.
- RiskyUsers.
- RiskyServicePrincipals.
- ServicePrincipalRiskEvents. 
5. Select &quot;Send to Log Analytics workspace&quot;. For details on establishing a log analytics workspace, reference the DOD365 TCG.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270233</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270233r1085634_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>high</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must be configured to use multifactor authentication (MFA).</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Without the use of MFA, the ease of access to privileged functions is greatly increased. 

MFA requires the use of two or more factors to achieve authentication. 

Factors include: 
(i) Something a user knows (e.g., password/PIN); 
(ii) Something a user has (e.g., cryptographic identification device, token); or 
(iii) Something a user is (e.g., biometric). 

A privileged account is defined as an information system account with authorizations of a privileged user. 

Network access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the internet).

Satisfies: SRG-APP-000149, SRG-APP-000150, SRG-APP-000154, SRG-APP-000155</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify user accounts require MFA.

1. Sign in to the Microsoft Entra admin center as at least a Conditional Access Administrator.
2. Browse to Identity &gt;&gt; Protection &gt;&gt; Conditional Access.
3. Select &quot;Policies&quot; and find the MFA policy.
4. Confirm the policy state is set to &quot;On&quot;.
5. Select the policy and confirm &quot;All users included&quot; is specified under the Users option of the policy.
6. Confirm any exclusions listed under the &quot;Exclude&quot; section of the Users option are documented with the authorizing official (AO).

If the MFA policy is not set to &quot;On&quot; with &quot;All users included&quot; selected and any exclusions are not documented with the AO, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Account authentication is managed by Entra ID. The following steps will create a Conditional Access policy to require all users to use MFA:

1. Sign in to the Microsoft Entra admin center as at least a Conditional Access Administrator.
2. In the search bar, search for &quot;Conditional Access&quot;.
3. Select &quot;Create new policy&quot;.
4. Give the policy a name. It is recommended that organizations create a meaningful standard for the names of policies.
5. Under &quot;Assignments&quot;, select &quot;Users&quot; or &quot;workload identities&quot;.
a. Under &quot;Include&quot;, select &quot;All users&quot;.
b. Under &quot;Exclude&quot;, select &quot;Users&quot; and &quot;groups&quot;, and then choose the organization&apos;s emergency access or break-glass accounts.
6. Navigate to Target resources &gt;&gt; Cloud apps &gt;&gt; Include. Select &quot;All cloud apps&quot;.
a. Under &quot;Exclude&quot;, select any applications that do not require MFA.
7. Navigate to Access controls &gt;&gt; Grant. Select &quot;Grant access, Require multifactor authentication&quot;, and then click &quot;Select&quot;.
8. Confirm the settings and set &quot;Enable policy&quot; to &quot;Report-only&quot;.
9. Select &quot;Create&quot; to enable the policy.
10. After confirming the policy, deploy the policy by either moving the &quot;Enable&quot; policy toggle from &quot;Report-only&quot; to &quot;On&quot; or alternately, deploying the policy using a Conditional Access template.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270239</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270239r1085663_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must enforce a 60-day maximum password lifetime restriction.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed at specific intervals.

One method of minimizing this risk is to use complex passwords and periodically change them. If the application does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the system and/or application passwords could be compromised.

This requirement does not include emergency administration accounts, which are meant for access to the application in case of failure. These accounts are not required to have maximum password lifetime restrictions.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify the Entra ID password expiration time period has been changed to 60 days.

Interview the site Entra ID system administrator and verify the script shown in the Fix has been run.

If the Entra ID password expiration time period is not 60 days or less, this is a finding.

Note: It is not possible to view the current value for the password expiration time (the Entra ID default is 90). An administrator can check the maximum password age of their Entra ID tenant by using the Graph PowerShell SDK module and the &quot;Get-MgDomain&quot; command by using the script located here: 
https://learn.microsoft.com/en-us/powershell/module/microsoft.graph.identity.directorymanagement/get-mgdomain?view=graph-powershell-1.0

Note: For any PowerShell scripts that are Graph, note that Graph endpoints differ depending on where the tenant is located.
- For commercial tenants, graph endpoints are graph.microsoft.com.
- For GCC High tenants (IL4), graph endpoints are graph.microsoft.us.
- For DOD tenants (IL5), graph endpoints are dod-graph.microsoft.us.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Change the default Entra ID password expiration time period to 60 days by using the Graph script located here: 
https://learn.microsoft.com/en-us/powershell/module/microsoft.graph.users/update-mguser 

Use the &quot;Get-MgDomain&quot; command, and update it to 60 days using the &quot;Update-MgDomain -DomainId &lt;DomainName&gt; 
-PasswordValidityPeriodInDays 60&quot; command.

Note: For any PowerShell scripts that are Graph, note that Graph endpoints differ depending on where the tenant is located.
- For commercial tenants, graph endpoints are graph.microsoft.com.
- For GCC High tenants (IL4), graph endpoints are graph.microsoft.us.
- For DOD tenants (IL5), graph endpoints are dod-graph.microsoft.us.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270255</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270255r1085626_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must notify system administrators (SAs) and the information system security officer (ISSO) when privileges are being requested.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>When application accounts are modified, user accessibility is affected. Accounts are used for identifying individual users or for identifying the application processes themselves. Sending notification of account modification events to the system administrator and ISSO is one method for mitigating this risk. Such a capability greatly reduces the risk that application accessibility will be negatively affected for extended periods of time and also provides logging that can be used for forensic purposes.

To address access requirements, many operating systems can be integrated with enterprise-level authentication/access/auditing mechanisms that meet or exceed access control policy requirements.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify PIM is in use with email notifications going to the SA and ISSO when privileges are requested.

1. Sign in to the Microsoft Entra admin center as at least an Authentication Policy Administrator.
2. Search for &quot;Microsoft Entra Privileged Identity Management&quot;.
3. Navigate to &quot;Management&quot; and select &quot;Microsoft Entra roles&quot;.
4. Expand the &quot;Manage&quot; menu and select roles.
5. For each role that is either active or eligible perform the following:
a. Select the role.
b. Navigate to role settings.
c. Under &quot;Send notifications when eligible members activate this role:&quot; Verify the SA and ISSO email addresses are listed under &quot;Additional recipients&quot; for the type &quot;Role activation alert&quot;.

If the SA and ISSO are not set up to receive email notification when privileges are requested through PIM, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Configure PIM to email notifications to the SA and ISSO when privileges are requested.

1. Sign in to the Microsoft Entra admin center as at least an Authentication Policy Administrator.
2. Search for &quot;Microsoft Entra Privileged Identity Management&quot;.
3. Navigate to &quot;Management&quot; and select &quot;Microsoft Entra roles&quot;.
4. Expand the &quot;Manage&quot; menu and select roles.
5. For each role that is either active or eligible perform the following:
a. Select the role.
b. Navigate to role settings.
c. Select &quot;Edit&quot;.
d. Navigate to the &quot;Notification&quot; tab.
e. Under &quot;Send notifications when eligible members activate this role:&quot; add the SA and ISSO email addresses under &quot;Additional recipients&quot;.
f. Select &quot;Update&quot;.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270335</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270335r1085641_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must use Privileged Identity Management (PIM).</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Emergency accounts are administrator accounts established in response to crisis situations where the need for rapid account activation is required. Therefore, emergency account activation may bypass normal account authorization processes. If these accounts are automatically disabled, system maintenance during emergencies may not be possible, thus adversely affecting system availability.

Emergency accounts are different from infrequently used accounts (i.e., local logon accounts used by system administrators when network or normal logon/access is not available). Infrequently used accounts also remain available and are not subject to automatic termination dates. However, an emergency account is normally a different account created for use by vendors or system maintainers.

To address access requirements, many application developers choose to integrate their applications with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements. Such integration allows the application developer to offload those access control functions and focus on core application features and functionality.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Verify PIM is in use with just-in-time (JIT) access and employing the principle of least privilege access.

1. Sign in to the Microsoft Entra admin center as at least an Authentication Policy Administrator.
2. Search for &quot;Microsoft Entra Privileged Identity Management&quot;.
3. Navigate to &quot;Management&quot; and select &quot;Microsoft Entra roles&quot;.
4. Expand the &quot;Manage&quot; menu and select &quot;Assignments&quot;.
5. Select the &quot;Active assignments&quot; tab and for each privileged role, verify there are no roles with an end time of &quot;Permanent&quot;. 

If any privileged roles are present with an end time of &quot;Permanent&quot;, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Configure PIM to just-in-time (JIT) access and employ the principle of least privilege access.

When assigning privileged roles to accounts, select the assignment type of &quot;Eligible&quot;.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    <VULN>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>V-270475</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>SV-270475r1085680_rule</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Rule_Title</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Microsoft Entra ID must, for password-based authentication, verify when users create or update passwords that the passwords are not found on the list of commonly used, expected, or compromised passwords.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Vuln_Discuss</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>Password-based authentication applies to passwords regardless of whether they are used in single-factor or multifactor authentication. Long passwords or passphrases are preferable over shorter passwords. Enforced composition rules provide marginal security benefits while decreasing usability. However, organizations may choose to establish certain rules for password generation (e.g., minimum character length for long passwords) under certain circumstances and can enforce this requirement in IA-5(1)(h). Account recovery can occur, for example, in situations when a password is forgotten. Cryptographically protected passwords include salted one-way cryptographic hashes of passwords. The list of commonly used, compromised, or expected passwords includes passwords obtained from previous breach corpuses, dictionary words, and repetitive or sequential characters. The list includes context-specific words, such as the name of the service, username, and derivatives thereof.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Check_Content</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>As an authorized administrator, browse to https://portal.azure.us/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade.

Check the &quot;Custom banned passwords&quot; section. If &quot;Enforce custom list&quot; has not be configured to &quot;Yes&quot; and a custom banned password list has not been populated, this is a finding.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STIG_DATA>
        <VULN_ATTRIBUTE>Fix_Text</VULN_ATTRIBUTE>
        <ATTRIBUTE_DATA>As an authorized administrator, browse to https://portal.azure.us/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade.

Enable the Custom banned password list by selecting &quot;Yes&quot; next to the &quot;Enforce custom list&quot; option.

Populate the &quot;Custom banned password list&quot;.

The list must be one word per line, with a maximum of 1000 words. The words are case insensitive, and common character substitutions (o for 0, etc) are automatically considered.</ATTRIBUTE_DATA>
      </STIG_DATA>
      <STATUS>Not_Reviewed</STATUS>
      <FINDING_DETAILS></FINDING_DETAILS>
      <COMMENTS></COMMENTS>
    </VULN>
    </iSTIG>
  </STIGS>
</CHECKLIST>