Sustainability in Dynamics 365 Business Central: A New Way to Measure and Manage Your Environmental Impact

Sustainability in Dynamics 365 Business Central: A New Way to Measure and Manage Your Environmental Impact

This article is contributed. See the original author and article here.

Learn how the upcoming 2024 release wave 1 will enable you to track and report your greenhouse gas emissions with ease and accuracy.

Sustainability is more than a buzzword. It’s a global imperative that demands urgent action from all sectors of society, including the business world. As regulations and expectations around environmental reporting evolve, organizations need reliable and efficient tools to measure and manage their impact on the planet.

That’s why we’re excited to announce that Dynamics 365 Business Central will soon offer new sustainability features that will help you comply with the latest standards and best practices, as well as drive positive changes for your business and the environment. Starting from the 2024 release wave 1, you’ll be able to track and report your greenhouse gas (GHG) emissions across three scopes defined by the ESG standard, using sustainability journals and built-in calculation methods. You’ll also be able to leverage the new Chart of Sustainability Accounts to organize and analyze your emission data with ease and transparency.

The new functionality is designed to oversee and regulate an organization’s environmental footprint by tracking various greenhouse gas (GHG) emissions, facilitating proper insights. This functionality will be a multi-wave investment and at this first release we delivered basic framework as a foundation for future expanding. The first version focuses on GHG emissions, and related to that the solution is focused on three emission scopes defined by the ESG standard. This feature supports the basic process of collecting emission data via sustainability journals, allowing for manual entry of known data, or utilizing built-in methods for calculating emissions footprints.

Chart of Sustainability Accounts

The Chart of Sustainability Accounts forms the foundational structured list used for recording all emissions data. It functions as a comprehensive framework that categorizes and organizes these accounts based on their attributes, such as scope or other groupings. Each account is typically assigned a unique code or number for easy reference and tracking, following the same structure as a traditional Chart of Accounts but customized specifically for monitoring sustainability-related data and metrics within an organization.

This chart typically encompasses categories such as energy consumption, greenhouse gas emissions, waste generation, and other pertinent sustainability metrics. Users have the flexibility to add Account Categories and Subcategories to define how the system behaves, selecting dedicated emissions for tracking, emission factors, formulas, and similar configurations.

In essence, the Chart of Sustainability Accounts serves as the backbone of the Sustainability feature, facilitating effective tracking, measurement, and management of sustainability-related data and metrics within the organization.

table

Chart of Sustainability Accounts

Sustainability Journals

Sustainability Journals are designed to track and record sustainability-related activities, and metrics within an organization, using the same user experience as other journals in Business Central. Within the journal, users have the option to input emissions manually if they possess the necessary information. Alternatively, if they lack this data, they can utilize built-in formulas to accurately calculate emissions based on specific known parameters corresponding to various types of sources and accounts.

When posting with a Sustainability Journal, entries are generated on the Sustainability Ledger. Similar to other journal types, users have the flexibility to utilize various templates and batches with specific configurations. They can opt for standard journals or recurring journals to manage sustainability data efficiently.

table

Sustainability Journal

Sustainability Entries

The Sustainability Ledger organizes all emission data according to the Chart of Sustainability Accounts. When a user posts the Sustainability Journal, all crucial data is recorded within the Sustainability Entries. Posting to these entries can be regulated by specific rules configured in the Sustainability Setup, and users can use dimensions in a manner consistent with other entries throughout Business Central. All reports are generated based on Sustainability Entries. Presently, there are several existing reports available for analyzing and tracking emissions. However, in future releases, Business Central will introduce additional reports for printing or submission to relevant authorities.

Future Development

As mentioned in the introduction, Microsoft will continue to enhance this feature by adding more horizontal capabilities and improving its connection with other features in Business Central, without focusing on industry-specific aspects. The development of new features will depend on research of the key elements for such solutions, compliance with regulatory requirements, and useful feedback from partners. Also, it is expected that ISV partners will use this basic framework to create industry-specific sustainability solutions.

