HoloLens의 공유 Microsoft Entra 계정

HoloLens의 공유 Microsoft Entra(이전의 Azure Active Directory) 계정은 자격 증명 없이 HoloLens에 로그인할 수 있는 일반 Microsoft Entra 사용자 계정입니다. 이 설정은 다음 조건이 충족되는 시나리오에 적합합니다.

  • 여러 사람이 동일한 HoloLens 디바이스 집합을 공유합니다.
  • Dynamics 365 Guides 콘텐츠와 같은 Microsoft Entra 리소스에 액세스해야 합니다.
  • 디바이스를 사용한 사용자를 추적할 필요는 없습니다.

공유 Microsoft Entra 계정 사용의 주요 이점

  • 간소화된 배포. 이전에는 여러 사용자 간에 공유되는 Microsoft Entra 계정을 설정하려면 각 디바이스를 수동으로 설정해야 했습니다. 공유 Microsoft Entra 계정을 사용하면 환경을 한 번 구성하고 Autopilot의 일부로 디바이스에 자동으로 배포할 수 있습니다.
  • 뛰어난 사용자 환경. 공유 Microsoft Entra 계정의 사용자는 디바이스 사용을 시작하기 위해 자격 증명을 입력할 필요가 없습니다. 탭하고 이동합니다!
  • Microsoft Entra 리소스에 대한 액세스. 공유 Microsoft Entra 계정 사용자는 Microsoft Entra 리소스에 쉽게 액세스할 수 있으므로 추가 인증 없이 원격 지원 통화를 시작하거나 가이드를 열 수 있습니다.

중요

공유 Microsoft Entra 계정은 자격 증명을 입력하지 않고 HoloLens 디바이스에서 액세스할 수 있으므로 권한 있는 직원만 액세스할 수 있도록 이러한 HoloLens 디바이스를 물리적으로 보호해야 합니다. 조건부 액세스 정책을 적용하고, 셀프 서비스 암호 재설정을 사용하지 않도록 설정하며, 이러한 계정이 사용되는 디바이스에 할당된 액세스 프로필을 구성하여 이러한 계정을 잠글 수도 있습니다.

참고

이러한 계정은 공유 계정이므로 이러한 계정을 사용하는 사용자에게 PIN 및 홍채 등록, 생체 인식 데이터 수집 알림 및 다양한 동의 화면을 비롯한 일반적인 첫 번째 로그인 설정 화면이 표시되지 않습니다. 정책을 통해 이러한 계정에 대해 적절한 기본값을 구성하고(HoloLens 2 빠르게 사용자 설정 참조) 사용자가 이러한 기본값을 알고 있는지 확인해야 합니다.

공유 Microsoft Entra 계정의 알려진 제한 사항

  • 공유 Microsoft Entra 계정은 PIN 또는 홍채를 사용하여 등록한 경우에도 현재 릴리스에서 로그인할 수 없습니다.

공유 Microsoft Entra 계정의 개념 개요

이 프로세스를 통해 HoloLens 디바이스에 사용자 계정을 할당하고 디바이스에 연결된 자격 증명 및 디바이스만으로 해당 사용자 계정에 로그인할 수 있습니다. 이미지는 프로세스를 설명합니다.

공유 계정 다이어그램

  1. Intune에는 SCEP 서비스에 대한 SCEP 구성 프로필이 있습니다.
  2. 디바이스는 Intune에 조인하고 프로필 정보를 받습니다.
  3. 디바이스는 SCEP 서비스에 연결하고 의 UPN HL-{Serial}@contoso.com을 사용하여 디바이스 인증서를 수신합니다.
  4. 디바이스는 인증서를 MFA로 사용하여 Entra ID의 부식 사용자 계정에 로그인하여 원활한 로그온 환경을 제공합니다.

디바이스에서 인증서를 제거/내보낼 수 없으며 사용자 계정은 다른 형태의 MFA를 사용할 수 없으므로 구성됩니다. 이 구성을 통해 공유 계정은 HoloLens 디바이스에서만 로그인할 수 있습니다.

공유 Microsoft Entra 계정을 구성하는 단계 개요

HoloLens의 공유 Microsoft Entra 계정은 CBA(Microsoft Entra 인증서 기반 인증)에 대해 구성된 일반 Microsoft Entra 사용자 계정으로 구현됩니다.

