Share via


PowerShell betiği ile API temelli gelen sağlama

Bu öğreticide, Microsoft Entra ID API temelli gelen sağlamayı uygulamak için PowerShell betiğinin nasıl kullanılacağı açıklanmaktadır. Bu öğreticideki adımları kullanarak İk verilerini içeren bir CSV dosyasını toplu istek yüküne dönüştürebilir ve microsoft Entra sağlama /bulkUpload API uç noktasına gönderebilirsiniz. Makale ayrıca, aynı tümleştirme düzeninin herhangi bir kayıt sistemiyle nasıl kullanılabileceğini gösteren rehberlik sağlar.

Tümleştirme senaryosu

İş gereksinimi

Kayıt sisteminiz, çalışan verilerini içeren CSV dosyası dışarı aktarmalarını düzenli aralıklarla oluşturur. CSV dosyasındaki verileri okuyan ve hedef dizininizde kullanıcı hesaplarını otomatik olarak sağlayan bir tümleştirme uygulamak istiyorsunuz (karma kullanıcılar için şirket içi Active Directory ve yalnızca bulut kullanıcıları için Microsoft Entra Id).

Uygulama gereksinimi

Uygulama açısından bakıldığında:

  • CSV dosyası dışarı aktarmalarından verileri okumak ve gelen sağlama API'sinin uç noktasına göndermek için katılımsız bir PowerShell betiği kullanmak istiyorsunuz.
  • PowerShell betiğinizde, kayıt sisteminizle hedef dizin arasında kimlik verilerini karşılaştırmak için karmaşık mantık uygulamak istemezsiniz.
  • Hedef dizinde (şirket içi Active Directory veya Microsoft Entra Id) hesapları otomatik olarak oluşturmak/güncelleştirmek/etkinleştirmek/devre dışı bırakmak için BT yönetilen sağlama kurallarınızı uygulamak için Microsoft Entra sağlama hizmetini kullanmak istiyorsunuz.

Graphic of PowerShell-based integration.

Tümleştirme senaryosu varyasyonları

Bu öğreticide kayıt sistemi olarak bir CSV dosyası kullanılırken, herhangi bir kayıt sisteminden verileri okumak için örnek PowerShell betiğini özelleştirebilirsiniz. Burada, API temelli gelen sağlamanın bir PowerShell betiğiyle uygulanabildiği kurumsal tümleştirme senaryosu çeşitlemelerinin listesi verilmiştir.

# Kayıt sistemi Kaynak verileri okumak için PowerShell kullanmayla ilgili tümleştirme kılavuzu
1 Veritabanı tablosu Azure SQL veritabanı veya şirket içi SQL Server kullanıyorsanız, SQL veritabanının tablosunda depolanan verileri okumak için Read-SqlTableData cmdlet'ini kullanabilirsiniz. Transact-SQL veya XQuery betiklerini çalıştırmak için Invoke-SqlCmd cmdlet'ini kullanabilirsiniz.
Oracle / MySQL / Postgres veritabanı kullanıyorsanız, satıcı tarafından yayımlanan veya PowerShell Galerisi kullanılabilir bir PowerShell modülü bulabilirsiniz. Veritabanı tablonuzdaki verileri okumak için modülünü kullanın.
2 LDAP sunucusu LDAP sunucunuzu sorgulamak System.DirectoryServices.Protocols için .NET API'sini veya PowerShell Galerisi kullanılabilir LDAP modüllerinden birini kullanın. LDAP sunucusundan kullanıcı verilerini almak için LDAP şemasını ve hiyerarşisini anlayın.
3 REST API'lerini kullanıma sunan tüm sistem PowerShell kullanarak REST API uç noktasından veri okumak için modüldeki Invoke-RestMethod cmdlet'iniMicrosoft.PowerShell.Utility kullanabilirsiniz. REST API'nizin belgelerine bakın ve hangi parametreleri ve üst bilgileri beklediğini, hangi biçimi döndürdüğü ve hangi kimlik doğrulama yöntemini kullandığını öğrenin. Ardından komutunuzu buna göre ayarlayabilirsiniz Invoke-RestMethod .
4 SOAP API'lerini kullanıma sunan tüm sistem PowerShell kullanarak bir SOAP API uç noktasından veri okumak için modüldeki New-WebServiceProxy cmdlet'ini Microsoft.PowerShell.Management kullanabilirsiniz. SOAP API'nizin belgelerine bakın ve hangi parametreleri ve üst bilgileri beklediğini, hangi biçimi döndürdüğü ve hangi kimlik doğrulama yöntemini kullandığını öğrenin. Ardından komutunuzu buna göre ayarlayabilirsiniz New-WebServiceProxy .

