다음을 통해 공유


Azure Automation 및 Microsoft Graph를 통해 Microsoft Entra ID Governance 작업 자동화

Azure Automation은 일반적인 또는 반복적인 시스템 관리 및 프로세스를 자동화할 수 있는 Azure 클라우드 서비스입니다. Microsoft Graph은 디렉터리의 사용자, 그룹, 액세스 패키지, 액세스 검토 및 기타 리소스를 관리하는 Microsoft Entra 기능에 대한 Microsoft 통합 API 엔드포인트입니다. Microsoft Graph PowerShell SDK를 사용하여 PowerShell 명령줄에서 대규모로 Microsoft Entra ID를 관리할 수 있습니다. 간단한 스크립트에서 Microsoft Entra 작업을 자동화할 수 있도록 Azure Automation의 PowerShell 기반 Runbook에서 Microsoft Graph PowerShell cmdlet을 포함할 수도 있습니다.

Azure Automation 및 PowerShell Graph SDK는 인증서 기반 인증 및 애플리케이션 권한을 지원하므로 사용자 컨텍스트 없이 Azure Automation Runbook이 Microsoft Entra ID에 인증되도록 할 수 있습니다.

이 문서에서는 Microsoft Graph PowerShell을 통해 권한 관리를 쿼리하는 간단한 Runbook을 만들어 Microsoft Entra ID Governance용 Azure Automation 사용을 시작하는 방법을 보여 줍니다.

Azure Automation 계정 만들기

이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.

Azure Automation은 Runbook 실행을 위한 클라우드 호스팅 환경을 제공합니다. 이러한 Runbook은 일정에 따라 자동으로 시작되거나 웹후크 또는 Logic Apps에 의해 트리거될 수 있습니다.

Azure Automation을 사용하려면 Azure 구독이 있어야 합니다.

필수 구성 요소 역할: Azure 구독 또는 리소스 그룹 소유자

  1. Azure Portal에 로그인합니다. Azure Automation 계정이 있는 구독 또는 리소스 그룹에 액세스할 수 있는지 확인합니다.

  2. 구독 또는 리소스 그룹을 선택하고 만들기를 선택합니다. Automation을 입력하고 Microsoft에서 Automation Azure 서비스를 선택한 다음 만들기를 선택합니다.

  3. Azure Automation 계정을 만든 후 IAM(액세스 제어)을 선택합니다. 그런 다음 이 리소스에 대한 액세스 보기에서 보기를 선택합니다. 이러한 사용자 및 서비스 주체는 이후에 해당 Azure Automation 계정에서 만들 스크립트를 통해 Microsoft 서비스와 상호 작용할 수 있습니다.

  4. 나열된 사용자 및 서비스 주체를 검토하고 권한이 있는지 확인합니다. 권한이 없는 모든 사용자를 제거합니다.

컴퓨터에서 자체 서명된 키 쌍 및 인증서 만들기

생성된 Azure Automation 계정은 개인 자격 증명 없이 작동할 수 있도록 인증서를 사용하여 Microsoft Entra ID에 대해 자체적으로 인증해야 합니다.

Microsoft Entra ID에 대한 서비스를 인증하기 위한 키 쌍과 인증 기관에서 받은 인증서가 이미 있는 경우 다음 섹션으로 건너뜁니다.

자체 서명된 인증서 생성

  1. 자체 서명된 인증서 옵션 2를 만드는 방법에 대한 지침에 따라 프라이빗 키를 사용하여 인증서를 만들고 내보냅니다.

  2. 인증서의 지문을 표시합니다.

     $cert | ft Thumbprint
    
  3. 파일을 내보낸 후 로컬 사용자 인증서 저장소에서 인증서 및 키 쌍을 제거할 수 있습니다. 이후 단계에서는, 인증서 및 프라이빗 키가 Azure Automation 및 Microsoft Entra 서비스에 업로드되면 .pfx.crt 파일도 제거합니다.

Azure Automation에 키 쌍 업로드

