...
SQL Server can only backup and restore databases to files on a local disk. When you run SSMS you can build a backup or restore request for a *.bak file on a network disk you have access to, but when that request is sent to the SQL Server it cannot access the network share so the backup fails.
Hyper-V runs as System and only has access to files on local disks. Every VHDX that you attach to a VM and every ISO DVD image that you mount has to be local. To import a previously exported VM, the files generated by the export have to be on local disk.
Typically, an administrator has to do a Remote Desktop login to a machine and copy network files to a local disk before a restore, import, or mount operation or copy/move files from local to network disk after a backup or export operation.
...
Hyper-V can only start a VM if all its VM VHDX disk files and ISO DVD image files are on a local disk, and it can only export/import a VM to local directories.
In some cases, the utility that you are running under your userid may have access to a file through your logon that the background service cannot access. You may be able to build a SQL Server backup request or configure a VM through the Hyper-V manager, but when you try to run the backup or start the VM, that will fail. Typically, an administrator learns to copy files to local disk before an operation and then move or copy files to a network disk when they are no longer needed.
Local User SIDs created by You
Yale Security Policy expects users to login with their Yale Netid to Yale Managed Workstations and other computers that are Yale owned and on the Yale network. This section describes the security procedures for personally owned computers Hyper-V VMs that run inside your laptop or personally owned computers on a home network.
A Local User is an account you create when you are acting as an administrator of your Windows 10 or 11 computer11 or Windows Server VM. You assign a name and a password to the account and then add it to local groups. A local user can login to the machine, own files, and can be given various permissions.
The SID for a Local User account is unique on to the one machine where it was created and is meaningless on other machines. You can see this by logging in as a non-admin Local User, creating a file on an NTFS formatted thumb drive, and then move the drive to another computer. The other computer has no idea who owns or created the file because the Local SID generated by that computer is meaningless to other machines.
...
Personally owned machines or VMs are not members of an AD Domain, but they can be on the same home or small business network. To allow simple administration and file sharing between Windows 11 computers on such networks, Microsoft has a form of Network Authentication for a “workgroup” with only Local Users.
If you create two Local Users on two personally owned computers and give each the same username and password, then the two accounts have different SIDs on each machine. If you put a file on a USB disk and move it between machinesto the other machine, the SID will not be recognized on the machine that did not create it.
However, if one machine shares a directory and the other machine maps that shared disk to an unused disk letter, now “workgroup” authentication now applies over the network.
Traditionally workgroup For thirty years, Workgroup authentication has used a protocol called NTLM (or NTLMv2 in its latest version). Starting with some future version of Windows 11 after 24H2 Microsoft will be adding a new protocol based on Kerberos called LocalKDC. The difference between the two , but the switch will be transparent to end users.
Either wayUsing either NTLM or LocalKDC, the two workgroup computers will, without transmitting the password, agree verify that the server computer has a userid with the same name as the user currently logged into the client machine, and the password associated with this userid is the same on both machineseach has the same password for this userid. The Server end of the connection assigns it matching Local User its local user SID to the session, and the client computer has access, through the network, to the same files, SQL Server logins, and admin services that are permitted to that Local User.
Normally, users just learn to install their same userid and password as a Local User (typically in the Administrators group) on all of the computers and VMs that they install or their home network and then they have access across the network to all services and files on all machines. They may never bother to learn terms like “workgroup”, “SID”, or “NTLM”.
Fully Qualified Usernames
While two userids the Server permits to its local user.
The technical details of how and why it works are unimportant to most users. Typically, someone will simply define all the same userids and passwords on all computers and VMs and they will simply be able to talk to each other. A developer may do something a bit more complicated and is then better off to understand what is going on inside the box.
Fully Qualified Usernames
While two userids with the same password match each other and allow access over the network, they still have different SIDs, and this may be important when you move disks from one computer to another. There is a Windows notation to explicitly prefix a username with the machine or AD domain where it was defined.
...
If bellman logged into SNARK contacts BOOJUM through the network, then BOOJUM verifies that it has a local user also named “bellman” and that the password for “bellman” is the same on both BOOJUM and SNARK. So, it It then assigns the SID of BOOJUM\bellman to this the network session and allows the remote client to access files as BOOJUM\bellman.
Active Directory Domain User SIDs
University and corporate systems assign centrally defined Domain User accounts through Active Directory. AD provides a set of central servers where administrators can create User accounts with a userid (the Netid), password, and a Domain generated SID. Administrators also join computers to the AD. Once a computer joins a Domain, it can login Domain Users, run programs under the Domain SID, and assign file and directory ownership and permissions to that SID. Everything that can be done with a Local User SID can also be done with a Domain SID, but Domain SIDs are the same on all computers that are a member of the Domain.
Yale Security Policy requires you to use your Yale AD account to login to Managed Workstations and other Yale owned computers performing Yale business. This allows the University to enforce minimal security standards.
Active Directory provides a set of accounts and SIDs that are shared between machines. When a computer joins the AD, it continues to have local user account but in addition can allow AD SIDs to login, create, and access files. The AD has its own nickname, and the nickname of the Yale AD is “YALE”. So to extend this example, assume that “bellman” is also the Netid (Userid in the Yale AD) of the person who owns the computers SNARK and BOOJUM, and he joins both machines to the Yale AD.
The account in the Yale AD for Userid “bellman” is identified as “YALE\bellman” and is a SID that is different from both SNARK\bellman and BOOJUM\bellman. However, once the two computers are joined to the AD, they can have logins, user profile directories, and file permissions for “YALE\bellman” as well as their own local “bellman” user.
The user can login to SNARK as either the domain account YALE\bellman or the local account SNARK\bellman. These are, however, two completely different users with different SIDs and there is no way to connect them. Even if YALE\bellman has the same password as SNARK\bellman, when the user is logged in as YALE\bellman he has no access to SNARK\bellman files, unless he logs on as SNARK\bellman first and grants permission to his Yale Domain user account to also access his local files. Even then, they are two separate users who have just granted each other permission to use each other’s files.
However, files created and permissions granted to YALE\bellman on either SNARK or BOOJUM are assigned to the same YALE Domain SID and they do work across machines. If YALE\bellman creates files or grant permissions to a file on an NTFS thumb drive attached to SNARK, then moves the drive to BOOJUM, then BOOJUM knows these files and permissions belong to YALE\bellman and will grant permission to access those files when YALE\bellman logs in or accesses the files over the network.
Your Own Domain Controller
Creating your own private AD is something that ordinary people don’t do. Anyone at Yale has a license to use Windows Server, and if they create a Windows Server VM, then with a few commands they can create their own AD Domain. When you create your own Domain this way, there is a special interaction between what were previously Local Users (before you created the Domain) who then also become Domain account (particularly Admins). This article would not be complete without documenting this special case.
Start with a spare computer or a VM running Windows Server. It needs a computer host name, so we will call it FIT (not an acronym, a word from the Louis Carroll Snark book). Our previous userid “bellman” is added as a local Administrator of this computer when the system is installed and is given the same password it had on the other machines. This means, of course, that it gets yet another SID (FIT\bellman) that local to and initially only meaningful on FIT, and “bellman” on other computers can access this account using Workgroup authentication.
Now two PowerShell commands documented elsewhere can transform the FIT machine into the Domain Controller of a new AD. The AD has its own name, which we will call “HUNTING”.
When the AD is created, the local administrators of the FIT Server now become administrators of the HUNTING AD Domain. Because an unknown amount of time has passed since the Server was installed, and because many files and directories may be owned or permitted to the SID of the local user FIT\bellman, it is not possible to change that SID when FIT\bellman also becomes HUNTING\bellman. So, the old Local User SID is copied to the AD and becomes the AD SID of HUNTING\bellman.
This connection aliasing Local and Domain accounts occurs only during the creation of the AD, so before you create the AD you should create all the Local User accounts that you need to behave this way.
As long as the AD continues to exist, there is no meaningful difference between a network session that authenticated to the computer through NTLM/LocalKDC as FIT\bellman and a network session that authenticated through the AD as HUNTING\bellman. Both sessions have the privileges of a Local User, Local Administrator, and Domain Admin. All programs in the sessions run under the same SID, and all operations they perform and commands they issue have both Local and Domain privileges.
This is, however, quite useful to a developer Sandbox because it means that computers and VMs that are not members of the Domain can interact with the Domain using NTLM/LocalKDC authentication as the Local User account.
This works for access to files and directories owned by or permitted to BOOJUM\bellman. It also works for SQL Server sessions using Windows authentication, which are then associated with the SQL Server login identified as BOOJUM\bellman (even though the remote client is really SNARK\bellman). It also works for Windows admin command that can be directed over the network to another computer.
There is, however, no way to generate a permission on a network session for a specific user on a remote computer. The user SNARK\baker could not connect to BOOJUM at all unless there is a BOOJUM\baker with the same password, and SQL Server can only generate Logins for Local Users (and Domain Users if the machine is also a member of a Domain).
Active Directory Domain User SIDs
Even before Microsoft created Active Directory, a Domain was a set of userids with SID values that could be shared on multiple machines over a network. When a user is defined in a Domain, then a SID is created. Other machines that are members of the same Domain can create accounts on the machine for that Domain user, and when they do so they copy the SID from the Domain controller to their local account database.
If we now repeat the previous experiment and transfer a file from one computer to another computer using a USB drive formatted with the NTFS file system, then a file created by a Domain user account on one machine will be recognized by another machine in the same Domain because all the Domain SID values are known and shared by all the computers in the Domain.
Yale Security Policy requires you to use your Yale AD account to login to Managed Workstations and other Yale owned computers performing Yale business. This allows the University to enforce basic security standards.
So, if “bellman” is a Yale Netid, and SNARK and BOOJUM are Yale machines, then there would be only one userid named YALE\bellman, it would be the same on both machines, it would have the same SID on both machines, and disks could be freely moved from one machine to the other.
While it is not allowed by YALE policy, there can be both a Doman account with a given user name and a Local account with the same username. It is possible for SNARK to have both a SNARK\bellman local user and a YALE\bellman Domain account. These are two entirely different people, with different files and permissions and separate home directories.
If someone is logged into a computer with a Domain account, then Kerberos protocol is used to authenticate to the login machine and to all other computers anywhere in the world that are members of the same Domain. If someone is logged on to a computer with a local user, then workgroup authentication is used to other computers, but typically those computers will be on the same LAN.
Your Own Domain Controller
You can only create an AD on a Windows Server machine. It can be a real computer or a VM. Yale’s site license allows anyone at Yale to run Windows Server, but it is not a very good choice for a personal computer. It lacks end user features like Windows Store, drivers for devices that servers don’t use (like WebCams for meetings), and other things you use every day. However, Windows Server is easy to install as a VM.
There is a Server Manager with a menu interface to add the Active Directory Role to the server and then configure your own single-machine AD. Alternately, you can do this with two PowerShell commands.
However, before you create the AD, you should create Local Users who are going to be in the Administrators group of the Server. That is because when you create the AD, they become Domain Admins.
Start by creating a Windows Server VM. At this point it is just a Windows machine and needs a hostname, so we will call it FIT. Create a local user “bellman” and put him in the Administrator’s group. Create other admins as desired. At this point the Server is temporarily just a Workgroup machine and it can interact with other computers and VMs using workgroup rules.
Now two PowerShell commands documented elsewhere can transform the FIT machine into the Domain Controller of a new AD. Every AD must have its own DNS server, and it needs a new DNS name that will be known to that server plus a nickname. We give it the DNS name of hunting.yale.sandbox and nickname of HUNTING.
When the AD is created, the local administrators of the FIT Server now become administrators of the HUNTING AD Domain. Because an unknown amount of time has passed since the Server was installed, and because many files and directories may be owned or permitted to the SID of the local user FIT\bellman, it is not possible to change that SID when FIT\bellman also becomes HUNTING\bellman. So, the old Local User SID is copied to the AD and becomes the AD SID of HUNTING\bellman.
This connection aliasing Local and Domain accounts occurs only during the creation of the AD, so before you create the AD you should create all the Local User accounts that you need to behave this way.
In a corporate or campus AD, the Domain servers provide a widely used public service, but nobody is allowed to login to these machines except for a small number of specially trusted users. This is a Sandbox AD. You are the only one who will ever use it, and your VMs and test users are the only ones who will use it. So, it is convenient for you to be easily able to access it from all your computers.
So in this case, if you are “bellman” or if you added your real userid to the Administrators group before creating the AD Domain, you can now access the Windows Server and all the AD services and interfaces using either a Domain Admin account login (like HUNTING\bellman) to a computer in the domain (like FIT), or else you can still use workgroup authentication and send AD requests and commands from other computers in the network using NTLM/localKDC protocol from a login as SNARK\bellman or BOOJUM\bellman. Because the local userid FIT\bellman is the same SID as the Domain user HUNTING\bellman, once a network request is received by the machine, it gets the same SID and is handled the same way whether the request authenticated using workgroup or Kerberos protocol.
Impersonate
All programs run under a SID. Some programs run in the background under Microsoft built in SIDs like SYSTEM. Other programs inherit from the session the SID of the User that authenticated to the computer.
...