상위 수준에서 공유 Microsoft Entra 계정 구성에는 다음 단계가 포함됩니다.

  1. (권장) Autopilot을 사용하여 Microsoft Entra 가입하고 Intune에 등록하도록 대상 디바이스를 구성합니다.
  2. 선택한 계정 그룹에 Microsoft Entra CBA를 사용하도록 Microsoft Entra 테넌트 구성
  3. 다음과 같은 디바이스의 선택 그룹에 디바이스 구성을 적용하도록 Microsoft Intune 구성합니다.
    1. Intune의 SCEP 인증서 프로필을 통해 MICROSOFT ENTRA CBA에 사용되는 클라이언트 인증서를 디바이스에 배포합니다.
    2. 디바이스가 클라이언트 인증서의 발급자를 신뢰할 수 있도록 CA 인증서를 배포합니다.
    3. MICROSOFT ENTRA CBA에 유효한 인증서를 디바이스에 지시하는 공유 계정 구성을 배포합니다.
  4. 공유 Microsoft Entra 계정에 대한 개별 디바이스를 준비합니다.

사전 요구 사항

공유 Microsoft Entra 계정 지원은 Microsoft HoloLens 빌드 10.0.22621.1217에 대한 참가자 미리 보기부터 사용할 수 있습니다.

HoloLens에 필요한 운영 체제를 빌드하는 것 외에도 Microsoft Entra CBA(Microsoft Entra 인증서 기반 인증을 구성하는 방법)의 필수 구성 요소를 충족해야 합니다.

마지막으로 디바이스 구성 및 클라이언트 인증서를 배포하려면 Microsoft Intune 대한 액세스 권한이 필요합니다. Intune을 통해 클라이언트 인증서를 배포하는 데 필요한 인프라는 Microsoft Intune 지원하는 인증서 유형에 대해 알아보기를 참조하세요. 이 예제에서는 SCEP 인증서를 사용합니다.

참고