The post Sustainability in Dynamics 365 Business Central: A New Way to Measure and Manage Your Environmental Impact appeared first on Microsoft Dynamics 365 Blog.

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Azure API Center: The First Look

Azure API Center: The First Look

This article is contributed. See the original author and article here.

Let’s say you work for a company that has a lot of APIs. You might have a few questions:


 



  • How do you manage the lifecycle of those APIs?

  • What governance would you apply to these APIs?

  • What is the list of environments needed to manage these APIs?

  • What are the deployment strategies for those APIs?

  • How would you integrate those APIs with other services?


 


As your company’s number of APIs increases, so does the complexity of managing them. Azure API Center (APIC) is a central repository for your APIs lifecycle management, and it offers the more efficient ways for management. Throughout this post, I will take a first look at what Azure API Center is and what it offers.


 



You can find a sample code from this GitHub repository.



 


Prerequisites


 


There are a few prerequisites to use Azure APIC effectively:


 



 


API Center instance provisioning


 


There are three ways to provision an APIC instance:


 



 


I’m not going to discuss how to provision an APIC instance in this article. But here’s the reference you can do it by yourself through Bicep – Azure API Center Sample


 


Register APIs to APIC


 


The purpose of using APIC is to manage your company’s APIs in a centralised manner. From design to deployment, APIC tracks all the histories. To register your APIs to APIC, you can use either Azure CLI or Azure Portal.


 


Let’s say there’s a weather forecast API you have designed and developed. You have an OpenAPI document for the API, but not implemented yet. Let’s register the API to APIC.


 


 

az apic api register 
    -g "my-resource-group" 
    -s "my-api-center" 
    --api-location ./weather-forecast.json

 


 


Registering API through Azure CLI


 


If you want to register another API through the Azure Portal, you can do it by following the official documentation.


 


Registering API through Azure Portal


 


Import APIs from API Management to APIC


 


If you have already working APIs in Azure API Management (APIM), you can import them to APIC through Azure CLI. But it requires a few more steps to do so.


 




  1. First of all, you need to activate Managed Identity to the APIC instance. It can be either system identity or user identity, but I’m going to use the system identity for now.

    az apic service update 
        -g "my-resource-group" 
        -s "my-api-center" 
        --identity '{ "type": "SystemAssigned" }'
    



  2. Then, get the principal ID of the APIC instance.

    APIC_PRINCIPAL_ID=$(az apic service show 
        -g "my-resource-group" 
        -s "my-api-center" 
        --query "identity.principalId" -o tsv)
    



  3. Now, register the APIC instance to the APIM instance as an APIM reader.

    APIM_RESOURCE_ID=$(az apim show 
        -g "my-resource-group" 
        -s "my-api-center" 
        --query "id" -o tsv)
    
    az role assignment create 
        --role "API Management Service Reader Role" 
        --assignee-object-id $APIC_PRINCIPAL_ID 
        --assignee-principal-type ServicePrincipal 
        --scope $APIM_RESOURCE_ID
    



  4. And finally, import APIs from APIM to APIC.

    az apic service import-from-apim 
        -g "my-resource-group" 
        -s "my-api-center" 
        --source-resource-ids "$APIM_RESOURCE_ID/apis/*"
    


    Importing API from APIM




 


Now, you have registered and imported APIs to APIC. But registering those APIs to APIC does nothing to do with us. What’s next then? Let’s play around those APIs on Visual Studio Code.


 


View APIs on Visual Studio Code – Swagger UI


 


So, what can you do with the APIs registered and imported to APIC? You can view the list of APIs on Visual Studio Code. First, you need to install the Azure API Center extension on Visual Studio Code.


 


Once you install the extension, you can see the list of APIs on the extension. Choose one of the APIs and right-click on it. Then, you can see the context menu. Click on the Open API Documentation menu item.


 



 


You will see the Swagger UI page, showing your API document. With this Swagger UI, you can test your API endpoints.


 


Swagger UI


 


Test APIs on Visual Studio Code – Rest Client


 


Although you can test your API endpoints on the Swagger UI, you can also test them in a different way. For this, you need to install the Rest Client extension on Visual Studio Code.


 


