BeyondTrust/POV

← Back to dashboard

Active Directory in the cloud

Audience: operator · Profile: demo · Read this when: you want Windows servers on AWS, GCP or Azure joined to an Active Directory domain that runs in the cloud: one built here, or one that already exists.

Part of Directories.

All three clouds sell a managed Active Directory, and the Directories page can:

Azure VMs can also join Entra ID directly, without a domain (see Windows servers). Entra Domain Services is for servers that need Kerberos, LDAP or Group Policy. A VM joins one or the other, not both.

To join servers to the domain you already run on-premises instead of building one, see On-premises directories.

What a directory costs, and why nothing deletes one

A managed directory runs two domain controllers around the clock:

Option Approximate list price
AWS Managed Microsoft AD, Standard about $150–200/month
AWS Managed Microsoft AD, Enterprise about $600/month
GCP Managed Microsoft AD about $300/month per region
Entra Domain Services, Standard about $110/month
Entra Domain Services, Enterprise about $290/month
Entra Domain Services, Premium about $1,170/month

Check the cloud's pricing page for current figures. The build form makes you confirm the cost.

Directories get no auto-delete timer by default, because deleting one breaks every server joined to it. You can still set one through the auto-delete timer controls on the Inventory page. A timer is honoured for a directory built here, and is never allowed on a registered one.

Destroy is refused while any dashboard VM is still joined. The error names the VMs. Destroy them, or take them out of the domain, first. A registered directory is never destroyed: deleting it on this page only forgets it.

Building one

Directories → Build directory, then choose:

The build runs Terraform from terraform/directory/aws_managed_ad or terraform/directory/gcp_managed_ad, and records its state like every other dashboard resource (see Infrastructure as Code).

The administrator credential

The directory's delegated administrator (Admin on AWS, setupadmin on GCP) is a domain-admin credential, so it follows the same rules as Windows server passwords:

If storing the password fails after the directory exists, the build still completes with a warning. Use Reset admin password to set and store a new one. A registered directory has no stored credential, because joining a server does not need one.

Discovering and registering existing directories

Directories → Discover existing lists what the account already has:

Only an Active (AWS) or READY (GCP) directory can be registered. Registering re-reads the directory from the cloud rather than trusting the page, and writes nothing to the cloud.

Joining a Windows server

On the AWS or GCP deploy form, pick a directory under Join Active Directory, and optionally an OU. The default OU is directory_join_default_ou; blank means the domain's default Computers container. The picker lists only available directories on that cloud, and on AWS only those in the deploy's region. It is ignored for Linux images.

Neither cloud needs a domain credential from the dashboard.

AWS: after the Administrator password is captured, the deploy waits for the instance to come online in Systems Manager, then runs AWS-JoinDirectoryServiceDomain (AWS's seamless domain join). The instance reboots. Requirements:

GCP: the instance is created with managed-ad-domain metadata, and the guest agent joins during first boot. Requirements:

managed-ad-domain-join-failure-stop is set to false, so a failed join still leaves a reachable server.

A join that cannot be attempted, or that fails, is a warning on the deploy job (ad_join_error), not a failed deploy. The local administrator, stored or managed by Password Safe, still reaches the server. A successful join is recorded as ad_joined on the job; GCP's is recorded when the join is requested, because the guest performs it. That record is what the destroy guard counts.

Destroying a joined server does not remove its computer object from AD. Neither cloud does that, and removing it needs domain credentials on a host that can reach a domain controller. Clean up stale computer objects with your normal AD tooling.

Entra Domain Services

Azure's managed Active Directory. It differs from the AWS and GCP ones in one way that shapes everything else: it has no administrator of its own. Its admins are Entra users in the tenant's AAD DC Administrators group, and their passwords sync from Entra. The dashboard creates no user and changes no group, so there is no administrator password to store or reset.

Instead, you pin a join account: an existing member of AAD DC Administrators, held in Password Safe as a managed account. Azure VMs join the domain as that account. Its password is checked out of Password Safe for each join, passed only to the VM extension's protected settings, and never stored by the dashboard or written to the job. Pin it on the build form, or later with Join account on the directory's row. Use the account's UPN (joiner@contoso.com) as the account name; a bare name gets the managed domain appended.

Before you build. The build is refused, before anything is created, when:

The dashboard runs none of those commands itself.

The build form asks for:

It runs Terraform from terraform/directory/azure_managed_ad.

After the build, a cloud-only Entra user must change their password once before they can sign in to the managed domain: Entra only syncs the password hashes the domain needs when a password is set. Synced users need password-hash sync on in Entra Connect. The build job lists what is still to do.

Joining a VM. On the Azure deploy form, a Windows image offers Join Active Directory. A directory with no join account is listed but cannot be picked. After the VM is created, the JsonADDomainExtension VM extension joins it, optionally into an OU, and the VM reboots. A failed join is a warning on the deploy job and the VM keeps its local administrator. A VM joins Entra ID or a managed AD domain, not both: picking a directory turns off Join to Microsoft Entra ID.

Reset admin password is not offered: reset an admin's password in Entra, or rotate the join account in Password Safe.