Share via


자습서: 자동 사용자 프로비전을 위한 SAP Cloud Identity Services 구성

이 자습서에서는 Microsoft Entra ID에서 SAP Cloud Identity Services로 프로비저닝을 구성하는 단계를 보여 줍니다. 목표는 사용자가 SAP Cloud Identity Services에 인증하고 다른 SAP 워크로드에 액세스할 수 있도록 사용자를 SAP Cloud Identity Services에 자동으로 프로비전 및 프로비전 해제하도록 Microsoft Entra ID를 설정하는 것입니다. SAP Cloud Identity Services는 로컬 ID 디렉터리에서 다른 SAP 애플리케이션으로 대상 시스템으로 프로비저닝을 지원합니다.

참고 항목

이 자습서에서는 Microsoft Entra 사용자 프로비저닝 서비스에서 빌드된 커넥터에 대해 설명합니다. 이 서비스의 기능, 사용법, 자주 묻는 질문과 답변 등 중요 세부 정보는 Microsoft Entra ID를 사용한 SaaS 애플리케이션으로의 사용자 자동 프로비전 및 프로비전 해제를 참조하세요. SAP Cloud Identity Services에는 Microsoft Entra ID에서 사용자 및 그룹을 읽을 수 있는 별도의 커넥터도 있습니다. 자세한 내용은 SAP Cloud Identity Services - ID 프로비저닝 - Microsoft Entra ID를 원본 시스템으로 참조 하세요.

필수 조건

이 자습서에 설명된 시나리오에서는 사용자에게 이미 다음 필수 구성 요소가 있다고 가정합니다.

참고 항목

이 통합은 Microsoft Entra 미국 정부 클라우드 환경에서도 사용할 수 있습니다. 이 애플리케이션은 Microsoft Entra US Government 클라우드 애플리케이션 갤러리에서 찾을 수 있으며 퍼블릭 클라우드 환경에서와 동일한 방식으로 구성할 수 있습니다.

Microsoft Entra ID에 사용자가 아직 없는 경우 SAP 원본 및 대상 앱을 사용하여 사용자 프로비저닝을 위해 Microsoft Entra를 배포하는 자습서 계획부터 시작합니다. 이 자습서에서는 SAP SuccessFactors와 같은 조직의 작업자 목록에 대한 신뢰할 수 있는 원본과 Microsoft Entra를 연결하는 방법을 보여 줍니다. 또한 Microsoft Entra를 사용하여 해당 작업자에 대한 ID를 설정하는 방법을 보여 줍니다. 따라서 SAP ECC 또는 SAP S/4HANA와 같은 하나 이상의 SAP 애플리케이션에 로그인할 수 있습니다.

Microsoft Entra ID 거버넌스를 사용하여 SAP 워크로드에 대한 액세스를 제어하는 프로덕션 환경에서 SAP Cloud Identity Services로 프로비저닝을 구성하는 경우 계속하기 전에 ID 거버넌스에 대한 Microsoft Entra ID를 구성하기 전에 필수 구성 요소를 검토합니다.

프로비전을 위한 SAP Cloud Identity Services 설정

  1. SAP Cloud Identity Services 관리 콘솔 https://<tenantID>.accounts.ondemand.com/admin 에 로그인하거나 https://<tenantID>.trial-accounts.ondemand.com/admin 평가판인 경우 로그인합니다. 사용자 및 권한 부여 > 관리로 이동합니다.

    SAP Cloud Identity Services 관리 콘솔의 스크린샷

  2. 새 관리자를 목록에 추가하려면 왼쪽 패널에서 +추가 단추를 누릅니다. 시스템 추가를 선택하고 시스템 이름을 입력합니다.

    참고 항목

    SAP Cloud Identity Services의 관리자 ID는 시스템 유형이어야 합니다. 관리자 사용자는 프로비전할 때 SAP SCIM API에 인증할 수 없습니다. SAP Cloud Identity Services는 시스템 이름을 만든 후 변경할 수 없습니다.

  3. 권한 부여 구성에서 사용자 관리에 대한 토글 단추를 켭니다. 그런 다음 저장을 클릭하여 시스템을 만듭니다.

    SAP Cloud Identity Services SCIM 추가 스크린샷

  4. 관리자 시스템을 만든 후 해당 시스템에 새 비밀을 추가합니다.

  5. SAP에서 생성한 클라이언트 ID클라이언트 암호를 복사합니다. 이러한 값은 관리 사용자 이름 및 관리 암호 필드에 각각 입력됩니다. 이 작업은 다음 섹션에서 설정할 SAP Cloud Identity Services 애플리케이션의 프로비저닝 탭에서 수행됩니다.

  6. SAP Cloud Identity Services는 하나 이상의 SAP 애플리케이션을 대상 시스템으로 매핑할 수 있습니다. SAP Cloud Identity Services를 통해 해당 SAP 애플리케이션을 프로비전해야 하는 사용자에 특성이 있는지 확인합니다. 이 자습서에서는 SAP Cloud Identity Services 및 다운스트림 대상 시스템에 두 가지 특성이 userName 필요하다고 가정합니다 emails[type eq "work"].value. SAP 대상 시스템에 다른 특성이 필요하고 Microsoft Entra ID 사용자 스키마의 일부가 아닌 경우 동기화 확장 특성을 구성해야 할 수 있습니다.