Azure Automation의 Runbook은 .pfx 파일에서 프라이빗 키를 검색하고 Microsoft Graph를 인증하는 데 사용합니다.

  1. Azure Automation 계정에 대한 Azure Portal에서 인증서를 선택하고 인증서를 추가합니다.

  2. 이전에 만든 .pfx 파일을 업로드하고 파일을 만들 때 입력한 암호를 입력합니다.

  3. 프라이빗 키가 업로드된 후 인증서 만료 날짜를 기록합니다.

  4. 이제 로컬 컴퓨터에서 .pfx 파일을 삭제할 수 있습니다. 그러나 이후 단계에서 .crt 파일이 필요하므로 아직 삭제하지 마세요.

Azure Automation 계정에 Microsoft Graph 대한 모듈 추가

기본적으로 Azure Automation에는 Microsoft Graph용으로 미리 로드된 PowerShell 모듈이 없습니다. 갤러리에서 Automation 계정으로 Microsoft.Graph.Authentication을 추가한 후 추가 모듈을 추가해야 합니다.

  1. Azure Automation 계정에 대한 Azure Portal에서 모듈을 선택한한 다음 갤러리를 찾아봅니다.

  2. 검색 창에 Microsoft.Graph.Authentication을 입력합니다. 모듈을 선택하고 가져오기를 선택한 다음 확인 선택하여 Microsoft Entra ID에서 모듈 가져오기를 시작하도록 합니다. 확인을 선택한 후 모듈을 가져오는 데에는 몇 분 정도 소요될 수 있습니다. 다른 모듈에는 Microsoft.Graph.Authentication이 필수 조건으로 포함되어 있으므로 Microsoft.Graph.Authentication 모듈 가져오기가 완료될 때까지 Microsoft Graph 모듈을 더 추가하지 마세요.

  3. 모듈 목록으로 돌아가서 새로 고침을 선택합니다. Microsoft.Graph.Authentication 모듈이 사용 가능으로 변경되면 다음 모듈을 가져올 수 있습니다.

  4. 자격 관리와 같은 Microsoft Entra ID Governance 기능에 cmdlet을 사용하는 경우 모듈 Microsoft.Graph.Identity.Governance에 대한 가져오기 프로세스를 반복합니다.

  5. Microsoft.Graph.Users와 같이 스크립트에 필요할 수 있는 다른 모듈을 가져옵니다. 예를 들어 ID 보호를 사용하는 경우 Microsoft.Graph.Identity.SignIns 모듈을 가져올 수 있습니다.

앱 등록 만들기 및 권한 할당

다음으로, Microsoft Entra ID에서 인증을 위해 Azure Automation Runbook의 인증서를 인식할 수 있도록 Microsoft Entra ID에서 앱 등록을 만듭니다.

필수 조건 역할: 애플리케이션 권한에 대해 애플리케이션에 동의할 수 있는 전역 관리자 또는 기타 관리자

  1. 전역 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. >ID>애플리케이션>앱 등록으로 이동합니다.

  3. 새 등록을 선택합니다.

  4. 애플리케이션 이름을 입력하고 등록을 선택합니다.

  5. 애플리케이션 등록이 만들어지면 나중에 이러한 항목이 필요하므로 애플리케이션(클라이언트) ID디렉터리(테넌트) ID 를 기록해 둡니다.

  6. 인증서 및 비밀을 선택한 다음 인증서 업로드를 선택합니다.

  7. 이전에 만든 .crt 파일을 업로드합니다.

  8. API 권한을 선택하고 권한을 추가합니다.

  9. Microsoft Graph애플리케이션 권한을 선택합니다.

  10. Azure Automation 계정에 필요한 각 권한을 선택한 다음, 권한 추가를 선택합니다.

    • Runbook이 단일 카탈로그 내에서만 쿼리 또는 업데이트를 수행하는 경우 테넌트 전체 애플리케이션 권한을 할당할 필요가 없습니다. 대신 카탈로그의 카탈로그 소유자 또는 카탈로그 읽기 권한자 역할에 서비스 주체를 할당할 수 있습니다.
    • Runbook이 권한 관리에 대한 쿼리만 수행하는 경우 EntitlementManagement.Read.All 권한을 사용할 수 있습니다.
    • Runbook이 권한 관리를 변경하는 경우(예: 여러 카탈로그에서 할당 만들기) EntitlementManagement.ReadWrite.All 권한을 사용합니다.
    • 다른 API의 경우 필요한 권한이 추가되었는지 확인합니다. 예를 들어 ID 보호를 위해 IdentityRiskyUser.Read.All 권한을 추가해야 합니다.
  11. 관리자 권한 부여를 선택하여 앱에 해당 권한을 부여합니다.