Kaynak verileri okuduktan sonra ön işleme kurallarınızı uygulayın ve kayıt sisteminizdeki çıkışı Microsoft Entra sağlama bulkUpload API uç noktasına gönderilebilen bir toplu isteğe dönüştürün.

Önemli

PowerShell tümleştirme betiğinizi toplulukla paylaşmak isterseniz, bunu PowerShell Galerisi yayımlayın ve GitHub deposunda entra-id-inbound-provisioningbize bildirin; böylece başvuru ekleyebiliriz.

Bu öğreticiyi kullanma

Microsoft Entra gelen sağlama GitHub deposunda yayımlanan PowerShell örnek betiği çeşitli görevleri otomatikleştirir. Büyük CSV dosyalarını işleme ve her istekte 50 kayıt göndermek için toplu isteği öbekleme mantığı vardır. Bunu test edip tümleştirme gereksinimlerinize göre özelleştirme burada anlatılabilir.

Not

Örnek PowerShell betiği, uygulama başvurusu için "olduğu gibi" sağlanır. Betikle ilgili sorularınız varsa veya betiği geliştirmek istiyorsanız lütfen GitHub proje deposunu kullanın.

# Otomasyon görevi Uygulama kılavuzu Gelişmiş Özelleştirme
1 CSV dosyasından çalışan verilerini okuyun. PowerShell betiğini indirin. Herhangi bir CSV dosyasındaki verileri okumak için kullanıma hazır mantığı vardır. Bu betiğin farklı yürütme modlarını tanımak için CSV2SCIM PowerShell kullanım ayrıntılarına bakın. Kayıt sisteminiz farklıysa, PowerShell betiğini nasıl özelleştirebileceğinize ilişkin Tümleştirme senaryosu varyasyonları bölümünde sağlanan yönergeleri denetleyin.
2 Verileri önceden işleyin ve SCIM biçimine dönüştürün. Varsayılan olarak, PowerShell betiği CSV dosyasındaki her kaydı SCIM Core User + Enterprise User gösterimine dönüştürür. Bu işlemi tanımak için Standart şemayla toplu istek yükü oluşturma bölümündeki adımları izleyin. CSV dosyanızda farklı alanlar varsa, geçerli bir SCIM kullanıcısı oluşturmak için AttributeMapping.psd dosyasının ayarlarını yapın. Özel SCIM şemasıyla toplu istek de oluşturabilirsiniz. PowerShell betiğini herhangi bir özel CSV veri doğrulama mantığını içerecek şekilde güncelleştirin.
3 Microsoft Entra Id kimlik doğrulaması için bir sertifika kullanın. Gelen sağlama API'sine erişebilen bir hizmet sorumlusu oluşturun. Kimlik doğrulaması için istemci sertifikasının nasıl kullanılacağını öğrenmek için Hizmet sorumlusu kimlik doğrulaması için istemci sertifikasını yapılandırma bölümündeki adımlara bakın. Kimlik doğrulaması için hizmet sorumlusu yerine yönetilen kimlik kullanmak istiyorsanız, örnek betikte kullanımını Connect-MgGraph gözden geçirin ve yönetilen kimlikleri kullanacak şekilde güncelleştirin.
4 hesapları şirket içi Active Directory veya Microsoft Entra Kimliği'nde sağlayın. API temelli gelen sağlama uygulamasını yapılandırın. Bu, benzersiz bir /bulkUpload API uç noktası oluşturur. Bu uç noktaya veri yüklemeyi öğrenmek için Toplu istek yükünü yönetici kullanıcı olarak oluşturma ve yükleme bölümündeki adımlara bakın. Öznitelik akışını doğrulayın ve tümleştirme gereksinimlerinize göre öznitelik eşlemelerini özelleştirin. Betiği sertifika tabanlı kimlik doğrulamasıyla bir hizmet sorumlusu kullanarak çalıştırmak için İstemci sertifikası kimlik doğrulamasını kullanarak toplu istek yükünü karşıya yükleme bölümündeki adımlara bakın Özel SCIM şemasıyla toplu istek kullanmayı planlıyorsanız, sağlama uygulaması şemasını özel SCIM şema öğelerinizi içerecek şekilde genişletin.
5 Sağlama günlüklerini tarayın ve başarısız kayıtlar için sağlamayı yeniden deneyin. Sağlama günlüğü verilerini getirmeyi ve çözümlemeyi öğrenmek için En son eşitleme döngülerinin sağlama günlüklerini alma bölümündeki adımlara bakın. Başarısız kullanıcı kayıtlarını belirleyin ve bir sonraki karşıya yükleme döngüsüne ekleyin. -
6 PowerShell tabanlı otomasyonunuzu üretim ortamına dağıtın. API temelli sağlama akışınızı doğruladıktan ve PowerShell betiğini gereksinimlerinizi karşılayacak şekilde özelleştirdikten sonra, otomasyonu Azure Otomasyonu'de powershell iş akışı runbook'u olarak veya Windows sunucusunda çalışmak üzere zamanlanmış bir sunucu işlemi olarak dağıtabilirsiniz. -