After you install the extension, choose one of the APIs and right-click on it. Then, you can see the context menu. Click on the Generate HTTP File menu item.


 



 


Within the HTTP file, you can actually test your API endpoints with different payloads.


 


HTTP file


 


Generate client SDK on Visual Studio Code – Kiota


 


You can write up the client SDK by yourself. But it’s time consuming and fragile because the API can change at any time. But what if somebody or a tool creates the client SDK on your behalf?


 


One of the greatest features of this APIC extension offers is to generate client SDKs. You can generate the client SDKs for your APIs in different languages. Although the API itself has no implementation yet, you can still work with the client SDK because you know what you need to send and what you will receive in return through the SDK. For this, you need to install the Kiota extension on Visual Studio Code.


 


After you install the extension, choose one of the APIs and right-click on it. Then, you can see the context menu. Click on the Generate API Client menu item.


 


Generate API client


 


Because I have a Blazor web application, I’m going to generate a C# client SDK for the API. The Kiota extension finds out all the API endpoints from APIC. You can choose them all or just a few of them. Click the :play_button: button, and it generates the client SDK for you.


 


Kiota Explorer


 


Add the necessary information like class name and namespace of the client SDK, and output folder. Finally it asks in which language to generate the client SDK. There are currently 9 languages available for now. I’m going to choose C#.


 


Kiota - choose language


 


The Kiota extension then generates the client SDK into the designated directory.


 


API client SDK generated


 


Consume the generated client SDK within an application


 


Now, the client SDK has been generated by the Kiota extension from APIC to my Blazor application. Because it uses the Kiota libraries, I need to install the following Kiota NuGet packages to my Blazor web application.


 


 

dotnet add ./src/WebApp/ package Microsoft.Kiota.Http.HttpClientLibrary
dotnet add ./src/WebApp/ package Microsoft.Kiota.Serialization.Form
dotnet add ./src/WebApp/ package Microsoft.Kiota.Serialization.Json
dotnet add ./src/WebApp/ package Microsoft.Kiota.Serialization.Text
dotnet add ./src/WebApp/ package Microsoft.Kiota.Serialization.Multipart

 


 


Add dependencies to the Program.cs file and update the Home.razor file to consume the client SDK. Then you will be able to see the result.


 


Pet Store - available pets


 


Your web application as the API consumer works perfectly with the client SDK generated from APIC.


 




 


So far, I’ve walked through how Azure API Center can handle your organisation’s APIs as a central repository, and played around the APIC extension on VS Code. This post has shown you how to provision the APIC instance, register and import APIs in various ways, and how to test those APIs on VS Code and generate the client SDKs directly from VS Code.


 


As I mentioned in the beginning, taking care of many APIs in one place is crucial as your ogranisation grows up. You might think that you don’t need APIC if your organisation’s API structure is relatively simple. However, even if your organisation is small, APIC will give you better overview of APIs, and how they can interconnected with each other.


 


More about Azure API Center?


 


If you want to learn more about APIC, the following links might be helpful.


 



 


This article was originally published on Dev Kimchi.

Enable Change Tracking service for Arc Onboarded machines (Windows and Linux)

Enable Change Tracking service for Arc Onboarded machines (Windows and Linux)

This article is contributed. See the original author and article here.

Azure Arc is a multi-cloud and on-premises management platform that simplifies governance and management by delivering a consistent way to manage your entire environment together by projecting your existing non-Azure and or on-premises resources into Azure Resource Manager.


Azure Arc has benefited multiple customers by simplifying governance and management by delivering a consistent multi-cloud and on-premises management platform such as patch management using Azure Update Manager, enabling Security using Defender for cloud, Standardized role-based access control (RBAC), Change tracking etc. for resource types hosted outside of Azure such as Sever, Kubernetes, SQL Server etc. Today, we will discuss and enable Change Tracking service for Arc Onboarded devices. To know more about Azure arc benefits and Onboarding process refer to the link here.


Let’s look at what the change tracking service does before we activate it.


The Change Tracking and Inventory services track changes to Files, Registry, Windows Software, Linux Software (Software Inventory), Services and Daemons, also supports recursion, which allows you to specify wildcards to simplify tracking across directories.


