다음을 통해 공유


Azure Logic Apps를 사용하여 API 기반 인바운드 프로비저닝

이 자습서에서는 Azure Logic Apps 워크플로를 사용하여 Microsoft Entra ID API 기반 인바운드 프로비전을 구현하는 방법을 설명합니다. 이 자습서의 단계를 사용하여 HR 데이터가 포함된 CSV 파일을 대량 요청 페이로드로 변환하고 Microsoft Entra 프로비전 /bulkUpload API 엔드포인트로 보낼 수 있습니다. 또한 이 문서에서는 동일한 통합 패턴을 모든 기록 시스템에서 사용할 수 있는 방법에 대한 지침도 제공합니다.

통합 시나리오

비즈니스 요구 사항

기록 시스템은 작업자 데이터가 포함된 CSV 파일 내보내기를 주기적으로 생성합니다. CSV 파일에서 데이터를 읽고 대상 디렉터리(하이브리드 사용자의 경우 온-프레미스 Active Directory, 클라우드 전용 사용자의 경우 Microsoft Entra ID)에서 사용자 계정을 자동으로 프로비전하는 통합을 구현하려고 합니다.

구현 요구 사항

구현 관점에서:

  • Azure Logic Apps 워크플로를 사용하여 Azure 파일 공유에서 사용할 수 있는 CSV 파일 내보내기에서 데이터를 읽고 인바운드 프로비전 API 엔드포인트로 보내려고 합니다.
  • Azure Logic Apps 워크플로에서는 레코드 시스템과 대상 디렉터리 간에 ID 데이터를 비교하는 복잡한 논리를 구현하지 않으려고 합니다.
  • Microsoft Entra 프로비전 서비스를 사용하여 IT 관리형 프로비전 규칙을 적용하여 대상 디렉터리(온-프레미스 Active Directory 또는 Microsoft Entra ID)에서 계정을 자동으로 생성/업데이트/사용/사용하지 않도록 설정하려고 합니다.

Graphic of Azure Logic Apps-based integration.

통합 시나리오 변형

이 자습서에서는 CSV 파일을 레코드 시스템으로 사용하지만 샘플 Azure Logic Apps 워크플로를 사용자 지정하여 모든 레코드 시스템에서 데이터를 읽을 수 있습니다. Azure Logic Apps는 통합 워크플로에서 사용할 수 있는 미리 빌드된 트리거 및 작업과 함께 광범위한 기본 제공 커넥터관리형 커넥터을 제공합니다.

다음은 Logic Apps 워크플로를 사용하여 API 기반 인바운드 프로비전을 구현할 수 있는 엔터프라이즈 통합 시나리오 변형 목록입니다.

# 레코드 시스템 Logic Apps를 사용하여 원본 데이터를 읽는 방법에 대한 통합 지침
1 SFTP 서버에 저장된 파일 기본 제공 SFTP 커넥터 또는 관리형 SFTP SSH 커넥터를 사용하여 SFTP 서버에 저장된 파일에서 데이터를 읽습니다.
2 데이터베이스 테이블 Azure SQL 서버 또는 온-프레미스 SQL Server를 사용하는 경우 SQL Server 커넥터를 사용하여 테이블 데이터를 읽습니다.
Oracle 데이터베이스를 사용하는 경우 Oracle 데이터베이스 커넥터를 사용하여 테이블 데이터를 읽습니다.
3 온-프레미스 및 클라우드 호스팅 SAP S/4 HANA 또는
클래식 온-프레미스 SAP 시스템(예: R/3 및 ECC)
SAP 커넥터를 사용하여 SAP 시스템에서 ID 데이터를 검색합니다. 이 커넥터를 구성하는 방법에 대한 예제는 Azure Logic Apps 및 SAP 커넥터를 사용하는 일반적인 SAP 통합 시나리오를 참조하세요.
4 IBM MQ IBM MQ 커넥터를 사용하여 큐에서 프로비전 메시지를 받습니다.
5 Dynamics 365 Human Resources Dataverse 커넥터를 사용하여 Microsoft Dynamics 365 Human Resources에서 사용하는 Dataverse 테이블에서 데이터를 읽습니다.
6 REST API를 노출하는 모든 시스템 Logic Apps 커넥터 라이브러리에서 레코드 시스템에 대한 커넥터를 찾을 수 없는 경우 고유한 사용자 지정 커넥터를 만들어 레코드 시스템에서 데이터를 읽을 수 있습니다.

원본 데이터를 읽은 후 전처리 규칙을 적용하고 레코드 시스템의 출력을 Microsoft Entra 프로비전 bulkUpload API 엔드포인트로 보낼 수 있는 대량 요청으로 변환합니다.

Important

API 기반 인바운드 프로비전 + Logic Apps 통합 워크플로를 커뮤니티와 공유하려면 논리 앱 템플릿을 만들고, 이 템플릿을 사용하는 방법에 대한 단계를 문서화하고, GitHub 리포지토리 entra-id-inbound-provisioning에 포함하기 위해 끌어오기 요청을 제출합니다.

이 자습서의 사용 방법