SAP Cloud Identity Services에 자동 사용자 프로비저닝을 하도록 Microsoft Entra ID를 구성하기 전에 Microsoft Entra 애플리케이션 갤러리의 SAP Cloud Identity Services를 테넌트의 엔터프라이즈 애플리케이션 목록에 추가해야 합니다. Microsoft Entra 관리 센터 또는 Graph API를 통해 이 단계를 수행할 수 있습니다.

SAP Cloud Identity Services가 이미 Microsoft Entra에서 Single Sign-On하도록 구성되어 있고 애플리케이션이 엔터프라이즈 애플리케이션의 Microsoft Entra 목록에 이미 있는 경우 다음 섹션에서 계속 진행합니다.

Microsoft Entra 관리 센터를 사용하여 Microsoft Entra 애플리케이션 갤러리에서 SAP Cloud Identity Services를 추가하려면 다음 단계를 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>엔터프라이즈 애플리케이션>새 애플리케이션으로 이동합니다.
  3. 갤러리에서 앱을 추가하려면 검색 상자에 SAP Cloud Identity Services를 입력합니다.
  4. 결과 패널에서 SAP Cloud Identity Services를 선택한 다음, 앱을 추가합니다. 앱이 테넌트에 추가될 때까지 잠시 동안 기다려 주세요.

SAP Cloud Identity Services에 대한 자동 사용자 프로비저닝 구성

이 섹션에서는 Microsoft Entra ID의 애플리케이션에 대한 사용자 할당에 따라 SAP Cloud Identity Services에서 사용자를 만들고, 업데이트하고, 사용하지 않도록 Microsoft Entra 프로비저닝 서비스를 구성하는 단계를 안내합니다.