Microsoft NDES 및 PKI를 비롯한 여러 옵션을 사용하여 SCEP 인증서를 배포할 수 있습니다. HoloLens의 경우 Azure 서비스를 사용하여 인증서 등록을 처리하는 것이 더 간단할 수 있습니다. (Azure Marketplace 내에서 여러 옵션을 사용할 수 있으므로 HoloLens 공유 Microsft Entra 계정에 대한 구성을 회사 PKI에서 격리할 수 있습니다.

SCEP 서비스의 주요 요구 사항은 다음과 같습니다.

  1. 서비스는 Microsoft Intune 디바이스 인증서 요청을 수락할 수 있습니다.
  2. 서비스는 정의된 EKU(클라이언트 인증 및 스마트 카드 로그온)를 사용하여 인증서를 생성할 수 있습니다.

Autopilot에 대한 디바이스를 구성하는 것이 좋습니다. Autopilot은 최종 사용자를 위한 디바이스 설정 환경을 간소화합니다.

Microsoft Entra CBA를 사용하도록 Microsoft Entra 테넌트 구성

Microsoft Entra 테넌트는 선택한 사용자 그룹에 Microsoft Entra CBA를 사용하도록 구성해야 합니다.

  1. 공유 Microsoft Entra 계정이 포함된 Microsoft Entra 그룹을 만듭니다. 예를 들어 이 그룹에 "SharedAccounts"라는 이름을 사용합니다.
  2. 공유 HoloLens 디바이스를 포함하는 Microsoft Entra 그룹을 만듭니다. 예를 들어 이 그룹에 "SharedDevices"라는 이름을 사용합니다. 이 그룹에는 나중에 디바이스 기반 Intune 구성 프로필이 할당됩니다.
  3. SharedAccounts 그룹에 MICROSOFT ENTRA CBA(인증서 기반 인증)를 사용하도록 설정합니다. 전체 단계별 가이드는 Microsoft Entra 인증서 기반 인증을 구성하는 방법을 참조하세요. 이를 설정하려면 다음과 같은 개략적인 단계가 필요합니다.
    1. (인증 기관) CA 인증서를 Microsoft Entra 추가합니다. Microsoft Entra ID 이 CA에서 발급한 클라이언트 인증서가 CBA를 수행할 수 있도록 허용합니다.
    2. "SharedAccounts" 그룹에 대해 CBA를 사용하도록 설정합니다.
    3. CA에서 발급한 인증서가 MFA를 사용할 수 있도록 CBA를 구성합니다. 이 단계는 사용자가 다른 요소를 설정하지 않고 MFA가 필요한 리소스에 액세스할 수 있도록 하기 위한 것입니다.
    4. UserPrincipalName을 통해 인증서 바인딩을 사용하도록 설정합니다.

Intune 구성

Microsoft Entra CBA에 필요한 인증서를 배포하도록 Intune을 구성해야 합니다. 또한 Intune은 MICROSOFT ENTRA CBA에 유효한 인증서를 디바이스에 지시하는 구성을 배포해야 합니다.

SCEP를 통한 클라이언트 인증서 배포

디바이스에는 MICROSOFT ENTRA CBA를 수행할 적절한 클라이언트 인증서가 있어야 합니다. SCEP 구성을 만들고 "SharedDevices"에 할당합니다.

  1. 인증서 유형: 디바이스

  2. UPN(사용자 계정 이름) SAN(주체 대체 이름) 을 추가합니다. 여기서 값은 디바이스에 할당된 공유 계정의 UPN입니다. UPN은 디바이스와 연결하기 위해 디바이스 일련 번호를 포함해야 합니다. Intune 변수 {{Device_Serial}}를 사용하여 디바이스 일련 번호를 참조할 수 있습니다. 예를 들어 공유 계정에 이름 HL-{{Device_Serial}}@contoso.com 형식이 인 경우 의 HL-123456789@contoso.com값을 입력합니다.

  3. KSP(키 스토리지 공급자): "TPM 필요, 그렇지 않으면 실패"를 선택하여 다른 곳에서 사용할 디바이스에서 인증서를 내보낼 수 없도록 합니다.

  4. 인증서에 최소한 다음 EKU (확장 키 사용)가 있는지 확인합니다.

    • 스마트 카드 로그온: 1.3.6.1.4.1.311.20.2.2
    • 클라이언트 인증: 1.3.6.1.5.5.7.3.2

    이 목록에 다른 EKU를 추가하여 MICROSOFT ENTRA CBA에 허용되는 인증서를 추가로 제한할 수 있습니다. ConfigureSharedAccount 정책에 대한 XML에 이러한 EKU를 추가해야 합니다.

SCEP 구성 예제

Intune에서 SCEP를 구성하는 방법에 대한 자세한 단계는 Microsoft Intune SCEP 인증서 프로필 사용을 참조하세요.

CA 인증서 배포

또한 디바이스는 클라이언트 인증서를 발급한 CA를 신뢰해야 합니다. 신뢰할 수 있는 인증서 구성을 만들고 "SharedDevices" 그룹에 할당합니다. 이 할당은 디바이스에 CA 인증서를 배포합니다. 설명서: Microsoft Intune 신뢰할 수 있는 인증서 프로필 만들기를 참조하세요.

ConfigureSharedAccount 정책

이 정책은 MICROSOFT ENTRA CBA에 사용할 수 있는 인증서를 디바이스에 알려줍니다. 사용자 지정 디바이스 구성 정책을 만들고 "SharedDevices"에 할당합니다.

정책 데이터 형식
./Vendor/MSFT/Policy/Config/MixedReality/ConfigureSharedAccount 문자열 또는 문자열(XML 파일)

예제 구성:

<SharedAccountConfiguration>
    <SharedAccount>
        <!--
          TODO: Replace the example value below with your issuer certificate's thumbprint.
          You may customize the restrictions for which certificates are displayed. See below.
        -->
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
    </SharedAccount>
</SharedAccountConfiguration>

Microsoft Entra CBA에 대해 인증서가 표시되는 제한을 사용자 지정할 수 있습니다. 위의 예제에서는 발급자의 인증서 지문이 제공된 값과 일치해야 합니다. 발급자의 이름에 따라 제한을 적용하거나 인증서에 대한 EKU(확장 키 사용량)에 따라 더 많은 제한을 적용할 수도 있습니다. XML을 구성하는 방법에 대한 예제 는 ConfigureSharedAccount XML 예제 를 참조하세요.

이 디바이스 구성을 저장하기 전에 ConfigureSharedAccount XML 스키마 에 지정된 스키마에 대해 XML의 유효성을 검사하여 올바른 형식인지 확인합니다.

개별 디바이스 구성

공유 Microsoft Entra 계정에 대해 구성하려는 각 HoloLens 디바이스에 대해 다음 단계를 수행합니다.

  1. SCEP를 통해 클라이언트 인증서 배포의 2단계에 지정된 형식으로 Microsoft Entra 사용자를 만듭니다. 예: HL-123456789@contoso.com
  2. 해당 사용자를 "SharedAccounts" 그룹에 추가합니다.
  3. 디바이스가 "SharedDevices" 그룹에 추가되었는지 확인합니다. Autopilot에 대한 디바이스가 이미 Microsoft Entra 있도록 먼저 구성해야 합니다.

이 프로세스를 자동화하는 데 사용할 수 있는 PowerShell 스크립트의 예제는 예제 디바이스 설정 스크립트를 참조하세요.

구성 테스트

위의 구성을 완료하면 HoloLens에서 공유 Microsoft Entra 계정을 사용해 볼 준비가 된 것입니다.

디바이스가 이미 Autopilot에 대해 구성된 경우 디바이스를 일반 Autopilot 흐름을 통해 가져옵니다. 필요한 디바이스 구성은 Autopilot 중에 적용됩니다. Autopilot 흐름이 완료되면 다음 화면이 표시됩니다.

공유 계정을 보여 주는 로그인 화면

"로그인" 단추를 탭하여 공유 Microsoft Entra 계정 사용을 시작합니다.

문제 해결

문제: 공유 Microsoft Entra 계정이 로그인 화면에 표시되지 않습니다.

솔루션: 먼저 디바이스가 올바른 인증서를 수신하고 있는지 검사. 인증서 관리자(인증서 관리자)를 열고 클라이언트 인증서와 CA 인증서가 모두 디바이스에 성공적으로 배포되었는지 확인합니다.

클라이언트 인증서의 경우 "로컬 컴퓨터"의 "내" 저장소에 설치되어 있는지 확인합니다.

인증서 위치를 보여 주는 인증서 관리자

인증서가 없는 경우 Intune SCEP 프로필에 대한 문제 해결 단계를 따릅니다.

인증서가 있는 경우 인증서가 유효한 날짜 내에 필요한 발급자 및 EKU가 있는지 확인합니다.

인증서 속성을 보여 주는 인증서 관리자

다음으로 MixedReality/ConfigureSharedAccount에 적용한 XML 정책 값이 올바른 형식인지 확인합니다. 온라인으로 여러 XSD(XML 스키마) 유효성 검사기 중 하나를 사용하여 XML이 ConfigureSharedAccount XML 스키마에 설명된 스키마를 준수하는지 검사 수 있습니다.

문제: 로그인 시도가 실패합니다.

솔루션:Microsoft Entra 인증서 기반 인증을 구성하는 방법에 대한 지침에 따라 CBA를 올바르게 구성했는지 확인합니다. 또한 MICROSOFT ENTRA CBA(인증서 기반 인증) FAQ에 대한 FAQ를 검사. Windows 데스크톱 디바이스에서 먼저 이러한 디버그 단계를 시도하는 것이 도움이 될 수 있습니다. Microsoft Entra 인증서 기반 인증을 사용하여 Windows 스마트 카드 로그인합니다.

참조

ConfigureSharedAccount XML 스키마

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="SharedAccountConfiguration">
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:element minOccurs="1" maxOccurs="1" name="SharedAccount">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:choice>
                <xsd:element name="IssuerThumbprint">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="40" />
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="IssuerName">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="512" />
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
              </xsd:choice>
              <xsd:element minOccurs="0" maxOccurs="1" name="EkuOidRequirements">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element maxOccurs="5" name="Oid">
                      <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                          <xsd:maxLength value="100" />
                        </xsd:restriction>
                      </xsd:simpleType>
                    </xsd:element>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

ConfigureSharedAccount XML 예제

발급자 인증서에 CN=yourCA, DC=Test의 주체가 있어야 합니다.

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerName>CN=yourCA, DC=Test</IssuerName>
    </SharedAccount>
</SharedAccountConfiguration>

발급자 인증서에 지정된 지문이 있어야 합니다.

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
    </SharedAccount>
</SharedAccountConfiguration>

발급자 인증서에 지정된 지문이 있고 클라이언트 인증서에 OID가 1.2.3.4.5.6 및 1.2.3.4.5.7인 EKU가 있어야 합니다.

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
        <EkuOidRequirements>
            <Oid>1.2.3.4.5.6</Oid>
            <Oid>1.2.3.4.5.7</Oid>
        </EkuOidRequirements>
    </SharedAccount>
</SharedAccountConfiguration>

EKU 1.3.6.1.4.1.311.20.2.2(스마트 카드 로그온) 및 1.3.6.1.5.5.7.3.2(클라이언트 인증)는 이 목록에 있는지 여부에 관계없이 항상 필요합니다.

디바이스 설정 스크립트 예제

이 샘플 디바이스 설정 스크립트를 사용하기 전에 참조를 "contoso"에서 도메인 이름으로 변경해야 합니다.

<#
.Synopsis
Configures a device for shared account

.Description
This script configures a device for shared account.

Note that you'll need to have the necessary permissions in your tenant to manage
user and device memberships and query Intune devices.

.Example
.\ConfigureSharedDevice.ps1 400064793157
#>


param (
    [Parameter(Mandatory = $true)]
    [string]
    # Serial number of the device. Typically a 12-digit numeric string.
    $DeviceSerialNumber,
    [string]
    # Group ID of the group that contains the shared accounts such as HL-123456789@contoso.com
    $SharedAccountGroupId,
    [string]
    # Group ID of the group that contains the shared devices
    $SharedDeviceGroupId
)

function Install-Dependencies {
    Write-Host -Foreground Cyan "Installing Dependencies..."

    if (!(Get-InstalledModule Microsoft.Graph -ErrorAction SilentlyContinue)) {
        Write-Host -Foreground Cyan "Installing Microsoft.Graph"
        Install-Module Microsoft.Graph -Scope CurrentUser -Repository 'PSGallery'
    }

    Write-Host -Foreground Cyan "Installing Dependencies... Done"
}

function New-PasswordString {
    $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+[]{}|;:,.<>/?'
    $length = 40
    $password = ""
    for ($i = 0; $i -lt $length; $i++) {
        $password += $alphabet[(Get-Random -Minimum 0 -Maximum $alphabet.Length)]
    }

    return $password
}

function New-SharedUser {
    param (
        $UserName,
        $DisplayName
    )

    # Does user already exist?
    $searchResult = Get-MgUser -Count 1 -ConsistencyLevel eventual -Search "`"UserPrincipalName:$UserName`""

    if ($searchResult.Count -gt 0) {
        Write-Host -Foreground Cyan "$UserName exists, using existing user."
        return $searchResult
    }

    $mailNickName = $UserName.Split('@')[0];

    Write-Host -Foreground Cyan "Creating $UserName"

    $passwordProfile = @{
        Password = New-PasswordString
    }

    return New-MgUser -AccountEnabled -DisplayName $DisplayName -Country US -UsageLocation US -MailNickname $mailNickName -UserPrincipalName $UserName -PasswordProfile $passwordProfile
}

function New-SharedUserForDevice {
    param (
        $DeviceSerialNumber
    )

    $userName = "HL-$DeviceSerialNumber@contoso.onmicrosoft.com"
    $displayName = "Shared HoloLens"

    return New-SharedUser -UserName $userName -DisplayName $displayName
}

function Add-UserToGroup {
    param (
        $UserId,
        $GroupId
    )

    $groupResult = Get-MgGroup -GroupId $GroupId
    if ($groupResult.Count -eq 0) {
        throw "Failed to find user group"
    }

    Write-Host -Foreground Cyan "Adding user ($UserId) to group"
    New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $UserId
}

function Get-DeviceAADId {
    param (
        $DeviceSerialNumber
    )

    $deviceResult = Get-MgDeviceManagementManagedDevice | Where-Object { $_.SerialNumber -eq $DeviceSerialNumber }

    if ($deviceResult.Count -eq 0) {
        throw "Cannot find device with serial number $DeviceSerialNumber in Intune"
    }

    $result = ($deviceResult | Select-Object -First 1).AzureAdDeviceId

    Write-Host "Found device: $result"

    return $result
}

function Add-DeviceToGroup {
    param (
        $DeviceAADId,
        $GroupId
    )

    $groupResult = Get-MgGroup -GroupId $GroupId
    if ($groupResult.Count -eq 0) {
        throw "Failed to find device group"
    }

    $deviceResult = Get-MgDevice -Count 1 -ConsistencyLevel eventual -Search "`"DeviceId:$DeviceAADId`""
    if ($deviceResult.Count -eq 0) {
        throw "Failed to find device $DeviceAADId"
    }

    Write-Host -Foreground Cyan "Adding device $($deviceResult.Id) to group"
    
    New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $deviceResult.Id
}

function Register-SharedDevice {
    param (
        $DeviceSerialNumber
    )

    Install-Dependencies

    Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.Read.All", "GroupMember.ReadWrite.All", "DeviceManagementManagedDevices.Read.All", "Device.ReadWrite.All"

    $deviceAADId = Get-DeviceAADId $DeviceSerialNumber
    Add-DeviceToGroup $deviceAADId $SharedDeviceGroupId

    $user = New-SharedUserForDevice $DeviceSerialNumber
    Add-UserToGroup $user.Id $SharedAccountGroupId
}

Register-SharedDevice $DeviceSerialNumber