Note: Earlier this feature gets enabled using Log Analytics (MMA Agent) and Azure Automation Account. Now this has been simplified with Azure Policy.


Let’s understand how to enable Change tracking and Inventory feature for Arc Onboarded device.


Note: Please make sure that the arc machines are registered, and their status is shown as connected before you turn on the feature, as seen below.


 


Anipriya_0-1708445940483.png


 


 


Go to Azure Policy then Definition and filter the category by Change tracking and Inventory. You need to enable all the built-in policies present in Enable change tracking Inventory for Arc enabled virtual machines initiatives for Arc enabled windows and Linux devices respectively.


 


Anipriya_1-1708445940495.png


 



  1. Assign Configure Windows Arc-enabled machines to install AMA for ChangeTracking and Inventory built-in policy (Scope it to Subscription of Arc Onboarded device). Make Sure you have unchecked the Parameter and verify Effect to DeployIfNotexist and create Remediation task. This will ensure existing resources can be updated via a remediation task after the policy is assigned. Similarly, Configure Linux Arc-enabled machines to install AMA for ChangeTracking and Inventory built-in policy for Arc Onboarded Linux devices. Once configured using Azure Policy, Arc machine will have AMA Agent deployed.


 



  1. Assign Configure Change Tracking Extension for Windows Arc machines built-in policy (Scope it to Subscription of Arc Onboarded device). Follow the same steps as mentioned in point 1. Similarly, Configure Change Tracking Extension for Linux Arc machines built-in policy for Arc Onboarded Linux devices. Once configured using Azure Policy, Arc machine will have change tracking extension deployed.


 


Anipriya_2-1708445940498.png


 



  1. Create data collection rule.
    a. Download CtDcrCreation.json file. Go to Azure portal and in the search, enter Deploy a custom template. In the Custom deployment page > select a template, select Build your own template in the editor. In the Edit template, select Load file to upload the CtDcrCreation.json file or just copy the json and paste the template. And select Save. In the Custom deployment > Basics tab, provide Subscription and Resource group where you want to deploy the Data Collection Rule. The Data Collection Rule Name is optional.


Anipriya_3-1708445940502.png


 


Anipriya_4-1708445940510.png


 


b. In the Custom deployment > Basics tab, provide Subscription and Resource group where you want to deploy the Data Collection Rule. The Data Collection Rule Name is optional. Workspace Resource ID of Log analytic Workspace. (You will get the workspace ID in the overview page of Log analytic workspace) .


Anipriya_5-1708445940516.png


 


c. Select Review+create > Create to initiate the deployment of CtDcrCreation. After the deployment is complete, select CtDcr-Deployment to see the DCR Name. Go to the newly created Data collection Rule (DCR) rule named (Microsoft Ct-DCR). Click on json view and copy the Resource ID.


 


Anipriya_6-1708445940523.png


 


 


Anipriya_7-1708445940527.png


 


Anipriya_8-1708445940530.png


 


d. Go to Azure Policy Assign [Preview]: Configure Windows Arc-enabled machines to be associated with a Data Collection Rule for ChangeTracking and Inventory built-in policy (Scope it to Subscription of Arc Onboarded device). Make Sure you have enabled the Parameter and paste the Resource ID captured above and create Remediation task. Similarly, Configure Linux Arc-enabled machines to be associated with a Data Collection Rule for ChangeTracking and Inventory built-in policy for Arc Onboarded Linux devices. Once configured using Azure Policy, Arc machine will have change tracking extension deployed.


 


Anipriya_9-1708445940533.png


After all the policies are configured and deployed. Go to the Arc device, you will be able to view the change tracking and Inventory is enabled.


 


Anipriya_10-1708445940538.png


 


Anipriya_11-1708445940544.png


 

Use Microsoft Copilot for Service with your external CRM 

Use Microsoft Copilot for Service with your external CRM 

This article is contributed. See the original author and article here.