Microsoft Entra ID에서 SAP Cloud Identity Services에 대한 자동 사용자 프로비전을 구성하려면 다음을 수행합니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. ID>애플리케이션>엔터프라이즈 애플리케이션으로 이동합니다.

    엔터프라이즈 애플리케이션 블레이드의 스크린샷

  3. 애플리케이션 목록에서 애플리케이션인 SAP Cloud Identity Services를 선택합니다.

    애플리케이션 목록에 있는 SAP Cloud Identity Services 링크의 스크린샷

  4. 속성 탭을 선택합니다.

  5. 할당이 필요한가요? 옵션이 예설정되어 있는지 확인합니다. 아니요로 설정되면 외부 ID를 포함하여 디렉터리의 모든 사용자가 애플리케이션에 액세스할 수 있지만 애플리케이션에 대한 액세스는 검토할 수 없습니다.

  6. 프로비전 탭을 선택합니다.

    프로비저닝 옵션이 호출된 관리 옵션의 스크린샷

  7. 프로비전 모드자동으로 설정합니다.

    자동 옵션이 호출된 프로비저닝 모드 드롭다운 목록의 스크린샷

  8. 관리 자격 증명 섹션에서 테넌트 URL에 있는 SAP Cloud Identity Services의 테넌트 ID를 사용하여 평가판 또는 평가판을 입력 https://<tenantID>.accounts.ondemand.com/service/scimhttps://<tenantid>.trial-accounts.ondemand.com/service/scim 합니다. 관리 사용자 이름과 관리 암호에서 이전에 검색한 클라이언트 ID클라이언트 암호 값을 각각 입력합니다. 연결 테스트를 클릭하여 Microsoft Entra ID가 SAP Cloud Identity Services에 연결할 수 있는지 확인하세요. 연결이 실패하면 SAP Cloud Identity Services 시스템 계정에 관리 권한이 있는지 확인하고 비밀은 여전히 유효하며 다시 시도합니다.

    테넌트 URL 및 토큰의 스크린샷

  9. 알림 메일 필드에 프로비저닝 오류 알림을 받을 개인 또는 그룹의 메일 주소를 입력하고, 오류가 발생할 경우, 메일 알림 보내기 확인란을 선택합니다.

    알림 이메일 스크린샷

  10. 저장을 클릭합니다.

  11. 매핑 섹션에서 Microsoft Entra ID 사용자 프로비전을 선택합니다.

    SAP Cloud Identity Services 사용자 매핑의 스크린샷

  12. 특성 매핑 섹션에서 Microsoft Entra ID에서 SAP Cloud Identity Services로 동기화되는 사용자 특성을 검토합니다. 매핑 대상으로 사용할 수 있는 SAP Cloud Identity Services의 특성이 표시되지 않으면 고급 옵션 표시를 선택하고 SAP Cloud Platform Identity Authentication Service의 특성 목록 편집을 선택하여 지원되는 특성 목록을 편집합니다. SAP Cloud Identity Services 테넌트 특성을 추가합니다.

  13. 이러한 특성은 Microsoft Entra 프로비저닝 서비스에 대한 SAP Cloud Identity Services의 사용자 계정을 일치시키는 데 사용되어 새 사용자를 만들거나 기존 사용자를 업데이트할지 여부를 결정하기 때문에 일치 속성, 일치 우선 순위가 있는 매핑으로 선택한 원본 및 대상 특성을 검토하고 기록합니다. 일치에 대한 자세한 내용은 원본 및 대상 시스템에서 일치하는 사용자를 참조 하세요. 이후 단계에서는 SAP Cloud Identity Services에 이미 있는 모든 사용자에게 중복된 사용자가 생성되지 않도록 일치 속성으로 선택된 특성이 있는지 확인합니다.

  14. 애플리케이션의 특성에 매핑된 함수 또는 해당 IsSoftDeleted함수에 대한 IsSoftDeleted특성 매핑이 있는지 확인합니다. 사용자가 애플리케이션에서 할당되지 않거나, Microsoft Entra ID에서 일시 삭제되거나, 로그인이 차단되면 Microsoft Entra 프로비전 서비스는 매핑된 특성을 업데이트합니다 isSoftDeleted. 매핑된 특성이 없으면 나중에 애플리케이션 역할에서 할당 해제된 사용자가 애플리케이션의 데이터 저장소에 계속 존재합니다.

  15. SAP Cloud Identity Services 또는 다운스트림 대상 SAP 시스템에 필요한 추가 매핑을 추가합니다.

  16. 저장 단추를 선택하여 변경 내용을 커밋합니다.

    Attribute Type 필터링에 지원됨 SAP Cloud Identity Services에 필요
    userName 문자열
    emails[type eq "work"].value 문자열
    active Boolean
    displayName 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager 참조
    addresses[type eq "work"].country 문자열
    addresses[type eq "work"].locality 문자열
    addresses[type eq "work"].postalCode 문자열
    addresses[type eq "work"].region 문자열
    addresses[type eq "work"].streetAddress 문자열
    name.givenName 문자열
    name.familyName 문자열
    name.honorificPrefix 문자열
    phoneNumbers[type eq "fax"].value 문자열
    phoneNumbers[type eq "mobile"].value 문자열
    phoneNumbers[type eq "work"].value 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:costCenter 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:division 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber 문자열
    urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:organization 문자열
    locale 문자열
    timezone 문자열
    userType 문자열
    company 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute1 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute2 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute3 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute4 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute5 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute6 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute7 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute8 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute9 문자열
    urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute10 문자열
    sendMail 문자열
    mailVerified 문자열
  17. 범위 지정 필터를 구성하려면 범위 지정 필터 자습서에서 제공하는 다음 지침을 참조합니다.

  18. SAP Cloud Identity Services에 대한 Microsoft Entra 프로비전 서비스를 사용하려면 설정 섹션에서 프로비전 상태켜짐으로 변경하세요.

    켜기로 전환된 프로비전 상태의 스크린샷

  19. 설정 섹션의 범위 값에 대해 할당된 사용자 및 그룹만 동기화를 선택합니다.

    프로비전 범위의 스크린샷

  20. 프로비저닝할 준비가 되면 저장을 클릭합니다.

    프로비저닝 구성 저장의 스크린샷

이 작업은 설정범위 섹션에 정의된 모든 사용자의 초기 동기화를 시작합니다. 범위가 동기화 할당된 사용자 및 그룹만 동기화로 설정되어 있고 애플리케이션에 할당된 사용자 또는 그룹이 없는 경우 사용자가 애플리케이션에 할당될 때까지 동기화가 수행되지 않습니다.

Microsoft Entra ID에서 SAP Cloud Identity Services로 새 테스트 사용자 프로비전

단일 새 Microsoft Entra 테스트 사용자를 SAP Cloud Identity Services에 할당하여 자동 사용자 프로비저닝 구성을 테스트하는 것이 좋습니다.

  1. Microsoft Entra 관리 센터에 Cloud Application 관리istrator 및 User 관리istrator로 로그인합니다.
  2. ID>사용자>모든 사용자로 이동합니다.
  3. 새 사용자>새 사용자 만들기를 선택합니다.
  4. 새 테스트 사용자의 사용자 계정 이름표시 이름을 입력합니다. 사용자 계정 이름은 고유해야 하며 현재 또는 이전 Microsoft Entra 사용자 또는 SAP Cloud Identity Services 사용자와 동일하지 않아야 합니다. 검토 + 만들기만들기를 선택합니다.
  5. 테스트 사용자를 만든 후 ID>애플리케이션 엔터프라이즈 애플리케이션>으로 찾습니다.
  6. SAP Cloud Identity Services 애플리케이션을 선택합니다.
  7. 사용자 및 그룹을 선택한 다음 사용자/그룹 추가를 선택합니다.
  8. 사용자 및 그룹에서 선택한 항목 없음을 선택하고 텍스트 상자에 테스트 사용자의 사용자 계정 이름을 입력합니다.
  9. 선택, 할당선택합니다.
  10. 프로비저닝을 선택한 다음 요청 시 프로비전을 선택합니다.
  11. 사용자 또는 그룹 선택 텍스트 상자에 테스트 사용자의 사용자 계정 이름을 입력합니다.
  12. 프로비전을 클릭합니다.
  13. 프로비전이 완료될 때까지 기다립니다. 성공하면 메시지가 Modified attributes (successful)표시됩니다.