Microsoft Entra 인바운드 프로비전 GitHub 리포지토리에 게시된 Logic Apps 배포 템플릿은 여러 작업을 자동화합니다. 또한 큰 CSV 파일을 처리하고 대량 요청을 청크하여 각 요청에 50개의 레코드를 보내는 논리도 있습니다. 통합 요구 사항에 따라 논리를 테스트하고 사용자 지정할 수 있는 방법은 다음과 같습니다.

참고 항목

샘플 Azure Logic Apps 워크플로는 구현 참조를 위해 "있는 그대로" 제공됩니다. 관련 질문이 있거나 개선하려고 하면 GitHub 프로젝트 리포지토리를 사용하세요.

# 자동화 작업 구현 지침 고급 사용자 지정
1 CSV 파일에서 작업자 데이터를 읽습니다. Logic Apps 워크플로는 Azure Function을 사용하여 Azure 파일 공유에 저장된 CSV 파일을 읽습니다. Azure Function은 CSV 데이터를 JSON 형식으로 변환합니다. CSV 파일 형식이 다른 경우 "JSON 구문 분석" 및 "SCIMUser 생성" 워크플로 단계를 업데이트합니다. 레코드 시스템이 다른 경우 적절한 커넥터를 사용하여 Logic Apps 워크플로를 사용자 지정하는 방법에 대해 통합 시나리오 변형 섹션에 제공된 지침을 확인하세요.
2 데이터를 전처리하고 SCIM 형식으로 변환합니다. 기본적으로 Logic Apps 워크플로는 CSV 파일의 각 레코드를 SCIM Core 사용자 + 엔터프라이즈 사용자 표현으로 변환합니다. 사용자 지정 SCIM 스키마 확장을 사용하려는 경우 사용자 지정 SCIM 스키마 확장을 포함하도록 "SCIMUser 생성" 단계를 업데이트합니다. 고급 서식 및 데이터 유효성 검사를 위해 C# 코드를 실행하려면 사용자 지정 Azure Functions를 사용합니다.
3 적합한 인증 방법 사용 서비스 주체를 사용하거나 관리 ID를 사용하여 인바운드 프로비전 API에 액세스할 수 있습니다. 올바른 인증 방법으로 "SCIMBulkPayload를 API 엔드포인트로 보내기" 단계를 업데이트합니다. -
4 온-프레미스 Active Directory 또는 Microsoft Entra ID에 계정을 프로비전합니다. API 기반 인바운드 프로비전 앱을 구성합니다. 이렇게 하면 고유한 /bulkUpload API 엔드포인트가 생성됩니다. 올바른 bulkUpload API 엔드포인트를 사용하도록 "SCIMBulkPayload를 API 엔드포인트로 보내기" 단계를 업데이트합니다. 사용자 지정 SCIM 스키마와 함께 대량 요청을 사용하려는 경우 사용자 지정 SCIM 스키마 특성을 포함하도록 프로비전 앱 스키마를 확장합니다.
5 프로비전 로그를 스캔하고 실패한 레코드에 대한 프로비전을 다시 시도합니다. 이 자동화는 샘플 Logic Apps 워크플로에서 아직 구현되지 않았습니다. 구현하려면 프로비전 로그 Graph API를 참조하세요. -
6 Logic Apps 기반 자동화를 프로덕션에 배포합니다. API 기반 프로비전 흐름을 확인하고 요구 사항을 충족하도록 Logic Apps 워크플로를 사용자 지정했으면 환경에 자동화를 배포합니다. -

1단계: CSV 파일을 호스트하는 Azure Storage 계정 만들기

이 섹션에 설명된 단계는 선택 사항입니다. 기존 스토리지 계정이 이미 있거나 SharePoint 사이트 또는 Blob Storage와 같은 다른 원본에서 CSV 파일을 읽으려는 경우 선택한 커넥터를 사용하도록 논리 앱을 업데이트합니다.

  1. 최소한 애플리케이션 관리자Azure Portal에 로그인합니다.
  2. "스토리지 계정"을 검색하고 새 스토리지 계정을 만듭니다. Screenshot of creating new storage account.
  3. 리소스 그룹을 할당하고 이름을 지정합니다. Screenshot of resource group assignment.
  4. 스토리지 계정이 만들어지면 리소스로 이동합니다.
  5. "파일 공유" 메뉴 옵션을 클릭하고 새 파일 공유를 만듭니다. Screenshot of creating new file share.
  6. 파일 공유 생성에 성공했음을 확인합니다. Screenshot of file share created.
  7. 업로드 옵션을 사용하여 샘플 CSV 파일을 파일 공유에 업로드합니다.
  8. 다음은 CSV 파일의 열 스크린샷입니다. Screenshot of columns in Excel.

