Share via


MS Graph API kullanarak bulut eşitlemeyi program aracılığıyla yapılandırma

Aşağıdaki belgede, yalnızca MSGraph API'lerini kullanarak eşitleme profilini sıfırdan çoğaltma işlemi açıklanmaktadır.
Eşitleme profilini çoğaltmanın yapısı aşağıdaki adımlardan oluşur. Bunlar:

Bu Microsoft Graph PowerShell komutlarını, söz konusu kiracı için Yönetici istration Web Hizmeti'ni çağırabilmek için bir önkoşul olan üretim kiracısı için eşitlemeyi etkinleştirmek için kullanın.

Temel kurulum

Kiracı bayraklarını etkinleştirme

Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All" ('-Environment <AzureEnvironment>')
$organizationId = (Get-MgOrganization).Id
$params = @{
	onPremisesSyncEnabled = $true
}
Update-MgBetaOrganization -OrganizationId $organizationId -BodyParameter $params

Bu cmdlet bir kiracı için eşitlemeyi etkinleştirir. Kuruluşun kimliğini almak için Get-MgOrganization kullanır.

Hizmet sorumlusu oluşturma

Ardından AD2AAD uygulaması/hizmet sorumlusu oluşturmamız gerekiyor

Bu uygulama kimliğini 1a4721b3-e57f-4451-ae87-ef078703ec94 kullanmanız gerekir. displayName, portalda kullanılıyorsa (örneğin, contoso.com) AD etki alanı URL'sidir, ancak başka bir adla adlandırılabilir.

POST https://graph.microsoft.com/beta/applicationTemplates/1a4721b3-e57f-4451-ae87-ef078703ec94/instantiate
Content-type: application/json
{
    displayName: [your app name here]
}

Eşitleme işi oluşturma

Yukarıdaki komutun çıkışı, oluşturulan hizmet sorumlusunun objectId değerini döndürür. Bu örnekte objectId değeri aaaaaaa-0000-1111-2222-bbbbbbbbbbbbbb'dir. Bu hizmet sorumlusuna bir synchronizationJob eklemek için Microsoft Graph'ı kullanın.

Eşitleme işi oluşturmaya yönelik belgelere buradan ulaşabilirsiniz.

Kimliği kaydetmediyseniz, aşağıdaki MS Graph çağrısını çalıştırarak hizmet sorumlusunu bulabilirsiniz. Bu çağrıyı yapmak için Directory.Read.All izinlerine ihtiyacınız vardır:

GET https://graph.microsoft.com/beta/servicePrincipals

Ardından çıkışta uygulama adınızı arayın.

İki iş oluşturmak için aşağıdaki iki komutu çalıştırın: biri kullanıcı/grup sağlama, diğeri de parola karması eşitlemesi için. Bu, farklı şablon kimlikleriyle iki kez aynı istektir.

Aşağıdaki iki isteği çağırın:

POST https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs
Content-type: application/json
{
"templateId":"AD2AADProvisioning"
} 
POST https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs
Content-type: application/json
{
"templateId":"AD2AADPasswordHash"
}

Her ikisini de oluşturmak istiyorsanız iki çağrıya ihtiyacınız vardır.

Örnek dönüş değeri (sağlama için):

HTTP 201/Created
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals('aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbc')/synchronization/jobs/$entity",
    "id": "AD2AADProvisioning.fc96887f36da47508c935c28a0c0b6da",
    "templateId": "ADDCInPassthrough",
    "schedule": {
        "expiration": null,
        "interval": "PT40M",
        "state": "Disabled"
    },
    "status": {
        "countSuccessiveCompleteFailures": 0,
        "escrowsPruned": false,
        "code": "Paused",
        "lastExecution": null,
        "lastSuccessfulExecution": null,
        "lastSuccessfulExecutionWithExports": null,
        "quarantine": null,
        "steadyStateFirstAchievedTime": "0001-01-01T00:00:00Z",
        "steadyStateLastAchievedTime": "0001-01-01T00:00:00Z",
        "troubleshootingUrl": null,
        "progress": [],
        "synchronizedEntryCountByType": []
    }
}

Hedeflenen etki alanını güncelleştirme

Bu kiracı için, hizmet sorumlusunun nesne tanımlayıcısı ve uygulama tanımlayıcısı aşağıdaki gibidir:

ObjectId: bbbbbbbb-1111-2222-3333-cccccccccccc AppId: 0000111-aaaa-2222-bbbb-3333cccccc4444 DisplayName: testApp

Bu yapılandırmanın hedeflediğimiz etki alanını güncelleştirmemiz gerekecek, bu nedenle bu etki alanının gizli dizilerini güncelleştirin.

Kullandığınız etki alanı adının, şirket içi etki alanı denetleyiciniz için ayarladığınız URL ile aynı olduğundan emin olun.

PUT – https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/secrets