PowerShell betiğini indirme

  1. GitHub deposuna erişin entra-id-inbound-provisioning.
  2. Bu deponun içeriğini yerel klasörünüzde kopyalamak için Code ->Clone veya Code ->Download ZIP seçeneğini kullanın.
  3. PowerShell/CSV2SCIM klasörüne gidin. Aşağıdaki dizin yapısına sahiptir:
    • Src
      • CSV2SCIM.ps1 (ana betik)
      • ScimSchemaRepresentations (AttributeMapping.psd1 dosyalarını doğrulamak için standart SCIM şema tanımlarını içeren klasör)
        • EnterpriseUser.json, Group.json, Schema.json User.json
    • Örnekleri
      • AttributeMapping.psd1 (CSV dosyasındaki sütunların standart SCIM özniteliklerine örnek eşlemesi)
      • csv-with-2-records.csv (iki kaydı olan örnek CSV dosyası)
      • csv-with-1000-records.csv (1000 kaydı olan örnek CSV dosyası)
      • Test-ScriptCommands.ps1 (örnek kullanım komutları)
      • UseClientCertificate.ps1 (otomatik olarak imzalanan sertifika oluşturmak ve OAuth akışında kullanmak üzere hizmet sorumlusu kimlik bilgisi olarak yüklemek için betik)
      • Sample1 (CSV dosya sütunlarının SCIM standart özniteliklerine nasıl eşlenebileceğini gösteren daha fazla örnek içeren klasör. Çalışanlar, yükleniciler, stajyerler için farklı CSV dosyaları alırsanız, her varlık için ayrı bir AttributeMapping.psd1 dosyası oluşturabilirsiniz.)
  4. PowerShell'in en son sürümünü indirin ve yükleyin.
  5. Uzaktan imzalı betiklerin yürütülmesini etkinleştirmek için komutunu çalıştırın:
    set-executionpolicy remotesigned
    
  6. Aşağıdaki önkoşul modüllerini yükleyin:
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