사용자가 애플리케이션 범위를 벗어날 때 Microsoft Entra 프로비저닝 서비스가 프로비전할 대상을 선택적으로 확인할 수도 있습니다.

  1. 사용자 및 그룹을 선택합니다.
  2. 테스트 사용자를 선택한 다음 제거를 선택합니다.
  3. 테스트 사용자를 제거한 후 프로비저닝을 선택한 다음 요청 시 프로비전을 선택합니다.
  4. 사용자 또는 그룹 선택 텍스트 상자에 할당 해제된 테스트 사용자의 사용자 계정 이름을 입력합니다.
  5. 프로비전을 클릭합니다.
  6. 프로비전이 완료될 때까지 기다립니다.

마지막으로 Microsoft Entra ID에서 테스트 사용자를 제거할 수 있습니다.

  1. ID>사용자>모든 사용자로 이동합니다.
  2. 테스트 사용자를 선택하고 삭제를 선택한 다음 확인을 선택합니다. 이 작업은 Microsoft Entra ID에서 테스트 사용자를 일시 삭제합니다.

그런 다음 SAP Cloud Identity Services에서 테스트 사용자를 제거할 수도 있습니다.

기존 SAP Cloud Identity Services 사용자에게 필요한 일치 특성이 있는지 확인

Microsoft Entra ID의 SAP Cloud Identity Services 애플리케이션에 테스트가 아닌 사용자를 할당하기 전에 Microsoft Entra ID의 사용자와 동일한 사용자를 나타내는 SAP Cloud Identity Services에 이미 있는 모든 사용자에게 SAP Cloud Identity Services에 매핑 특성이 채워져 있는지 확인해야 합니다.

프로비저닝 매핑에서 일치 속성으로 선택한 특성은 Microsoft Entra ID의 사용자 계정을 SAP Cloud Identity Services의 사용자 계정과 일치시키는 데 사용됩니다. SAP Cloud Identity Services에서 일치하지 않는 Microsoft Entra ID에 사용자가 있는 경우 Microsoft Entra 프로비전 서비스는 새 사용자를 만들려고 시도합니다. Microsoft Entra ID에 사용자가 있고 SAP Cloud Identity Services에 일치하는 사용자가 있는 경우 Microsoft Entra 프로비전 서비스는 해당 SAP Cloud Identity Services 사용자를 업데이트합니다. 이러한 이유로 SAP Cloud Identity Services에 이미 있는 모든 사용자에게 일치 속성으로 선택된 특성이 있는지 확인해야 합니다. 그렇지 않으면 중복된 사용자를 만들 수 있습니다. Microsoft Entra 애플리케이션 특성 매핑에서 일치하는 특성을 변경해야 하는 경우 원본 및 대상 시스템에서 일치하는 사용자를 참조하세요.

  1. SAP Cloud Identity Services 관리 콘솔 https://<tenantID>.accounts.ondemand.com/admin 에 로그인하거나 https://<tenantID>.trial-accounts.ondemand.com/admin 평가판인 경우 로그인합니다.

  2. 사용자 및 권한 부여로 이동하여 사용자를 내보 > 냅니다.

  3. MICROSOFT Entra 사용자를 SAP의 사용자와 일치시키는 데 필요한 모든 특성을 선택합니다. 이러한 특성에는 SAP 시스템에서 식별자로 사용할 수 있는 , 및 기타 특성이 포함SCIM IDuserNameemails됩니다.

  4. 내보내기를 선택하고 브라우저가 CSV 파일을 다운로드할 때까지 기다립니다.

  5. PowerShell 창을 엽니다.

  6. 편집기에 다음 스크립트를 입력합니다. 1줄에서 일치하는 특성이 아닌 userName다른 특성을 선택한 경우 변수 값을 sapScimUserNameField SAP Cloud Identity Services 특성의 이름으로 변경합니다. 2줄에서 내보낸 CSV 파일의 파일 이름으로 인수를 다운로드한 파일 Users-exported-from-sap.csv 의 이름으로 변경합니다.

    $sapScimUserNameField = "userName"
    $existingSapUsers = import-csv -Path ".\Users-exported-from-sap.csv" -Encoding UTF8
    $count = 0
    $warn = 0
    foreach ($u in $existingSapUsers) {
     $id = $u.id
     if (($null -eq $id) -or ($id.length -eq 0)) {
         write-error "Exported CSV file does not contain the id attribute of SAP Cloud Identity Services users."
         throw "id attribute not available, re-export"
         return
     }
     $count++
     $userName = $u.$sapScimUserNameField
     if (($null -eq $userName) -or ($userName.length -eq 0)) {
         write-warning "SAP Cloud Identity Services user $id does not have a $sapScimUserNameField attribute populated"
         $warn++
     }
    }
    write-output "$warn of $count users in SAP Cloud Identity Services did not have the $sapScimUserNameFIeld attribute populated."
    
  7. 스크립트를 실행합니다. 스크립트가 완료되면 필요한 일치 특성이 부족한 사용자가 하나 이상 있는 경우 내보낸 CSV 파일 또는 SAP Cloud Identity Services 관리 콘솔에서 해당 사용자를 조회합니다. 해당 사용자가 Microsoft Entra에도 있는 경우 일치하는 특성이 채워지도록 먼저 해당 사용자의 SAP Cloud Identity Services 표현을 업데이트해야 합니다.

  8. SAP Cloud Identity Services에서 해당 사용자의 특성을 업데이트한 후 2-5단계 및 이 섹션의 PowerShell 단계에 설명된 대로 SAP Cloud Identity Services에서 사용자를 다시 내보내 SAP Cloud Identity Services에서 해당 사용자에게 프로비저닝을 방지하는 일치하는 특성이 없는지 확인합니다.