Last year, we released a revolutionary set of Copilot capabilities within Dynamics 365 Customer Service. With Copilot, agents can get quick answers, draft emails, and summarize cases and conversations using information that already exists in Dynamics 365, as well as your preferred data sources.  

Now there’s Copilot for Service, which lets you connect all your data sources without replacing your existing CRM. Just like Copilot in Dynamics 365 Customer Service, Copilot for Service enables agents to easily manage customer inquiries, track service requests, and provide personalized support. It integrates Microsoft 365 experiences with external systems, such as Salesforce, Zendesk, and ServiceNow. 

Why Copilot for Service is the right solution 

Today, it is possible to build your own copilots using Copilot Studio, formerly known as Power Virtual Agents. With Copilot Studio, you can create a bot that addresses a specific topic (for example, “get order status”) or you can use plugins to leverage copilots and bots you have already built. Plugins let you connect to external data sources, and you can use them across Copilots to ensure agents have a consistent experience anywhere they ask a service-related question. Agents don’t have to move between systems to find answers, which reduces the time to resolution. 

Customers can use Copilot Studio within Copilot for Service to customize and publish plugins for Copilot for Microsoft 365. For example, you can use Copilot Studio to add proprietary knowledge bases for the copilot’s real-time responses or set up authentication to ensure only authorized agents can use Copilot. Building and publishing standalone Copilot experiences for any internal or external channel requires a standalone Copilot Studio license. 

Copilot for Service removes the development overhead and will build specific copilot experiences tailored to your organization’s needs. Additionally, if you’re already using Copilot for Microsoft 365, it’s easy to extend it with role-based capabilities for agents through prebuilt connectors to other CRMs. 

Try Copilot for Service features 

This month, we’re releasing four new features in preview: 

  • Draft an email response in Outlook: Agents can select from the predefined intents for the email to be drafted and provide their own custom intent. Copilot uses the context of the email conversation and case details to produce personalized and contextual emails. 
  • Email summary in Outlook: Copilot provides an email summary capturing all the important information for agents to understand the context of the case they’re working on. Agents can save the generated summary to the connected CRM system. 
  • Case summary in Outlook: Agents can access case summaries as they work on emails from customers. They can also save the case summary to the CRM system. 
  • Meeting recap in Teams: Copilot provides a meeting summary and action items that integrate with the Teams recap, providing all the relevant follow-up items. Agents can also create CRM tasks right from the Teams recap section.

Get started with Copilot for Service 

First, create a copilot instance in your environment by navigating to https://servicecopilot.microsoft.com/ and following the prompts. You need to give it a name, a description, and a target system that you want to connect to. For example, you can create a copilot named Microsoft that can access information from Salesforce. The portal will then guide you through creating the connection and deploying the copilot. 

The second step is to test your copilot in the demo agent desktop that is automatically generated for you. You can ask your copilot questions related to the target system, such as “What products does Microsoft sell?” or “How do I create a case in Salesforce?” 

In summary, Microsoft Copilot for Service is a powerful tool that can help your agents provide better support to your customers. By leveraging the power of AI, it can provide quick and accurate answers to common questions, freeing up your agents to focus on more complex issues. To learn more, be sure to check out the partner workshop and try it out for yourself. 

Learn more

For pricing information, see Microsoft Copilot for Service—Contact Center AI | Microsoft AI  

Extend Copilot for Service with Copilot Studio: Extend your agent-facing copilot | Microsoft Learn 

Overview of Copilot for Microsoft 365: Copilot for Microsoft 365 – Microsoft Adoption 

If you are a Dynamics 365 Customer Service user, you can start using Copilot capabilities right away: Enable Copilot features in Customer Service | Microsoft Learn 

The post Use Microsoft Copilot for Service with your external CRM  appeared first on Microsoft Dynamics 365 Blog.

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Protecting Tier 0 the Modern Way

Protecting Tier 0 the Modern Way

This article is contributed. See the original author and article here.

How should your Tier 0 Protection look like?


DagmarHeidecker_0-1708345486896.png


 


Almost every attack on Active Directory you hear about today – no matter if ransomware is involved or not – (ab)uses credential theft techniques as the key factor for successful compromise. Microsoft’s State of Cybercrime report confirms this statement: “The top finding among ransomware incident response engagements was insufficient privilege access and lateral movement controls.”


 