Standart şema ile toplu istek yükü oluşturma

Bu bölümde, CSV dosyasından standart SCIM Core User ve Enterprise User öznitelikleriyle toplu istek yükünün nasıl oluşturulacağı açıklanmaktadır. Yordamı göstermek için CSV dosyasını Samples/csv-with-2-records.csvkullanalım.

  1. Dosyada bulunan sütunları denetlemek için CSV dosyasını Samples/csv-with-2-records.csv Not Defteri++ veya Excel'de açın. Screenshot of columns in Excel.

  2. Not Defteri++ veya Visual Studio Code gibi bir kaynak kod düzenleyicisinde, CSV dosya sütunlarının SCIM standart şema özniteliklerine eşlenmeye olanak tanıyan PowerShell veri dosyasını Samples/AttributeMapping.psd1 açın. Kullanıma hazır olarak gönderilen dosyada CSV dosya sütunlarının ilgili SCIM şema öznitelikleriyle önceden yapılandırılmış eşlemesi zaten var.

        @{
        externalId   = 'WorkerID'
        name         = @{
            familyName = 'LastName'
            givenName  = 'FirstName'
        }
        active       = { $_.'WorkerStatus' -eq 'Active' }
        userName     = 'UserID'
        displayName  = 'FullName'
        nickName     = 'UserID'
        userType     = 'WorkerType'
        title        = 'JobTitle'
        addresses    = @(
            @{
                type          = { 'work' }
                streetAddress = 'StreetAddress'
                locality      = 'City'
                postalCode    = 'ZipCode'
                country       = 'CountryCode'
            }
        )
        phoneNumbers = @(
            @{
                type  = { 'work' }
                value = 'OfficePhone'
            }
        )
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
            employeeNumber = 'WorkerID'
            costCenter     = 'CostCenter'
            organization   = 'Company'
            division       = 'Division'
            department     = 'Department'
            manager        = @{
                value = 'ManagerID'
            }
        }
    }
    
  3. PowerShell'i açın ve CSV2SCIM\src dizinine geçin.

  4. Değişkeni başlatmak AttributeMapping için aşağıdaki komutu çalıştırın.

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. Dosyanın geçerli SCIM şema özniteliklerine sahip olup olmadığını AttributeMapping doğrulamak için aşağıdaki komutu çalıştırın. Doğrulama başarılı olursa bu komut True döndürür.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. Dosyanın userId adlı geçersiz bir SCIM özniteliği olduğunu varsayalımAttributeMapping, ardından ValidateAttributeMapping mod aşağıdaki hatayı görüntüler.

    Screenshot of a mapping error.

  7. Dosyanın geçerli olduğunu AttributeMapping doğruladıktan sonra, csv dosyasında bulunan iki kaydı içeren dosyada BulkRequestPayload.json toplu istek oluşturmak için aşağıdaki komutu çalıştırın.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. SCIM özniteliklerinin dosyasında BulkRequestPayload.json tanımlanan eşlemeye göre ayarlandığını doğrulamak için dosyanın AttributeMapping.psd1içeriğini açabilirsiniz.

  9. Yukarıda olduğu gibi oluşturulan dosyayı Graph Gezgini veya Postman veya cURL kullanarak sağlama uygulamanızla ilişkili /bulkUpload API uç noktasına gönderebilirsiniz. Başvuru:

  10. Oluşturulan yükü aynı PowerShell betiğini kullanarak DOĞRUDAN API uç noktasına yüklemek için sonraki bölüme bakın.

Toplu istek yükünü yönetici kullanıcı olarak oluşturma ve karşıya yükleme