이제 SAP Cloud Identity Services에서 가져온 모든 사용자 목록이 있으므로 애플리케이션의 데이터 저장소에서 해당 사용자를 Microsoft Entra ID에 이미 있는 사용자와 일치하여 프로비전 범위에 있어야 하는 사용자를 결정합니다.

Microsoft Entra ID에서 사용자의 ID를 검색합니다.

이 섹션에서는 Microsoft Graph PowerShell cmdlet을 사용하여 Microsoft Entra ID와 상호 작용하는 방법을 보여 줍니다.

조직에서 이 시나리오에 이러한 cmdlet을 처음 사용하는 경우 테넌트에서 Microsoft Graph PowerShell을 사용할 수 있도록 허용하는 전역 관리자 역할이 필요합니다. 후속 상호 작용에서 다음과 같은 낮은 권한 있는 역할을 사용할 수 있습니다.

  • 사용자 관리자(새 사용자를 만들 것으로 예상되는 경우)
  • 애플리케이션 관리자 또는 ID 거버넌스 관리자(애플리케이션 역할 할당만 관리하는 경우)
  1. PowerShell을 엽니다.

  2. Microsoft Graph PowerShell 모듈을 아직 설치하지 않았으면 이 명령을 사용하여 Microsoft.Graph.Users 모듈과 다른 모듈을 설치합니다.

    Install-Module Microsoft.Graph
    

    모듈이 이미 설치되어 있으면 최신 버전을 사용하고 있는지 확인합니다.

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Microsoft Entra ID에 연결합니다.

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. 이 명령을 처음 사용하는 경우 Microsoft Graph 명령줄 도구에 이러한 사용 권한이 있도록 허용하는 데 동의해야 할 수 있습니다.

  5. 애플리케이션의 데이터 저장소에서 가져온 사용자 목록을 PowerShell 세션으로 읽어 들입니다. 사용자 목록이 CSV 파일에 있으면 PowerShell cmdlet Import-Csv를 사용하고 이전 섹션의 파일 이름을 인수로 제공할 수 있습니다.

    예를 들어 SAP Cloud Identity Services에서 가져온 파일의 이름이 Users-exported-from-sap.csv 현재 디렉터리에 있는 경우 이 명령을 입력합니다.

    $filename = ".\Users-exported-from-sap.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    

    데이터베이스 또는 디렉터리를 사용하는 경우 파일 이름이 users.csv 현재 디렉터리에 있는 경우 다음 명령을 입력합니다.

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Microsoft Entra ID의 사용자 특성과 일치할 users.csv 파일의 열을 선택합니다.

    SAP Cloud Identity Services를 사용하는 경우 기본 매핑은 Microsoft Entra ID 특성을 userName 사용하는 SAP SCIM 특성 userPrincipalName입니다.

    $db_match_column_name = "userName"
    $azuread_match_attr_name = "userPrincipalName"
    

    데이터베이스 또는 디렉터리를 사용하는 경우 이름이 지정된 EMail 열의 값이 Microsoft Entra 특성 userPrincipalName과 동일한 값인 데이터베이스에 사용자가 있을 수 있습니다.

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Microsoft Entra ID에서 해당 사용자의 ID를 검색합니다.

    다음 PowerShell 스크립트에서는 앞에서 지정한 $dbusers, $db_match_column_name$azuread_match_attr_name 값을 사용합니다. Microsoft Entra ID를 쿼리하여 원본 파일의 각 레코드에 대해 일치하는 값을 가진 특성을 가진 사용자를 찾습니다. 원본 SAP Cloud Identity Services, 데이터베이스 또는 디렉터리에서 가져온 파일에 많은 사용자가 있는 경우 이 스크립트를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 값이 있는 Microsoft Entra ID 특성이 없고 contains 또는 다른 필터 식을 사용해야 하는 경우 이 스크립트를 사용자 지정하고 다음 11단계에서 다른 필터 식을 사용해야 합니다.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    
  8. 이전 쿼리의 결과를 봅니다. 오류 또는 누락된 일치 항목으로 인해 SAP Cloud Identity Services, 데이터베이스 또는 디렉터리의 사용자를 Microsoft Entra ID에 배치할 수 없는지 확인합니다.

    다음 PowerShell 스크립트에 찾지 못한 레코드 수가 표시됩니다.

    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Error "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    
  9. 스크립트가 완료되면 데이터 원본의 레코드가 Microsoft Entra ID에 없는 경우 오류가 표시됩니다. 애플리케이션 데이터 저장소의 사용자에 대한 모든 레코드를 Microsoft Entra ID의 사용자로 찾을 수 없는 경우 일치하지 않는 레코드와 그 이유를 조사해야 합니다.

    예를 들어, 애플리케이션의 데이터 원본에서 해당 mail 속성이 업데이트되지 않은 상태에서 누군가의 이메일 주소와 userPrincipalName이 Microsoft Entra ID에서 변경되었을 수 있습니다. 또는 사용자가 이미 조직을 떠났지만 여전히 애플리케이션의 데이터 원본에 있을 수 있습니다. 또는 Microsoft Entra ID의 특정 개인과 일치하지 않는 애플리케이션의 데이터 원본에 공급업체 또는 최고 관리자 계정이 있을 수 있습니다.

  10. Microsoft Entra ID에 위치할 수 없거나 활성 상태이며 로그인할 수 없는 사용자가 있지만 SAP Cloud Identity Services, 데이터베이스 또는 디렉터리에서 해당 액세스 권한을 검토하거나 해당 특성을 업데이트하려는 경우 애플리케이션, 일치 규칙을 업데이트하거나 Microsoft Entra 사용자를 업데이트하거나 만들어야 합니다. 변경할 내용 에 대한 자세한 내용은 Microsoft Entra ID의 사용자와 일치하지 않는 애플리케이션의 매핑 및 사용자 계정 관리를 참조하세요.

    Microsoft Entra ID에서 사용자를 만드는 옵션을 선택하는 경우 다음 중 하나를 사용하여 사용자를 대량으로 만들 수 있습니다.

    이러한 새 사용자가 나중에 애플리케이션의 기존 사용자와 일치하도록 Microsoft Entra ID에 필요한 특성과 userPrincipalName, mailNicknamedisplayName을 포함하여 Microsoft Entra ID에 필요한 특성으로 채워졌는지 확인합니다. userPrincipalName은 디렉터리의 모든 사용자 중에서 고유해야 합니다.

    예를 들어 이름이 지정된 EMail 열의 값이 Microsoft Entra 사용자 계정 이름으로 사용할 값이고, 열의 값에 Microsoft Entra ID 메일 애칭이 포함되고, 열 AliasFull name 의 값에 사용자의 표시 이름이 포함된 데이터베이스에 사용자가 있을 수 있습니다.

    $db_display_name_column_name = "Full name"
    $db_user_principal_name_column_name = "Email"
    $db_mail_nickname_column_name = "Alias"
    

    그런 다음 이 스크립트를 사용하여 MICROSOFT Entra ID의 사용자와 일치하지 않는 SAP Cloud Identity Services, 데이터베이스 또는 디렉터리에 있는 사용자를 위한 Microsoft Entra 사용자를 만들 수 있습니다. 조직에 필요한 Microsoft Entra 특성을 추가하거나 $azuread_match_attr_namemailNickname도 아니고 userPrincipalName도 아닌 경우 해당 Microsoft Entra 특성을 제공하려면 이 스크립트를 수정해야 할 수도 있습니다.

    $dbu_missing_columns_list = @()
    $dbu_creation_failed_list = @()
    foreach ($dbu in $dbu_not_matched_list) {
       if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) {
          $params = @{
             accountEnabled = $false
             displayName = $dbu.$db_display_name_column_name
             mailNickname = $dbu.$db_mail_nickname_column_name
             userPrincipalName = $dbu.$db_user_principal_name_column_name
             passwordProfile = @{
               Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
             }
          }
          try {
            New-MgUser -BodyParameter $params
          } catch { $dbu_creation_failed_list += $dbu; throw }
       } else {
          $dbu_missing_columns_list += $dbu
       }
    }
    
  11. 누락된 사용자를 Microsoft Entra ID에 추가한 후 7단계에서 스크립트를 다시 실행합니다. 그런 다음, 8단계에서 스크립트를 실행합니다. 오류가 보고되지 않는지 확인합니다.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Warning "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count -ne 0) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    