2단계: Azure Function CSV2JSON 변환기 구성

  1. Azure Portal과 연결된 브라우저에서 GitHub 리포지토리 URL(https://github.com/joelbyford/CSVtoJSONcore)을 엽니다.

  2. "Azure에 배포" 링크를 클릭하여 이 Azure Function을 Azure 테넌트로 배포합니다. Screenshot of deploying Azure Function.

  3. 이 Azure Function을 배포할 리소스 그룹을 지정합니다. Screenshot of configuring Azure Function resource group.

    "이 지역에는 0개의 인스턴스 할당량이 있습니다"라는 오류가 표시되면 다른 지역을 선택해 보세요.

  4. App Service로 Azure Function 배포가 성공했는지 확인합니다.

  5. 리소스 그룹으로 이동하여 WebApp 구성을 엽니다. "실행 중" 상태인지 확인합니다. 웹앱과 연결된 기본 도메인 이름을 복사합니다. Screenshot of Azure Function Web App domain name.

  6. Postman 클라이언트를 열어 CSVtoJSON 엔드포인트가 예상대로 작동하는지 테스트합니다. 이전 단계에서 복사한 도메인 이름을 붙여넣습니다. "text/csv"의 Content-Type을 사용하여 요청 본문의 샘플 CSV 파일을 엔드포인트에 게시합니다. https://[your-domain-name]/csvtojsonScreenshot of Postman client calling the Azure Function.

  7. Azure Function 배포에 성공하면 응답에서 상태 200 OK가 포함된 CSV 파일의 JSON 버전을 가져옵니다.

    Screenshot of Azure Function response.

  8. Logic Apps가 이 Azure Function을 호출할 수 있도록 하려면 WebApp에 대한 CORS 설정에서 별표(*)를 입력하고 구성을 "저장"합니다. Screenshot of Azure Function CORS setting.

3단계: API 기반 인바운드 사용자 프로비전 구성

4단계: Azure Logic Apps 워크플로 구성

  1. 아래 단추를 클릭하여 CSV2SCIMBulkUpload Logic Apps 워크플로에 대한 Azure Resource Manager 템플릿을 배포합니다.

    Deploy to Azure

  2. 인스턴스 세부 정보에서 강조 표시된 항목을 업데이트하고 이전 단계의 값을 복사하여 붙여넣습니다. Screenshot of Azure Logic Apps instance details.

  3. Azurefile_access Key 매개 변수의 경우, Azure 파일 스토리지 계정을 열고 “보안 및 네트워킹” 아래에 있는 액세스 키를 복사합니다.
    Screenshot of Azure File access keys.

  4. “검토 및 만들기” 옵션을 클릭하여 배포를 시작합니다.

  5. 배포가 완료되면 다음 리소스가 표시됩니다. Screenshot of Azure Logic Apps deployment complete.

5단계: 시스템 할당 관리 ID 구성

  1. 설정 -> Logic Apps 워크플로의 ID 블레이드를 방문합니다.
  2. 시스템이 할당한 관리 ID를 사용으로 설정합니다. Screenshot of enabling managed identity.
  3. 관리 ID의 사용을 확인하는 프롬프트가 표시됩니다. 를 클릭합니다.
  4. 관리 ID에 대량 업로드를 수행할 수 있는 권한을 부여합니다.

6단계: 워크플로 단계 검토 및 조정

  1. 디자이너 보기에서 논리 앱을 엽니다. Screenshot of Azure Logic Apps designer view.

  2. 워크플로의 각 단계 구성을 검토하여 올바른지 확인합니다.

  3. "경로를 사용하여 파일 콘텐츠 가져오기" 단계를 열고 수정하여 테넌트의 Azure File Storage를 찾아봅니다. Screenshot of get file content.

  4. 필요한 경우 연결을 업데이트합니다.

  5. "CSV를 JSON으로 변환" 단계가 올바른 Azure Function 웹앱 인스턴스를 가리키는지 확인합니다. Screenshot of Azure Function call invocation to convert from CSV to JSON.

  6. CSV 파일 콘텐츠/헤더가 다르면 Azure Function에 대한 API 호출에서 검색할 수 있는 JSON 출력으로 "JSON 구문 분석" 단계를 업데이트합니다. 2단계의 Postman 출력을 사용합니다. Screenshot of Parse JSON step.

  7. "SCIMUser 생성" 단계에서 CSV 필드가 처리에 사용될 SCIM 특성에 올바르게 매핑되는지 확인합니다.

    Screenshot of Construct SCIM user step.

  8. "SCIMBulkPayload를 API 엔드포인트에 보내기" 단계에서 올바른 API 엔드포인트 및 인증 메커니즘을 사용하고 있는지 확인합니다.

    Screenshot of invoking bulk upload API with managed identity.

7단계: 트리거 실행 및 Logic Apps 워크플로 테스트

  1. Logic Apps 디자이너의 “일반 공급” 버전에서 트리거 실행을 클릭하여 워크플로를 수동으로 실행합니다. Screenshot of running the Logic App.
  2. 실행이 완료되면 Logic Apps가 각 반복에서 수행한 작업을 검토합니다.
  3. 마지막 반복에서는 Logic Apps가 인바운드 프로비전 API 엔드포인트에 데이터를 업로드하는 것을 볼 수 있습니다. 202 Accept 상태 코드를 찾습니다. 대량 업로드 요청을 복사하여 붙여넣고 확인할 수 있습니다. Screenshot of the Logic Apps execution result.

다음 단계