Bu bölümde, oluşturulan toplu istek yükünün gelen sağlama API'si uç noktanıza nasıl gönderilmesi açıklanır.

  1. En azından Bir Uygulama Yönetici istrator olarak Microsoft Entra yönetim merkezinizde oturum açın.

  2. Sağlama Uygulaması>Özellikleri>Nesne Kimliği'ne gidin ve sağlama uygulamanızla ilişkili öğesini ServicePrincipalId kopyalayın.

    Screenshot of the Object ID.

  3. Genel Yönetici istrator rolüne sahip bir kullanıcı olarak ve TenantIdiçin ServicePrincipalId doğru değerleri sağlayarak aşağıdaki komutu çalıştırın. Bu kiracı için kimliği doğrulanmış bir oturum yoksa sizden kimlik doğrulamasını ister. Kimlik doğrulaması sırasında istenen izinler için onayınızı sağlayın.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com"
    
  4. Yukarıdaki isteğin işlendiğini doğrulamak için sağlama uygulamanızın Sağlama günlükleri dikey penceresini ziyaret edin.

Hizmet sorumlusu kimlik doğrulaması için istemci sertifikasını yapılandırma

Not

Buradaki yönergelerde otomatik olarak imzalanan bir sertifikanın nasıl oluşturulacağı gösterilmektedir. Otomatik olarak imzalanan sertifikalara varsayılan olarak güvenilmez ve bunların bakımı zor olabilir. Ayrıca, güçlü olmayan eski karma ve şifreleme paketlerini de kullanabilirler. Daha iyi güvenlik için, iyi bilinen bir sertifika yetkilisi tarafından imzalanan bir sertifika satın alın.

  1. Otomatik olarak imzalanan yeni bir sertifika oluşturmak için aşağıdaki PowerShell betiğini çalıştırın. İyi bilinen bir sertifika yetkilisi tarafından imzalanmış bir sertifika satın aldıysanız bu adımı atlayabilirsiniz.
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    Oluşturulan sertifika Geçerli Kullanıcı\Kişisel\Sertifikalar'da depolanır. Denetim Masası ->Kullanıcı sertifikalarını yönet seçeneğini kullanarak görüntüleyebilirsiniz.
  2. Bu sertifikayı geçerli bir hizmet sorumlusuyla ilişkilendirmek için Microsoft Entra yönetim merkezinizde Application Yönetici istrator olarak oturum açın.
  3. Uygulama Kayıtları altında yapılandırdığınız hizmet sorumlusunu açın.
  4. Genel Bakış dikey penceresinden Nesne Kimliğini kopyalayın. dizesini <AppObjectId>değiştirmek için değerini kullanın. Uygulama (istemci) kimliğini kopyalayın. Daha sonra kullanacağız ve olarak <AppClientId>başvuracağız.
  5. Sertifikanızı kayıtlı hizmet sorumlusuna yüklemek için aşağıdaki komutu çalıştırın.
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    Sertifikayı kayıtlı uygulamanızın Sertifikalar ve gizli diziler dikey penceresinde görmeniz gerekir. Screenshot of client certificate.
  6. Hizmet sorumlusu uygulamasına aşağıdaki iki Uygulama izin kapsamını ekleyin: Application.Read.All ve Synchronization.Read.All. PowerShell betiğinin tarafından sağlama uygulamasını ServicePrincipalId araması ve sağlamayı JobIdgetirmesi için bunlar gereklidir.

İstemci sertifikası kimlik doğrulamayı kullanarak toplu istek yükünü karşıya yükleme

Bu bölümde, oluşturulan toplu istek yükünün güvenilen bir istemci sertifikası kullanarak gelen sağlama API'si uç noktanıza nasıl gönderilme şekli açıklanmaktadır.

  1. Yapılandırdığınız API temelli sağlama uygulamasını açın. ServicePrincipalId Sağlama>Uygulaması Özellikleri>Nesne Kimliği'nden sağlama uygulamanızla ilişkili öğesini kopyalayın.

    Screenshot of the Object ID.

  2. ve TenantIdiçin ServicePrincipalIdClientId doğru değerleri sağlayarak aşağıdaki komutu çalıştırın.

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -TenantId "contoso.onmicrosoft.com" -ServicePrincipalId "<ProvisioningAppObjectId>" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint)
    
  3. Yukarıdaki isteğin işlendiğini doğrulamak için sağlama uygulamanızın Sağlama günlükleri dikey penceresini ziyaret edin.