Despite the fantastic capabilities of modern detection and protection tools (like the Microsoft Defender family of products), we should not forget that prevention is always better than cure (which means that accounts should be protected against credential theft proactively). Microsoft’s approach to achieving this goal is the Enterprise Access Model. It adds the aspect of hybrid and multi-cloud identities to the Active Directory Administrative Tier Model. Although first published almost 10 years ago, the AD Administrative Tier Model is still not obsolete. Not having it in place and enforced is extremely risky with today’s threat level in mind.


 


Most attackers follow playbooks and whatever their final goal may be, Active Directory Domain domination (Tier 0 compromise) is a stopover in almost every attack. Hence, securing Tier 0 is the first critical step towards your Active Directory hardening journey and this article was written to help with it.


 


AD Administrative Tier Model Refresher


The AD Administrative Tier Model prevents escalation of privilege by restricting what Administrators can control and where they can log on. In the context of protecting Tier 0, the latter ensures that Tier 0 credentials cannot be exposed to a system belonging to another Tier (Tier 1 or Tier 2).


 


Tier 0 includes accounts (Admins-, service- and computer-accounts, groups) that have direct or indirect administrative control over all AD-related identities and identity management systems. While direct administrative control is easy to identify (e.g. members of Domain Admins group), indirect control can be hard to spot: e.g. think of a virtualized Domain Controller and what the admin of the virtualization host can do to it, like dumping the memory or copying the Domain Controller’s hard disk with all the password hashes. Consequently, virtualization environments hosting Tier 0 computers are Tier 0 systems as well. This also applies to the virtualization Admin accounts.


 


The three Commandments of AD Administrative Tier Model


Rule #1: Credentials from a higher-privileged tier (e.g. Tier 0 Admin or Service account) must not be exposed to lower-tier systems (e.g. Tier 1 or Tier 2 systems).


Rule #2: Lower-tier credentials can use services provided by higher-tiers, but not the other way around. E.g. Tier 1 and even Tier 2 system still must be able to apply Group Policies.


Rule #3: Any system or user account that can manage a higher tier is also a member of that tier, whether originally intended or not.


DagmarHeidecker_0-1707459813959.png


 


Implementing the AD Administrative Tier Model


Most guides describe how to achieve these goals by implementing a complex cascade of Group Policies (The local computer configuration must be changed to avoid that higher Tier level administrators can expose their credentials to a down-level computer). This comes with the downside that Group Policies can be bypassed by local administrators and that the Tier Level restriction works only on Active Directory joined Windows computers. The bad news is that there is still no click-once deployment for Tiered Administration, but there is a more robust way  to get things done by implementing Authentication policies. Authentication Policies provide a way to contain high-privilege credentials to systems that are only pertinent to selected users, computers, or services. With these capabilities, you can limit Tier 0 account usage to Tier 0 hosts. That’s exactly what we need to achieve to protect Tier 0 identities from credential theft-based attacks.


 


To be very clear on this: With Kerberos Authentication Policies you can define a claim which defines where the user is allowed to request a Kerberos Granting Ticket from.


 


Optional: Deep Dive in Authentication Policies


Authentication Policies are based on a Kerberos extension called FAST (Flexible Authentication Secure Tunneling) or Kerberos Armoring. FAST provides a protected channel between the Kerberos client and the KDC for the whole pre-authentication conversation by encrypting the pre-authentication messages with a so-called armor key and by ensuring the integrity of the messages.


Kerberos Armoring is disabled by default and must be enabled using Group Policies. Once enabled, it provides the following functionality:



  • Protection against offline dictionary attacks. Kerberos armoring protects the user’s pre-authentication data (which is vulnerable to offline dictionary attacks when it is generated from a password).

  • Authenticated Kerberos errors. Kerberos armoring protects user Kerberos authentications from KDC Kerberos error spoofing, which can downgrade to NTLM or weaker cryptography.

  • Disables any authentication protocol except Kerberos for the configured user.

  • Compounded authentication in Dynamic Access Control (DAC). This allows authorization based on the combination of both user claims and device claims.


