인증서 기반 인증 또는 앱 전용 인증 설정

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기8분
  • 애플리케이션 객체를 사용한 인증에는 초기 온보딩이 필요합니다. 응용 프로그램과 서비스 주체는 같은 의미로 사용되지만 응용 프로그램은 클래스 개체와 같고 서비스 주체는 클래스의 인스턴스와 같습니다.

    Azure Active Directory의 애플리케이션 및 서비스 주체 개체에 대한 자세한 내용은 Azure Active Directory의 애플리케이션 및 서비스 주체 개체를 참조하세요. Azure AD에서 응용 프로그램을 만드는 방법에 대한 자세한 시각적 흐름은 리소스에 액세스할 수 있는 Azure Active Directory 응용 프로그램 및 서비스 주체 만들기를 참조하세요.

    인증서 기반 인증 또는 앱 전용 인증을 설정하려면 다음 단계를 수행합니다.
    1. Azure AD에 응용 프로그램을 등록합니다.
    2. 애플리케이션에 API 권한을 할당합니다.

      응용 프로그램 개체가 리소스에 액세스하려면 Exchange.ManageAsAppMail.ReadWrite 사용 권한이 있어야 합니다.

    3. 자체 서명된 인증서를 생성하고 개인 키에 대한 액세스 권한을 부여합니다.

      앱 전용 액세스 토큰을 요청하는 동안 Azure AD에 대해 응용 프로그램을 인증하는 데 사용되는 자체 서명된 X.509 인증서를 만들고 구성합니다. CNG(Next Generation) 인증서는 Exchange를 사용한 앱 전용 인증에 지원되지 않습니다. CNG 인증서는 최신 Windows 버전에서 기본적으로 만들어집니다. CSP 키 제공자의 인증서를 사용해야 합니다. (-Provider = 'Microsoft Strong Cryptographic Provider')입니다.

    4. Azure AD 애플리케이션에 인증서를 연결합니다.
    5. 애플리케이션에 Azure AD 역할을 할당합니다.

      애플리케이션에는 규정 준수 관리자 Azure AD 역할이 할당되어 있어야 합니다.

    6. 새 서비스 주체를 만듭니다.

    1단계: Azure AD에서 응용 프로그램 등록

    1. Azure AD 포털을 엽니다.
    2. 페이지 맨 위에 있는 검색 상자에 앱 등록을 입력합니다.
    3. 서비스 섹션의 결과에서 앱 등록을 선택합니다.

      또는 https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade 를 사용하여 앱 등록 페이지로 이동할 수 있습니다.

    4. 앱 등록 페이지에서 새 등록을 선택합니다.
    5. 애플리케이션 등록 페이지에서 다음 설정을 구성합니다.
      필드 설명
      이름 설명적인 내용을 입력합니다. 예를 들어 ExO PowerShell CBA입니다.
      지원되는 계정 유형 이 조직 디렉터리의 계정 전용(<YourOrganizationName> 전용 - 단일 테넌트)이 선택되어 있는지 확인합니다.

      Exchange Online 위임된 시나리오에 대해 애플리케이션을 다중 테넌트로 만들려면 모든 조직 디렉터리의 계정(모든 Azure AD 디렉터리 - 다중 테넌트) 값을 선택합니다.

    6. 앱 등록을 완료한 후 등록 을 선택하고 앱 페이지를 닫습니다.

    2단계: 애플리케이션에 API 권한 할당

    이 섹션의 절차는 새 앱에 대해 자동으로 구성된 모든 기본 권한을 대체합니다. 앱에는 대체된 기본 권한이 필요하지 않습니다.

    1. 앱 페이지의 Management(관리)에서 Manifest(매니페스트 )를 선택합니다.
    2. 매니페스트 페이지에서 requiredResourceAccess 항목(47줄 또는 약 47줄)을 찾습니다.
    3. 다음 코드 조각과 같이 resourceAppId, resourceAccess idresourceAccess 형식 값을 수정합니다.
      "requiredResourceAccess": [
      		{
      			"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
      			"resourceAccess": [
      				{
      					"id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
      					"type": "Role"
      				}
      			]
      		},
      		{
      			"resourceAppId": "00000003-0000-0000-c000-000000000000",
      			"resourceAccess": [
      				{
      					"id": "e2a3a72e-5f79-4c64-b1b1-878b674786c9",
      					"type": "Role"
      				}
      			]
      		}
      	],
    4. 저장을 선택합니다.
    5. 매니페스트 페이지의 관리에서 API 권한을 선택합니다.
    6. API 권한 페이지의 필드에 내용을 입력합니다.
      필드 설명
      API / 권한 이름 Exchange.ManageAsAppMail.ReadWrite 값이 표시되는지 확인합니다.
      상태 현재 잘못된 값은 <조직>에 부여되지 않으며 이 값을 변경해야 합니다.

      <조직>에 대한 관리자 동의 부여를 선택하고, 열리는 확인 대화 상자를 읽은 다음, 예를 선택합니다.

      이제 <조직>에 대해 상태 값을 부여해야 합니다.

    7. 현재 API 권한 페이지(브라우저 탭이 아님)를 닫고 앱 등록 페이지로 돌아갑니다.

    3단계: 자체 서명된 인증서 생성 및 개인 키에 대한 액세스 권한 부여

    다음을 수행하여 자체 서명된 x.509 인증서를 만듭니다.
    • 관리자 권한(관리자 권한으로 실행) Windows PowerShell 세션에서 New-SelfSignedCertificate, Export-CertificateExport-PfxCertificate cmdlet을 사용하여 자체 서명된 인증서를 요청하고 .cer및 .pfx (기본적으로 SHA1)로 내보낼 수 있습니다. 예:
      # Create certificate
      $mycert = New-SelfSignedCertificate -DnsName "snowsecops.onmicrosoft.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(2) -KeySpec KeyExchange -Provider "Microsoft Strong Cryptographic Provider"
      
      # Generate password fro private key
      $mypwd = ConvertTo-SecureString -String '<password>' -Force -AsPlainText
      
      # Export certificate to .pfx file
      $mycert | Export-PfxCertificate -FilePath mycert.pfx -Password $mypwd
      
      # Export certificate to .cer file
      $mycert | Export-Certificate -FilePath mycert.cer
    • 다음 단계를 사용하여 MID 서비스 사용자에게 개인 키 액세스를 제공합니다.
      1. MMC(Microsoft Management Console)를 엽니다.
      2. MMC(Microsoft Management Console)에서 인증서(로컬 컴퓨터) > 개인 > 인증서.

        (MMC에 메뉴 항목이 없는 경우 다음으로 이동하여 추가합니다. 파일 > 스냅인 제거 추가.

      3. 생성한 인증서를 마우스 오른쪽 버튼으로 클릭합니다.
      4. 확장 모든 작업 > 개인 키 관리
      5. 접근자 목록에 MID 서비스 사용자를 추가합니다.

    4단계: Azure AD 응용 프로그램에 인증서 연결

    애플리케이션에 인증서를 등록한 후 지문을 인증에 사용할 수 있습니다.
    1. 2단계 끝에 있는 Apps registration(앱 등록) 페이지의 Owned applications(소유 애플리케이션) 탭에서 애플리케이션을 선택합니다.

      앱 등록 페이지로 돌아가야 하는 경우 를 사용하여 https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/%7E/RegisteredApps소유 애플리케이션 탭이 선택되어 있는지 확인한 다음 애플리케이션을 선택합니다.

    2. 관리에서 인증서 & 비밀을 선택합니다.
    3. 인증서 및 비밀 페이지가 열리면 인증서 업로드를 선택합니다.
    4. 3단계에서 만든 자체 서명된 인증서(.cer 파일)를 찾습니다.
    5. 완료 후 추가를 선택합니다.

      이제 인증서가 인증서 섹션에 표시됩니다.

    6. CertificateThumbPrint를 적어 두고 현재 인증서 & 비밀 페이지를 닫습니다.

    5단계: 애플리케이션에 Azure AD 역할 할당

    1. Azure AD 포털을 엽니다.
    2. 페이지 맨 위에 있는 검색 필드에서 역할 및 관리자를 찾습니다.
    3. 서비스 섹션의 결과에서 Azure AD 역할 및 관리자를 선택합니다.

      또는 https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade 를 사용하여 Azure AD 역할 및 관리자 페이지로 이동할 수 있습니다.

    4. Azure AD 역할 및 관리자 페이지에서 결과의 역할 이름(확인란 아님)을 클릭하여 지원되는 역할 중 하나를 찾아 선택합니다.

      규정 준수 관리자 역할을 찾아 선택합니다.

    5. Assignments(할당) 페이지에서 Add assignments(할당 추가)를 선택합니다.
    6. 과제 추가 팝업에서 1단계에서 만든 앱을 찾아 선택합니다.
    7. 완료 후 추가를 선택합니다.
    8. 할당 페이지로 돌아가서 역할이 앱에 할당되었는지 확인합니다.

    6단계: 새 서비스 주체 만들기

    중요사항:
    새 서비스 주체를 만드는 단계를 완료하기 전에 보안 & 준수 PowerShell 에 연결했는지 확인합니다. PowerShell에 연결하지 않고 새 서비스 주체를 만드는 것은 작동하지 않습니다(새 서비스 주체를 만들려면 Azure 앱 ID 및 개체 ID가 필요함).
    1. 다음 명령을 실행하여 1단계에서 등록한 Azure 응용 프로그램의 세부 정보(<AppName>)를 변수에 저장합니다.
      Install-Module -Name AzureAD 
      Import-Module -Name AzureAD 
      Connect-AzureAD 
      $AADApp = Get-AzureADServicePrincipal -SearchString"<AppName>"

      자세한 구문 및 매개 변수 정보는 Get-AzureADServicePrincipal을 참조하세요.

    2. 동일한 PowerShell 창에서 보안 & 준수 PowerShell에 연결합니다.
      Import-Module ExchangeOnlineManagement
      Connect-IPPSSession -CertificateThumbPrint "<Your_Certificate_ThumbPrint>" -AppID $AADApp.AppId -Organization "<Your_organization>
      다음 명령을 실행하여 Azure 애플리케이션에 대한 서비스 주체 개체를 만듭니다.
      New-ServicePrincipal -AppId $AADApp.AppId -ObjectId $AADApp.ObjectId -DisplayName "<Descriptive Name>"

      구문 및 매개 변수에 대한 자세한 내용은 New-ServicePrincipal을 참조하십시오.