Aşağıdaki anahtar/değer çiftini, yapmaya çalıştığınız şeye göre aşağıdaki değer dizisine ekleyin:

  • Hem PHS'yi etkinleştirin hem de kiracı bayraklarını eşitleyin { key: "AppKey", value: "{"appKeyScenario":"AD2AADPasswordHash"}" }

  • Yalnızca eşitleme kiracı bayrağını etkinleştir (PHS'yi açmayın) { anahtarı: "AppKey", değer: "{"appKeyScenario":"AD2AADProvisioning"}" }

Request body –
{
   "value": [
              {
                "key": "Domain",
                "value": "{\"domain\":\"ad2aadTest.com\"}"
              }
            ]
}

Beklenen yanıt... HTTP 204/İçerik yok

Burada vurgulanan "Etki alanı" değeri, girdilerin Microsoft Entra Id'ye sağlandığı şirket içi Active Directory etki alanının adıdır.

Yapılandırma dikey penceresinde Parola karmalarını eşitlemeyi etkinleştirme

Bu bölüm, belirli bir yapılandırma için parola karmalarını eşitlemeyi etkinleştirmeyi kapsar. Bu durum, kiracı düzeyinde özellik bayrağını etkinleştiren AppKey gizli dizisinden farklıdır. Bu yordam yalnızca tek bir etki alanı/yapılandırma içindir. Bu yordamın uçtan uca çalışması için uygulama anahtarını PHS'ye ayarlamanız gerekir.

  1. Şemayı alın (uyarı, oldukça büyük):

    GET –https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs/ [AD2AADProvisioningJobId]/schema
    
  2. Bu CredentialData öznitelik eşlemesini alın:

    {
    "defaultValue": null,
    "exportMissingReferences": false,
    "flowBehavior": "FlowWhenChanged",
    "flowType": "Always",
    "matchingPriority": 0,
    "targetAttributeName": "CredentialData",
    "source": {
    "expression": "[PasswordHash]",
    "name": "PasswordHash",
    "type": "Attribute",
    "parameters": []
    }
    
  3. Şemada aşağıdaki adlarla aşağıdaki nesne eşlemelerini bulun

    • Active Directory Kullanıcıları Sağlama
    • Active Directory inetOrgPersons sağlama

    Nesne eşlemeleri schema.synchronizationRules[0].objectMappings içindedir (Şimdilik yalnızca bir Eşitleme Kuralı olduğunu varsayabilirsiniz)

  4. CredentialData Eşlemesi'ni Adımdan (2) alın ve Adım (3) içindeki nesne eşlemelerine ekleyin

    Nesne eşlemeniz şuna benzer:

    {
    "enabled": true,
    "flowTypes": "Add,Update,Delete",
    "name": "Provision Active Directory users",
    "sourceObjectName": "user",
    "targetObjectName": "User",
    "attributeMappings": [
    ...
    } 
    

    EŞLEMEyi AD2AADProvisioning ve AD2AADPasswordHash işleri oluşturma adımından attributeMappings dizisine kopyalayın/yapıştırın.

    Bu dizideki öğelerin sırası önemli değildir (arka uç sizin için sıralanır). Ad dizide zaten varsa (örneğin, attributeMappings içinde targetAttributeName CredentialData içeren bir öğe varsa) bu öznitelik eşlemesini ekleme konusunda dikkatli olun. Çakışma hataları alabilirsiniz veya önceden var olan ve yeni eşlemeler birlikte birleştirilebilir; genellikle istenen sonuç değildir. Arka uç sizin için bozulmaz.

    Bu eylemi hem Kullanıcılar hem de inetOrgpersons için yapmayı unutmayın.

  5. Oluşturduğunuz şemayı kaydedin:

    PUT –
    https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs/ [AD2AADProvisioningJobId]/schema
    

şemayı istek gövdesine ekleyin.

Exchange karma geri yazma (Genel Önizleme)

Bu bölümde Exchange karma geri yazma özelliğinin program aracılığıyla nasıl etkinleştirileceği/devre dışı bırakileceği ve kullanılacağı anlatılabilir.

Exchange karma geri yazmanın program aracılığıyla etkinleştirilmesi için iki adım gerekir.

  1. Şema doğrulaması
  2. Exchange karma geri yazma işini oluşturma

Şema doğrulaması

Exchange karma geri yazma özelliğini etkinleştirmeden ve kullanmadan önce bulut eşitlemesinin, şirket içi Active Directory Exchange şemasını içerecek şekilde genişletilip genişletilmediğini belirlemesi gerekir.

Şema bulmayı başlatmak için directoryDefinition:discover kullanabilirsiniz.

POST https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs/[AD2AADProvisioningJobId]/schema/directories/[ADDirectoryID]/discover

Beklenen yanıt... HTTP 200/Tamam

Yanıt aşağıdaki çıkışa benzer görünmelidir:

HTTP/1.1 200 OK
Content-type: application/json
{
  "objects": [
    {
      "name": "user",
      "attributes": [
        {
          "name": "mailNickName",
          "type": "String"
        },
        ...
      ]
    },
    ...
  ]
}

Şimdi mailNickName özniteliğinin mevcut olup olmadığını denetleyin. Bu durumda şemanız doğrulanır ve Exchange özniteliklerini içerir. Aksi takdirde, Exchange karma geri yazma önkoşullarını gözden geçirin.

Exchange karma geri yazma işini oluşturma

Şemayı doğruladıktan sonra işi oluşturabilirsiniz.

POST https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs
Content-type: application/json
{
"templateId":"AAD2ADExchangeHybridWriteback"
}

Yanlışlıkla silmeler

Bu bölümde program aracılığıyla silmelerin program aracılığıyla nasıl etkinleştirileceği/devre dışı bırakılacağını ve program aracılığıyla yanlışlıkla silmelerin nasıl kullanılacağı anlatılabilir.

Eşiği etkinleştirme ve ayarlama

İş başına kullanabileceğiniz iki ayar vardır:

  • DeleteThresholdEnabled - 'true' olarak ayarlandığında iş için yanlışlıkla silme önlemeyi etkinleştirir. Varsayılan olarak 'true' olarak ayarlayın.
  • DeleteThresholdValue - Yanlışlıkla silme önleme etkinleştirildiğinde işin her yürütülmesinde izin verilen en fazla silme sayısını tanımlar. Değer varsayılan olarak 500 olarak ayarlanır. Bu nedenle, değer 500 olarak ayarlanırsa, her yürütmede izin verilen en fazla silme sayısı 499 olur.

Silme eşiği ayarları öğesinin SyncNotificationSettings bir parçasıdır ve grafik aracılığıyla değiştirilebilir.

SyncNotification'ı güncelleştirmemiz gerekecek Ayarlar bu yapılandırma hedefleniyor, bu nedenle gizli dizileri güncelleştirin.

PUT – https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/secrets

Aşağıdaki Anahtar/değer çiftini, yapmaya çalıştığınız şeye göre aşağıdaki değer dizisine ekleyin:

Request body -
{
  "value":[
    {
      "key":"SyncNotificationSettings",
      "value": "{\"Enabled\":true,\"Recipients\":\"foobar@xyz.com\",\"DeleteThresholdEnabled\":true,\"DeleteThresholdValue\":50}"
     }
  ]
}

Örnekteki "Etkin" ayarı, iş karantinaya alındığında bildirim e-postalarını etkinleştirmek/devre dışı bırakmak içindir.

Şu anda gizli diziler için PATCH isteklerini desteklemiyoruz, bu nedenle diğer değerleri korumak için PUT isteğinin gövdesindeki tüm değerleri eklemeniz gerekir (örnekte olduğu gibi).

Tüm gizli diziler için mevcut değerler aşağıdakiler kullanılarak alınabilir:

GET https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/secrets 

Silmelere izin verme

İş karantinaya alındıktan sonra bu silmelerin geçmesine izin vermek için kapsam olarak yalnızca "ForceDeletes" ile yeniden başlatma yapmanız gerekir.

Request:
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/restart
Request Body:
{
  "criteria": {"resetScope": "ForceDeletes"}
}

Eşitleme işini başlatma

İşler aşağıdaki komutla yeniden alınabilir:

GET https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs/

İşleri alma belgelerine buradan ulaşabilirsiniz.

İşleri başlatmak için, ilk adımda oluşturulan hizmet sorumlusunun objectId değerini ve işi oluşturan istekten döndürülen iş tanımlayıcılarını kullanarak bu isteği çalıştırın.

bir işin nasıl başlatılacağına ilişkin belgeleri burada bulabilirsiniz.

POST  https://graph.microsoft.com/beta/servicePrincipals/8895955e-2e6c-4d79-8943-4d72ca36878f/synchronization/jobs/AD2AADProvisioning.fc96887f36da47508c935c28a0c0b6da/start

Beklenen yanıt... HTTP 204/İçerik yok.

İşi denetlemeye yönelik diğer komutlar burada belgelenmiştir.

Bir işi yeniden başlatmak için şunu kullanın:

POST  https://graph.microsoft.com/beta/servicePrincipals/8895955e-2e6c-4d79-8943-4d72ca36878f/synchronization/jobs/AD2AADProvisioning.fc96887f36da47508c935c28a0c0b6da/restart
{
  "criteria": {
    "resetScope": "Full"
  }
}

Durumu gözden geçirme

İş durumlarınızı şu şekilde alın:

GET https://graph.microsoft.com/beta/servicePrincipals/[SERVICE_PRINCIPAL_ID]/synchronization/jobs/ 

İlgili ayrıntılar için dönüş nesnesinin 'status' bölümünün altına bakın

Sonraki adımlar