Azure Automation 변수 만들기

이 단계에서는 Runbook이 Microsoft Entra ID에 인증하는 방법을 결정하는 데 사용할 세 가지 변수를 Azure Automation 계정에 만듭니다.

  1. Azure Portal에서 Azure Automation 계정으로 돌아갑니다.

  2. 변수를 선택하고 변수를 추가합니다.

  3. 지문이라는 변수를 만듭니다. 변수의 값으로 이전에 생성된 인증서 지문을 입력합니다.

  4. ClientId라는 변수를 만듭니다. 변수 값으로 Microsoft Entra ID에 등록된 애플리케이션의 클라이언트 ID를 입력합니다.

  5. TenantId라는 변수를 만듭니다. 변수 값으로 애플리케이션이 등록된 디렉터리의 테넌트 ID를 입력합니다.

Graph를 사용할 수 있는 Azure Automation PowerShell Runbook 만들기

이 단계에서는 초기 Runbook을 만듭니다. 이 Runbook을 트리거하여 이전에 만든 인증서를 사용한 인증이 성공했는지 확인할 수 있습니다.

  1. Runbook을 선택하고 Runbook을 만듭니다.

  2. Runbook의 이름을 입력하고 만들 Runbook 유형으로 PowerShell을 선택한 다음 만들기를 선택합니다.

  3. Runbook이 만들어지면 Runbook의 PowerShell 소스 코드를 입력할 수 있는 텍스트 편집 창이 나타납니다.

  4. 텍스트 편집기에 다음 PowerShell을 입력합니다.

Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
  1. 테스트 창을 선택하고 시작을 선택합니다. Runbook 스크립트의 Azure Automation 처리가 완료되기까지 몇 초 정도 기다립니다.

  2. Runbook의 실행이 성공하면 Microsoft Graph에 오신 것을 환영합니다!라는 메시지가 나타납니다.

이제 Runbook이 Microsoft Graph에 인증할 수 있는지 확인했으므로 Microsoft Entra 기능과 상호 작용하기 위한 cmdlet을 추가하여 Runbook을 확장합니다.

자격 관리를 사용하도록 Runbook 확장