Özel SCIM şemasıyla toplu istek oluşturma

Bu bölümde, CSV dosyasındaki alanlardan oluşan özel SCIM şema ad alanıyla toplu istek oluşturma işlemi açıklanmaktadır.

  1. Not Defteri++ veya Visual Studio Code gibi bir kaynak kod düzenleyicisinde, CSV dosya sütunlarının SCIM standart şema özniteliklerine eşlenmeye olanak tanıyan PowerShell veri dosyasını Samples/AttributeMapping.psd1 açın. Kullanıma hazır olarak gönderilen dosyada CSV dosya sütunlarının ilgili SCIM şema öznitelikleriyle önceden yapılandırılmış eşlemesi zaten var.

  2. PowerShell'i açın ve CSV2SCIM\src dizinine geçin.

  3. Değişkeni başlatmak AttributeMapping için aşağıdaki komutu çalıştırın.

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. Dosyanın geçerli SCIM şema özniteliklerine sahip olup olmadığını AttributeMapping doğrulamak için aşağıdaki komutu çalıştırın. Doğrulama başarılı olursa bu komut True döndürür.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. SCIM Core User ve Enterprise User özniteliklerine ek olarak, özel bir SCIM şema ad alanı urn:ietf:params:scim:schemas:extension:contoso:1.0:Useraltındaki tüm CSV alanlarının düz listesini almak için aşağıdaki komutu çalıştırın.

     .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"  > BulkRequestPayloadWithCustomNamespace.json
    

    CSV alanları özel SCIM şema ad alanı altında gösterilir. Screenshot of user details under custom schema.

Sağlama işi şemasını genişletme

genellikle İk ekipleri tarafından gönderilen veri dosyası standart SCIM şemasında doğrudan temsili olmayan daha fazla öznitelik içerir. Bu tür öznitelikleri temsil etmek için bir SCIM uzantısı şeması oluşturmanızı ve bu ad alanına öznitelikler eklemenizi öneririz.

CSV2SCIM betiği, CSV dosyasındaki tüm sütunları okuyan, bunları bir uzantı şeması ad alanına ekleyen ve sağlama uygulaması şemasını güncelleştiren adlı UpdateSchema bir yürütme modu sağlar.

Not

Öznitelik uzantıları sağlama uygulaması şemasında zaten varsa, bu mod yalnızca öznitelik uzantısının zaten var olduğuna dair bir uyarı gösterir. Bu nedenle, CSV dosyasına yeni alanlar eklenirse ve bunları uzantı olarak eklemek istiyorsanız UpdateSchema modunda CSV2SCIM betiğini çalıştırırken sorun olmaz.

Yordamı göstermek için CSV2SCIM klasöründe bulunan CSV dosyasını Samples/csv-with-2-records.csv kullanacağız.

  1. Dosyada bulunan sütunları denetlemek için CSV dosyasını Samples/csv-with-2-records.csv Not Defteri, Excel veya TextPad'de açın.

    Screenshot of how to check CSV columns.

  2. Şu komutu çalıştırın:

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -UpdateSchema -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"
    
  3. Öznitelik Eşleme sayfasını açıp Gelişmiş seçenekler'in altındaki API için öznitelik listesini düzenle seçeneğine erişerek sağlama uygulaması şemanıza yönelik güncelleştirmeyi doğrulayabilirsiniz.

  4. Öznitelik Listesi, yeni ad alanının altındaki öznitelikleri gösterir.

En son eşitleme döngülerinin sağlama günlüklerini alma