The last bullet point provides the basis for the feature we plan to use for protecting Tier 0: Authentication Policies.


 


Restricting user logon from specific hosts requires the Domain Controller (specifically the Key Distribution Center (KDC)) to validate the host’s identity. When using Kerberos authentication with Kerberos armoring, the KDC is provided with the TGT of the host from which the user is authenticating. That’s what we call an armored TGT, the content of which is used to complete an access check to determine if the host is allowed.


 


DagmarHeidecker_0-1707463029173.png


Kerberos armoring logon flow (simplified):



  1. The computer has already received an armored TGT during computer authentication to the domain.

  2. The user logs on to the computer:

    1. An unarmored AS-REQ for a TGT is sent to the KDC.

    2. The KDC queries for the user account in Active Directory and determines if it is configured with an Authentication Policy that restricts initial authentication that requires armored requests.

    3. The KDC fails the request and asks for Pre-Authentication.

    4. Windows detects that the domain supports Kerberos armoring and sends an armored AS-REQ to retry the sign-in request.

    5. The KDC performs an access check by using the configured access control conditions and the client operating system’s identity information in the TGT that was used to armor the request. If the access check fails, the domain controller rejects the request.



  3. If the access check succeeds, the KDC replies with an armored reply (AS-REP) and the authentication process continues. The user now has an armored TGT.


Looks very much like a normal Kerberos logon? Not exactly: The main difference is the fact that the user’s TGT includes the source computer’s identity information. Requesting Service Tickets looks similar to what we described above, except that the user’s armored TGT is used for protection and restriction.


 


Implementing a Tier 0 OU Structure and Authentication Policy


The following steps are required to limit Tier 0 account usage (Admins and Service accounts) to Tier 0 hosts:



  1. Enable Kerberos Armoring (aka FAST) for DCs and all computers (or at least Tier 0 computers).

  2. Before creating an OU structure similar to the one pictured below, you MUST ensure that Tier 0 accounts are the only ones having sensitive permissions on the root level of the domain. Keep in mind that all ACLs configured on the root-level of fabrikam.com will be inherited by the OU called “Admin” in our example.


DagmarHeidecker_0-1707463188790.png


 


3. Create the following security groups:


– Tier 0 Users


– Tier 0 Computer


4. Constantly update the Authentication policy to ensure that any new T0 Admin or T0 service account is covered.


5. Ensure that any newly created T0 computer account is added to the T0 Computers security group.


6. Configure an Authentication Policy with the following parameters and enforce the Kerberos Authentication policy:















(User) Accounts Conditions (Computer accounts/groups) User Sign On
T0 Admin accounts

(Member of each({ENTERPRISE DOMAIN CONTROLLERS}) Or Member of any({Tier 0 computers (FABRIKAMTier 0 computers)}))


Kerberos only

 


The screenshot below shows the relevant section of the Authentication Policy:


DagmarHeidecker_0-1707463910563.png


 


Find more details about how to create Authentication Policies at https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/how-to-configure-protected-accounts#create-a-user-account-audit-for-authentication-policy-with-adac.


 


Tier 0 Admin Logon Flow: Privileged Access Workstations (PAWs) are a MUST


As explained at the beginning of the article, attackers can sneak through an open (and MFA protected) RDP connection when the Admin’s client computer is compromised. To protect from this type of attack Microsoft has been recommending using PAWs since many years.


 


In case you ask yourself, what the advantage of restricting the source of a logon attempt through Kerberos Policies is: Most certainly you do not want your T0 Admins to RDP from their – potentially compromised – workplace computers to the DC. Instead, you want them to use a Tier 0 Administrative Jump Host or – even better – a Privileged Access Workstation. With a compromised workplace computer as a source for T0 access it would be easy for an attacker to either use a keylogger to steal the T0 Admin’s password, or to simply sneak through the RDP channel once it is open (using a simple password or MFA doesn’t make a big difference for this type of attack). Even if an attacker would be able to steal the credential of a Tier 0 user, the attacker could use those credentials from a computer which is defined in the claim. On any other computer, Active Directory will not approve a TGT, even if the user provides the correct credentials. This will give you the easy possibility to monitor the declined requests and react properly.


 