기존 Microsoft Entra 사용자에게 필요한 특성이 있는지 확인

자동 사용자 프로비저닝을 사용하도록 설정하기 전에 MICROSOFT Entra ID에서 SAP Cloud Identity Services에 액세스해야 하는 사용자를 결정해야 하며, 해당 사용자에게 Microsoft Entra ID에 필요한 특성이 있고 해당 특성이 SAP Cloud Identity Services의 예상 스키마에 매핑되도록 검사 합니다.

  • 기본적으로 Microsoft Entra 사용자 userPrincipalName 특성의 값은 SAP Cloud Identity Services의 특성과 emails[type eq "work"].value 특성 모두 userName 에 매핑됩니다. 사용자의 전자 메일 주소가 사용자 계정 이름과 다른 경우 이 매핑을 변경해야 할 수 있습니다.
  • SAP Cloud Identity Services는 회사 ZIP/우편 번호 형식이 회사 국가와 일치하지 않는 경우 특성 값을 postalCode 무시할 수 있습니다.
  • 기본적으로 Microsoft Entra 특성 department 은 SAP Cloud Identity Services 특성에 매핑됩니다 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department . Microsoft Entra 사용자에게 특성 값 department 이 있는 경우 해당 값은 SAP Cloud Identity Services에 이미 구성된 부서와 일치해야 하며, 그렇지 않으면 사용자의 생성 또는 업데이트가 실패합니다. department Microsoft Entra 사용자의 값이 SAP 환경의 값과 일치하지 않는 경우 사용자를 할당하기 전에 매핑을 제거합니다.
  • SAP Cloud Identity Services의 SCIM 엔드포인트에서는 특정 특성이 특정 형식이어야 합니다. 이러한 특성과 해당하는 특정 형식에 대한 자세한 내용은 여기서 확인할 수 있습니다.