Toplu isteği gönderdikten sonra, Microsoft Entra Id tarafından işlenen en son eşitleme döngülerinin günlüklerini sorgulayabilirsiniz. Eşitleme istatistiklerini ve işlem ayrıntılarını PowerShell betiğiyle alabilir ve analiz için kaydedebilirsiniz.

  1. Konsolda günlük ayrıntılarını görüntülemek ve istatistikleri eşitlemek için aşağıdaki komutu çalıştırın:

    .\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs -NumberOfCycles 1
    

    Screenshot of sync statistics.

    Not

    NumberOfCycles varsayılan olarak 1'dir. Daha fazla eşitleme döngüsü almak için bir sayı belirtin.

  2. Konsolunda eşitleme istatistiklerini görüntülemek ve günlük ayrıntılarını bir değişkene kaydetmek için aşağıdaki komutu çalıştırın:

    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs
    

    İstemci sertifikası kimlik doğrulamasını kullanarak komutu çalıştırmak için, ve TenantIdiçin ServicePrincipalIdClientId doğru değerleri sağlayarak komutunu çalıştırın:

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId "<ProvisioningAppObjectId>" -TenantId "contoso.onmicrosoft.com" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint) -GetPreviousCycleLogs -NumberOfCycles 1
    
    • Belirli bir kaydın ayrıntılarını görmek için koleksiyona döngü yapabilir veya belirli bir dizinini seçebiliriz, örneğin: $logs[0]

      Screenshot of a selected index.

    • SourceID veya DisplayName kullanarak belirli bir kaydı aramak için deyimini de kullanabiliriz where-object . ProvisioningLogs özelliğinde, ilgili kayıt için yapılan işlemin tüm ayrıntılarını bulabiliriz.

      $user = $logs | where sourceId -eq '1222'
      $user.ProvisioningLogs | fl
      

      Screenshot of provisioning logs.

    • Etkilenen belirli kullanıcı özelliklerini ModifiedProperties özniteliğinde görebiliriz. $user.ProvisioningLogs.ModifiedProperties

      Screenshot of properties.

Ek

PowerShell kullanım ayrıntılarını CSV2SCIM

CSV2SCIM PowerShell betiği tarafından kabul edilen komut satırı parametrelerinin listesi aşağıdadır.

PS > CSV2SCIM.ps1 -Path <path-to-csv-file> 
[-ScimSchemaNamespace <customSCIMSchemaNamespace>] 
[-AttributeMapping $AttributeMapping] 
[-ServicePrincipalId <spn-guid>] 
[-ValidateAttributeMapping]
[-UpdateSchema]
[-ClientId <client-id>]
[-ClientCertificate <certificate-object>]
[-RestartService]

Not

AttributeMapping ve ValidateAttributeMapping komut satırı parametreleri, CSV sütun özniteliklerinin standart SCIM şema öğelerine eşlemini ifade eder. Kaynak SCIM şema öğeleri ve hedef Microsoft Entra / şirket içi Active Directory öznitelikleri arasında Microsoft Entra yönetim merkezi sağlama uygulamasında gerçekleştirdiğiniz öznitelik eşlemelerine başvurmaz.