There are too many ways of implementing the Tier 0 Admin logon flow to describe all of them in a blog. The “classic” (some call it “old-fashioned”) approach is a domain-joined PAW which is used for T0 administrative access to Tier 0 systems.


 


DagmarHeidecker_0-1707468206441.png


The solution above is straightforward but does not provide any modern cloud-based security features.


“Protecting Tier 0 the modern way” not only refers to using Authentication Policies, but also leverages modern protection mechanisms provided by Azure Entra ID, like Multi-Factor-Authentication, Conditional Access or Identity Protection (to cover just the most important ones).


 


Our preferred way of protecting the Tier 0 logon flow is via an Intune-managed PAW and Azure Virtual Desktop because this approach is easy to implement and perfectly teams modern protection mechanisms with on-premises Active Directory:


DagmarHeidecker_1-1707468256678.png


 


Logon to the AVD is restricted to come from a compliant PAW device only, Authentication Policies do the rest.


 


Automation through PowerShell


Still sounds painful? While steps 1 – 3 (enable Kerberos FAST, create OU structure, create Tier 0 groups) of Implementing a Tier 0 OU Structure and Authentication Policy are one-time tasks, step 4 and 6 (keep group membership and Authentication policy up-to-date)  have turned out to be challenging in complex, dynamic environments. That’s why Andreas Lucas (aka Kili69) has developed a PowerShell-based automation tool which …



  • creates the OU structure described above (if not already exists)

  • creates the security groups described above (if not already exist)

  • creates the Authentication policy described above (if not already exists)

  • applies the Tier 0 authentication policy to any Tier 0 user object

  • removes any object from the T0 Computers group which is not located in the Tier 0 OU

  • removes any user object from the default Active directory Tier 0 groups, if the Authentication policy is not applied (except Built-In Administrator, GMSA and service accounts)


 


Additional Comments and Recommendations


Prerequisites for implementing Kerberos Authentication Policies


Kerberos Authentication Policies were introduced in Windows Server 2012 R2, hence a Domain functional level of Windows Server 2012 R2 or higher is required for implementation.


 


Authentication Policy – special Settings


Require rolling NTLM secret for NTLM authentication


Configuration of this feature was moved to the properties of the domain in Active Directory Administrative Center. When enabled, for users with the “Smart card is required for interactive logon” checkbox set, a new random password will be generated according to the password policy. See https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/whats-new-in-credential-protection#rolling-public-key-only-users-ntlm-secrets for more details.


 


Allow NTLM network authentication when user is restricted to selected devices


We do NOT recommend enabling this feature because with NTLM authentication allowed the capabilities of restricting access through Authentication Policies are reduced. In addition to that, we recommend adding privileged users to the Protected Users security group. This special group was designed to harden privileged accounts and introduces a set of protection mechanisms, one of which is making NTLM authentication impossible for the members of this group. See https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/authentication-policies-and-authentication-policy-silos#about-authentication-policies for more details.


 


Have Breakglass Accounts in place


Break Glass accounts are emergency access accounts used to access critical systems or resources when other authentication mechanisms fail or are unavailable. In Active Directory, Break Glass accounts are used to provide emergency access to Active Directory in case normal T0 Admin accounts do not work anymore, e.g. because of a misconfigured Authentication Policy.


 


Clean Source Principle


The clean source principle requires all security dependencies to be as trustworthy as the object being secured. Implementation of the clean source principle is beyond the scope of this article, but explained in detail at Success criteria for privileged access strategy | Microsoft Learn.


 


Review ACLs on the Root-level of your Domain(s)


The security implications of an account having excessive privileges (e.g. being able to modify permissions at the root-level of the domain are massive. For that reason, before creating the new OU (named “Admin” in the description above), you must ensure that there are no excessive ACLs (Access Control List) configured on the Root-level of the domain. In addition to that, consider breaking inheritance on the OU called “Admin” in our example.