Runbook에 대한 앱 등록에 EntitlementManagement.Read.All 또는 EntitlementManagement.ReadWrite.All 권한이 있는 경우 권한 관리 API를 사용할 수 있습니다.

  1. 예를 들어 Microsoft Entra 권한 관리 액세스 패키지 목록을 얻기 위해 위에서 만든 Runbook을 업데이트하고 텍스트를 다음 PowerShell로 바꿀 수 있습니다.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
   ConvertTo-Json @()
} else {
   $ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
  1. 테스트 창을 선택하고 시작을 선택합니다. Runbook 스크립트의 Azure Automation 처리가 완료되기까지 몇 초 정도 기다립니다.

  2. 실행이 성공하면 환영 메시지 대신 출력이 JSON 배열이 됩니다. JSON 배열에는 쿼리에서 반환된 각 액세스 패키지의 ID 및 표시 이름이 포함됩니다.

Runbook에 매개 변수 제공(선택 사항)

PowerShell 스크립트 상단에 Param 섹션을 추가하여 Runbook에 입력 매개 변수를 추가할 수도 있습니다. 예를 들면 다음과 같습니다.

Param
(
    [String] $AccessPackageAssignmentId
)

허용되는 매개 변수의 형식은 호출 서비스에 따라 달라집니다. Runbook이 호출자로부터 매개 변수를 사용하는 경우 제공된 매개 변수 값이 Runbook을 시작할 수 있는 방법에 적절한지 확인하기 위해 Runbook에 유효성 검사 논리를 추가해야 합니다. 예를 들어 Runbook이 웹후크에 의해 시작된 경우 Azure Automation은 웹후크 요청이 올바른 URL에 대해 수행되는 한 인증을 수행하지 않으므로 요청의 유효성을 검사하는 대체 수단이 필요합니다.

Runbook 입력 매개 변수를 구성하면 Runbook을 테스트할 때 테스트 페이지를 통해 값을 제공할 수 있습니다. 나중에 Runbook이 게시되면 PowerShell, REST API 또는 논리 앱에서 Runbook을 시작할 때 매개 변수를 제공할 수 있습니다.

Logic Apps에서 Azure Automation 계정의 출력 구문 분석(선택 사항)

Runbook이 게시되면 Azure Automation에서 일정을 만들고 Runbook을 해당 일정에 연결하여 자동으로 실행할 수 있습니다. Azure Automation에서 Runbook을 예약하는 것은 PowerShell 인터페이스가 없는 다른 Azure 또는 Office 365 서비스와 상호 작용할 필요가 없는 Runbook에 적합합니다.

Runbook의 출력을 다른 서비스로 보내려는 경우 Logic Apps가 결과를 구문 분석할 수도 있으므로 Azure Logic Apps를 사용하여 Azure Automation Runbook을 시작하는 것이 좋습니다.

  1. Azure Logic Apps의 되풀이로 시작하는 Logic Apps 디자이너에서 Logic Apps를 만듭니다.

  2. Azure Automation에서 작업 만들기 작업을 추가합니다. Microsoft Entra ID에 인증하고 이전에 만든 구독, 리소스 그룹, Automation 계정을 선택합니다. 작업 대기를 선택합니다.

  3. 매개 변수 Runbook 이름을 추가하고 시작할 Runbook의 이름을 입력합니다. Runbook에 입력 매개 변수가 있는 경우 해당 매개 변수에 값을 제공할 수 있습니다.

  4. 새 단계를 선택하고 작업 출력 가져오기 작업을 추가합니다. 이전 단계와 동일한 구독, 리소스 그룹, Automation 계정을 선택하고 이전 단계에서 작업 ID의 동적 값을 선택합니다.

  5. 그런 다음 Runbook이 완료될 때 반환되는 콘텐츠를 사용하는 JSON 구문 분석 작업과 같은 논리 앱에 더 많은 작업을 추가할 수 있습니다. (샘플 페이로드에서 JSON 구문 분석 스키마를 자동 생성하는 경우 잠재적으로 null을 반환하는 PowerShell 스크립트를 고려해야 합니다. 스키마에서 "type": ​"string"의 일부를 "type": [​"string",​ "null"​]로 변경해야 할 수도 있습니다.)

Azure Automation에서 출력 스트림에 대량의 데이터를 한 번에 쓰려고 하면 PowerShell Runbook을 완료하지 못할 수 있습니다. Select-Object -Property cmdlet을 사용하여 불필요한 속성을 제외하는 것과 같이 일반적으로 Runbook에서 논리 앱에 필요한 정보만 출력하도록 하여 이 문제를 해결할 수 있습니다.

인증서를 최신 상태로 유지하도록 계획

인증을 위해 위의 단계에 따라 자체 서명된 인증서를 만든 경우 인증서는 만료되기 전까지 수명이 제한되어 있습니다. 인증서를 다시 생성하고 만료 날짜 전에 새 인증서를 업로드해야 합니다.

Azure Portal에서 만료 날짜를 확인할 수 있는 두 위치가 있습니다.

  • Azure Automation에서 인증서 화면에 인증서의 만료 날짜가 표시됩니다.
  • Microsoft Entra ID의 앱 등록에서 인증서 및 비밀 화면에는 Azure Automation 계정에 사용되는 인증서의 만료 날짜가 표시됩니다.

다음 단계