Microsoft Entra ID에서 SAP Cloud Identity Services 애플리케이션에 사용자 할당

Microsoft Entra ID는 할당이라는 개념을 사용하여 선택한 앱에 대한 액세스 권한을 받아야 하는 사용자를 결정합니다. 자동 사용자 프로비저닝의 컨텍스트에서 범위설정 값이 동기화에 할당된 사용자 및 그룹만인 경우 Microsoft Entra ID에서 해당 애플리케이션의 애플리케이션 역할에 할당된 사용자 및 그룹만 SAP Cloud Identity Services와 동기화됩니다. SAP Cloud Identity Services에 사용자를 할당하는 경우 할당 대화 상자에서 유효한 애플리케이션별 역할(사용 가능한 경우)을 선택해야 합니다. 기본 액세스 역할이 있는 사용자는 프로비전에서 제외됩니다. 현재 SAP Cloud Identity Services에 사용할 수 있는 역할은 User뿐입니다.

애플리케이션에 대해 프로비저닝을 이미 사용하도록 설정한 경우 애플리케이션에 더 많은 사용자를 할당하기 전에 애플리케이션 프로비전이 격리되지 않는지 검사. 계속하기 전에 격리를 유발하는 문제를 해결합니다.

SAP Cloud Identity Services에 있고 Microsoft Entra ID의 애플리케이션에 아직 할당되지 않은 사용자를 확인합니다.