Parametre Açıklama Açıklamalar işleniyor
Yol CSV dosyasının tam veya göreli yolu. Örneğin: .\Samples\csv-with-1000-records.csv Zorunlu: Evet
ScimSchemaNamespace CSV dosyasındaki tüm sütunları belirli ad alanına ait özel SCIM öznitelikleri olarak göndermek için kullanılacak özel SCIM Şeması ad alanı. Örneğin urn:ietf:params:scim:schemas:extension:csv:1.0:User Zorunlu: Yalnızca şunları yapmak istediğinizde:
- Sağlama uygulaması şemasını güncelleştirin veya
Yüke özel SCIM öznitelikleri eklemek istediğinizde.
AttributeMapping CSV dosyasındaki sütunları SCIM Core User ve Enterprise User öznitelikleriyle eşleyen bir PowerShell Verisi (.psd1 uzantısı) dosyasını gösterir.
Örnek: CSV2SCIM betiği için AttributeMapping.psd dosyası.
Örneğin: powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
Zorunlu: Evet
Bunu belirtmeniz gerekmediğinde tek senaryo anahtarı kullanmaktır UpdateSchema .
ValidateAttributeMapping AttributeMapping dosyasının SCIM Core ve Enterprise kullanıcı şemasıyla uyumlu öznitelikler içerdiğini doğrulamak için bu Switch bayrağını kullanın. Zorunlu: Hayır
Uyumluluğu sağlamak için bunu kullanmanız önerilir.
ServicePrincipalId Sağlama>Uygulaması Özellikleri>Nesne Kimliği'nden aldığınız sağlama uygulamanızın hizmet sorumlusu kimliğinin GUID değeri Zorunlu: Yalnızca şunları yapmak istediğinizde:
- Sağlama uygulaması şemasını güncelleştirin veya
- Oluşturulan toplu isteği API uç noktasına gönderin.
UpdateSchema Betiğin CSV sütunlarını okumasını ve bunları sağlama uygulama şemanıza özel SCIM öznitelikleri olarak eklemesini bildirmek için bu anahtarı kullanın.
ClientId OAuth kimlik doğrulaması akışı için kullanılacak Microsoft Entra kayıtlı uygulamasının İstemci Kimliği. Bu uygulamanın geçerli sertifika kimlik bilgileri olmalıdır. Zorunlu: Yalnızca sertifika tabanlı kimlik doğrulaması gerçekleştirirken.
ClientCertificate OAuth akışı sırasında kullanılacak İstemci Kimlik Doğrulama Sertifikası. Zorunlu: Yalnızca sertifika tabanlı kimlik doğrulaması gerçekleştirirken.
GetPreviousCycleLogs En son eşitleme döngülerinin sağlama günlüklerini almak için.
NumberOfCycles Kaç eşitleme döngüsünün alınması gerektiğini belirtmek için. Bu değer varsayılan olarak 1'dir.
RestartService Bu seçenekle betik, verileri karşıya yüklemeden önce sağlama işini geçici olarak duraklatır, verileri karşıya yükler ve ardından yükün hemen işlenmesini sağlamak için işi yeniden başlatır. Bu seçeneği yalnızca test sırasında kullanın.

AttributeMapping.psd dosyası

Bu dosya, CSV dosyasındaki sütunları standart SCIM Core User ve Enterprise User öznitelik şema öğeleriyle eşlemek için kullanılır. Dosya ayrıca CSV dosya içeriğinin uygun bir gösterimini toplu istek yükü olarak oluşturur.

Sonraki örnekte CSV dosyasındaki aşağıdaki sütunları karşılık gelen SCIM Core User ve Enterprise User öznitelikleriyle eşleştirdik.

Screenshot of CSV columns for mapped attributes.

    @{
    externalId   = 'WorkerID'
    name         = @{
        familyName = 'LastName'
        givenName  = 'FirstName'
    }
    active       = { $_.'WorkerStatus' -eq 'Active' }
    userName     = 'UserID'
    displayName  = 'FullName'
    nickName     = 'UserID'
    userType     = 'WorkerType'
    title        = 'JobTitle'
    addresses    = @(
        @{
            type          = { 'work' }
            streetAddress = 'StreetAddress'
            locality      = 'City'
            postalCode    = 'ZipCode'
            country       = 'CountryCode'
        }
    )
    phoneNumbers = @(
        @{
            type  = { 'work' }
            value = 'OfficePhone'
        }
    )
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
        employeeNumber = 'WorkerID'
        costCenter     = 'CostCenter'
        organization   = 'Company'
        division       = 'Division'
        department     = 'Department'
        manager        = @{
            value = 'ManagerID'
        }
    }
}

Sonraki adımlar