이전 단계에서는 SAP Cloud Identity Services의 사용자가 Microsoft Entra ID의 사용자로 존재하는지 여부를 평가했습니다. 그러나 현재 Microsoft Entra ID의 애플리케이션 역할에 모두 할당되어 있지 않을 수 있습니다. 따라서 다음 단계는 애플리케이션 역할에 대한 할당이 없는 사용자를 확인하는 것입니다.

  1. PowerShell을 사용하여 애플리케이션의 서비스 주체에 대한 서비스 주체 ID를 조회합니다.

    예를 들어 엔터프라이즈 애플리케이션 이름이 SAP Cloud Identity Services이면 다음 명령을 입력합니다.

    $azuread_app_name = "SAP Cloud Identity Services"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. 현재 애플리케이션에 할당된 사용자를 Microsoft Entra ID에서 검색합니다.

    이는 이전 명령에서 설정된 $azuread_sp 변수를 기반으로 합니다.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. SAP Cloud Identity Services 및 Microsoft Entra ID 모두에 이미 있는 사용자의 사용자 ID 목록을 현재 Microsoft Entra ID의 애플리케이션에 할당된 사용자와 비교합니다. 이 스크립트는 이전 섹션의 $azuread_match_id_list 변수 집합을 기반으로 합니다.

    $azuread_not_in_role_list = @()
    foreach ($id in $azuread_match_id_list) {
       $found = $false
       foreach ($existing in $azuread_existing_assignments) {
          if ($existing.principalId -eq $id) {
             $found = $true; break;
          }
       }
       if ($found -eq $false) { $azuread_not_in_role_list += $id }
    }
    $azuread_not_in_role_count = $azuread_not_in_role_list.Count
    Write-Output "$azuread_not_in_role_count users in the application's data store are not assigned to the application roles."
    

    모든 사용자가 애플리케이션 역할에 할당되었음을 나타내는 0명의 사용자가 애플리케이션 역할에 할당되지 않은 경우 이는 Microsoft Entra ID 및 SAP Cloud Identity Services 간에 공통된 사용자가 없음을 나타내므로 변경이 필요하지 않습니다. 그러나 SAP Cloud Identity Services에 이미 있는 하나 이상의 사용자가 현재 애플리케이션 역할에 할당되지 않은 경우 절차를 계속 진행하여 애플리케이션의 역할 중 하나에 추가해야 합니다.

  4. User 애플리케이션 서비스 주체의 역할을 선택합니다.

    $azuread_app_role_name = "User"
    $azuread_app_role_id = ($azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User" -and $_.DisplayName -eq "User"}).Id
    if ($null -eq $azuread_app_role_id) { write-error "role $azuread_app_role_name not located in application manifest"}
    
  5. SAP Cloud Identity Services 및 Microsoft Entra에 이미 있고 현재 애플리케이션에 대한 역할 할당이 없는 사용자를 위한 애플리케이션 역할 할당을 만듭니다.

    foreach ($u in $azuread_not_in_role_list) {
       $res = New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -AppRoleId $azuread_app_role_id -PrincipalId $u -ResourceId $azuread_sp.Id
    }
    
  6. 변경 사항이 Microsoft Entra ID 내에 전파되도록 1분 정도 기다립니다.

  7. 다음 Microsoft Entra 프로비저닝 주기에서 Microsoft Entra 프로비저닝 서비스는 애플리케이션에 할당된 사용자의 표현과 SAP Cloud Identity Services의 표현을 비교하고, MICROSOFT Entra ID의 특성을 갖도록 SAP Cloud Identity Services 사용자를 업데이트합니다.

다시 기본 사용자 할당 및 초기 동기화 모니터링

테스트가 완료되면 사용자가 SAP Cloud Identity Services에 성공적으로 프로비전되고 기존 SAP Cloud Identity Services 사용자가 애플리케이션 역할에 할당되면 다음 지침 중 하나에 따라 SAP Cloud Identity Services 애플리케이션에 추가 권한 있는 사용자를 할당할 수 있습니다.

사용자가 애플리케이션 역할에 할당되고 프로비저닝 범위에 포함되면 Microsoft Entra 프로비저닝 서비스가 SAP Cloud Identity Services에 프로비전합니다. 초기 동기화는 Microsoft Entra 프로비저닝 서비스가 실행되는 동안 약 40분마다 발생하는 후속 동기화보다 더 오래 걸립니다.

프로비전 중인 사용자가 표시되지 않는 경우 프로비전되는 사용자가 없는 경우 문제 해결 가이드의 단계를 검토합니다. 그런 다음 Microsoft Entra 관리 센터 또는 Graph API를 통해 프로비저닝 로그를 검사. 로그를 실패 상태로 필터링합니다. DuplicateTargetEntries의 ErrorCode와 함께 오류가 발생하는 경우 이는 프로비전 일치 규칙의 모호성을 나타내며 각 Microsoft Entra 사용자가 애플리케이션 사용자 한 명과 일치하도록 일치에 사용되는 Microsoft Entra 사용자나 매핑을 업데이트해야 합니다. 그런 다음, 로그를 작업 만들기건너뜀 상태로 필터링합니다. 사용자가 NotEffectivelyEntitled의 SkipReason 코드를 건너뛴 경우 이는 사용자 계정 상태가 사용 안 함이므로 Microsoft Entra ID 사용자 계정이 일치하지 않음을 나타낼 수 있습니다.

Single Sign-On 구성

SAP Cloud Identity Services Single Sign-On 자습서에 제공된 지침에 따라 SAP Cloud Identity Services에 대해 SAML 기반 Single Sign-On을 사용하도록 선택할 수도 있습니다. Single Sign-On은 자동 사용자 프로비저닝과 별개로 구성할 수 있지만, 이러한 두 기능은 서로 보완적입니다.

프로비저닝 모니터링

동기화 세부 정보 섹션을 사용하여 진행 상태를 모니터링하고, SAP Cloud Identity Services의 Microsoft Entra 프로비전 서비스에서 수행한 모든 작업을 설명하는 프로비전 작업 보고서에 대한 링크를 따라 이동할 수 있습니다. Microsoft Graph API를 통해 프로비저닝 프로젝트를 모니터링할 수도 있습니다.

Microsoft Entra 프로비전 로그를 읽는 방법에 대한 자세한 내용은 자동 사용자 계정 프로비전에 대한 보고를 참조하세요.

애플리케이션 역할 할당 유지 관리

애플리케이션에 할당된 사용자가 Microsoft Entra ID로 업데이트되면 해당 변경 내용이 SAP Cloud Identity Services에 자동으로 프로비전됩니다.

Microsoft Entra ID 거버넌스가 있는 경우 Microsoft Entra ID에서 SAP Cloud Identity Services에 대한 애플리케이션 역할 할당에 대한 변경 내용을 자동화하여 사용자가 조직에 가입할 때 할당을 추가 또는 제거하거나 역할을 나가거나 변경할 수 있습니다.

추가 리소스

다음 단계