Kiépítés konfigurálása Microsoft Graph API-k használatával

A Microsoft Entra felügyeleti központ kényelmesen konfigurálja az egyes alkalmazások üzembe helyezését egyenként. Ha azonban több vagy akár több száz példányt hoz létre egy alkalmazásból, vagy az alkalmazáskonfigurációt egyik környezetből a másikba migrálja, egyszerűbben automatizálhatja az alkalmazások létrehozását és konfigurálását a Microsoft Graph API-kkal. Ez a cikk azt ismerteti, hogyan automatizálhatja a kiépítési konfigurációt API-k segítségével. Ezt a módszert gyakran használják olyan alkalmazásokhoz, mint az Amazon Web Services.

Ez a cikk a Microsoft Graph bétavégponton és a Microsoft Graph Explorerben található API-kkal szemlélteti a folyamatot; hasonló API-k a Microsoft Graph 1.0-s végpontjában is elérhetők. A Kiépítés a Graph 1.0-val és a PowerShell-lel való konfigurálásáról a Bérlők közötti szinkronizálás konfigurálása a PowerShell vagy a Microsoft Graph API használatával című 6–13. lépésben talál példát.

A Microsoft Graph API-k üzembe helyezési konfiguráció automatizálásának lépéseinek áttekintése

Lépés Részletek
1. lépés Katalógusalkalmazás létrehozása Bejelentkezés az API-ügyfélbe
A katalógusalkalmazás sablonjának lekérése
Katalógusalkalmazás létrehozása
2. lépés Kiépítési feladat létrehozása sablon alapján A kiépítési összekötő sablonjának lekérése
A kiépítési feladat létrehozása
3. lépés Hozzáférés engedélyezése Az alkalmazáshoz való kapcsolat tesztelése
A hitelesítő adatok mentése
4. lépés: Kiépítési feladat indítása A feladat indítása
5. lépés Kiépítés figyelése A kiépítési feladat állapotának ellenőrzése
A kiépítési naplók lekérése

Ha helyszíni alkalmazásra épít ki, akkor telepítenie és konfigurálnia kell a kiépítési ügynököt, és hozzá kell rendelnie a kiépítési ügynököt az alkalmazáshoz.

  1. Indítsa el a Microsoft Graph Explorert.
  2. Válassza a "Bejelentkezés a Microsofttal" gombot, és jelentkezzen be a Microsoft Entra Global Rendszergazda istrator vagy app Rendszergazda hitelesítő adataival.
  3. A sikeres bejelentkezés után a felhasználói fiók adatait a bal oldali panelen láthatja.

A Microsoft Entra alkalmazáskatalógusában található alkalmazások mindegyike rendelkezik egy alkalmazássablonnal , amely leírja az alkalmazás metaadatait. Ezzel a sablonnal létrehozhatja az alkalmazás és a szolgáltatásnév egy példányát a bérlőben a felügyelethez. Kérje le az egyfiókos AWS-hozzáférés alkalmazássablonjának azonosítóját, és a válaszból rögzítse az oktatóanyag későbbi részében használni kívánt azonosítótulajdonság értékét.

Kérelem

GET https://graph.microsoft.com/beta/applicationTemplates?$filter=displayName eq 'AWS Single-Account Access'

Válasz

HTTP/1.1 200 OK
Content-type: application/json

{
  "value": [
  {
    "id": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
        "displayName": "AWS Single-Account Access",
        "homePageUrl": "http://aws.amazon.com/",
        "supportedSingleSignOnModes": [
             "password",
             "saml",
             "external"
         ],
         "supportedProvisioningTypes": [
             "sync"
         ],
         "logoUrl": "https://az495088.vo.msecnd.net/app-logo/aws_215.png",
         "categories": [
             "developerServices"
         ],
         "publisher": "Amazon",
         "description": "Federate to a single AWS account and use SAML claims to authorize access to AWS IAM roles. If you have many AWS accounts, consider using the AWS Single Sign-On gallery application instead."    

}

Használja az alkalmazáshoz az utolsó lépésben lekért sablonazonosítót az alkalmazás és a szolgáltatásnév egy példányának létrehozásához a bérlőben.

Kérelem

POST https://graph.microsoft.com/beta/applicationTemplates/{applicationTemplateId}/instantiate
Content-type: application/json

{
  "displayName": "AWS Contoso"
}

Válasz

HTTP/1.1 201 OK
Content-type: application/json

{
    "application": {
        "objectId": "cbc071a6-0fa5-4859-8g55-e983ef63df63",
        "appId": "92653dd4-aa3a-3323-80cf-e8cfefcc8d5d",
        "applicationTemplateId": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
        "displayName": "AWS Contoso",
        "homepage": "https://signin.aws.amazon.com/saml?metadata=aws|ISV9.1|primary|z",
        "replyUrls": [
            "https://signin.aws.amazon.com/saml"
        ],
        "logoutUrl": null,
        "samlMetadataUrl": null,
    },
    "servicePrincipal": {
        "objectId": "f47a6776-bca7-4f2e-bc6c-eec59d058e3e",
        "appDisplayName": "AWS Contoso",
        "applicationTemplateId": "8b1025e4-1dd2-430b-a150-2ef79cd700f5",
        "appRoleAssignmentRequired": true,
        "displayName": "My custom name",
        "homepage": "https://signin.aws.amazon.com/saml?metadata=aws|ISV9.1|primary|z",
        "replyUrls": [
            "https://signin.aws.amazon.com/saml"
        ],
        "servicePrincipalNames": [
            "93653dd4-aa3a-4323-80cf-e8cfefcc8d7d"
        ],
        "tags": [
            "WindowsAzureActiveDirectoryIntegratedApp"
        ],
    }
}

2. lépés: A kiépítési feladat létrehozása a sablon alapján

A kiépítési összekötő sablonjának lekérése

A katalógusban az üzembe helyezéshez engedélyezett alkalmazások sablonokkal rendelkeznek a konfiguráció gördülékenyebbé tételéhez. A kiépítési konfiguráció sablonjának lekéréséhez használja az alábbi kérést. Vegye figyelembe, hogy meg kell adnia az azonosítót. Az azonosító az előző lépésben létrehozott servicePrincipal erőforrás azonosítója.

Kérelem

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

Válasz

HTTP/1.1 200 OK

{
    "value": [
        {
            "id": "aws",
            "factoryTag": "aws",
            "schema": {
                    "directories": [],
                    "synchronizationRules": []
                    }
        }
    ]
}

A kiépítési feladat létrehozása

A kiépítés engedélyezéséhez először létre kell hoznia egy feladatot. A következő kéréssel hozzon létre egy kiépítési feladatot. A feladathoz használni kívánt sablon megadásakor használja az előző lépés sablonazonosítóját.

Kérelem

POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs
Content-type: application/json

{ 
    "templateId": "aws"
}

Válasz

HTTP/1.1 201 OK
Content-type: application/json

{
    "id": "{jobId}",
    "templateId": "aws",
    "schedule": {
        "expiration": null,
        "interval": "P10675199DT2H48M5.4775807S",
        "state": "Disabled"
    },
    "status": {
        "countSuccessiveCompleteFailures": 0,
        "escrowsPruned": false,
        "synchronizedEntryCountByType": [],
        "code": "NotConfigured",
        "lastExecution": null,
        "lastSuccessfulExecution": null,
        "lastSuccessfulExecutionWithExports": null,
        "steadyStateFirstAchievedTime": "0001-01-01T00:00:00Z",
        "steadyStateLastAchievedTime": "0001-01-01T00:00:00Z",
        "quarantine": null,
        "troubleshootingUrl": null
    }
}

3. lépés: Hozzáférés engedélyezése

Az alkalmazáshoz való kapcsolat tesztelése

Tesztelje a kapcsolatot a külső alkalmazással. Az alábbi példa egy olyan alkalmazásra mutat be, amely ügyféltitkot és titkos jogkivonatot igényel. Minden alkalmazásnak saját követelményei vannak. Az alkalmazások gyakran használnak alapcímet egy titkos ügyfélkód helyett. Az alkalmazás által igényelt hitelesítő adatok meghatározásához lépjen az alkalmazás kiépítési konfigurációs oldalára, és fejlesztői módban kattintson a tesztkapcsolatra. A hálózati forgalom megjeleníti a hitelesítő adatokhoz használt paramétereket. A hitelesítő adatok teljes listáját a szinkronizálási feladat: hitelesítő adatok ellenőrzése című témakörben találja. A legtöbb alkalmazás, például az Azure Databricks, a BaseAddressre és a SecretTokenre támaszkodik. A BaseAddress a Microsoft Entra Felügyeleti központ bérlői URL-címe.

Kérelem

POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/validateCredentials

{ 
    "credentials": [ 
        { 
            "key": "ClientSecret", "value": "xxxxxxxxxxxxxxxxxxxxx" 
        },
        {
            "key": "SecretToken", "value": "xxxxxxxxxxxxxxxxxxxxx"
        }
    ]
}

Válasz

HTTP/1.1 204 No Content

Hitelesítő adatok mentése

A kiépítés konfigurálásához létre kell hoznunk egy megbízhatósági kapcsolatot a Microsoft Entra-azonosító és az alkalmazás között, amely lehetővé teszi a Microsoft Entra számára, hogy meghívhassa a külső alkalmazást. Az alábbi példa egy olyan alkalmazásra vonatkozik, amely ügyféltitkot és titkos jogkivonatot igényel. Minden alkalmazásnak saját követelményei vannak. Tekintse át az API dokumentációját az elérhető lehetőségek megtekintéséhez.

Kérelem

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

{ 
    "value": [ 
        { 
            "key": "ClientSecret", "value": "xxxxxxxxxxxxxxxxxxxxx"
        },
        {
            "key": "SecretToken", "value": "xxxxxxxxxxxxxxxxxxxxx"
        }
    ]
}

Válasz

HTTP/1.1 204 No Content

4. lépés: A kiépítési feladat indítása

Most, hogy a kiépítési feladat konfigurálva lett, az alábbi paranccsal indítsa el a feladatot.

Kérelem

POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/start

Válasz

HTTP/1.1 204 No Content

5. lépés: Kiépítés monitorozása

A kiépítési feladat állapotának figyelése

Most, hogy a kiépítési feladat fut, az alábbi paranccsal követheti nyomon a folyamatot. A válaszban szereplő összes szinkronizálási feladat tartalmazza az aktuális kiépítési ciklus állapotát , valamint az aktuális statisztikákat, például a célrendszerben létrehozott felhasználók és csoportok számát.

Kérelem

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

Válasz

HTTP/1.1 200 OK
Content-type: application/json

{ "value": [
{
    "id": "{jobId}",
    "templateId": "aws",
    "schedule": {
        "expiration": null,
        "interval": "P10675199DT2H48M5.4775807S",
        "state": "Disabled"
    },
    "status": {
        "countSuccessiveCompleteFailures": 0,
        "escrowsPruned": false,
        "synchronizedEntryCountByType": [],
        "code": "Paused",
        "lastExecution": null,
        "lastSuccessfulExecution": null,
        "progress": [],
        "lastSuccessfulExecutionWithExports": null,
        "steadyStateFirstAchievedTime": "0001-01-01T00:00:00Z",
        "steadyStateLastAchievedTime": "0001-01-01T00:00:00Z",
        "quarantine": null,
        "troubleshootingUrl": null
    },
    "synchronizationJobSettings": [
      {
          "name": "QuarantineTooManyDeletesThreshold",
          "value": "500"
      }
    ]
}
]
}

Kiépítési események monitorozása a kiépítési naplók használatával

A kiépítési feladat állapotának monitorozása mellett a kiépítési naplókkal lekérdezheti az összes eseményt. Például lekérdezhet egy adott felhasználót, és megállapíthatja, hogy sikeresen kiépítették-e őket.

Kérelem

GET https://graph.microsoft.com/beta/auditLogs/provisioning

Válasz

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#auditLogs/provisioning",
    "value": [
        {
            "id": "gc532ff9-r265-ec76-861e-42e2970a8218",
            "activityDateTime": "2019-06-24T20:53:08Z",
            "tenantId": "7928d5b5-7442-4a97-ne2d-66f9j9972ecn",
            "cycleId": "44576n58-v14b-70fj-8404-3d22tt46ed93",
            "changeId": "eaad2f8b-e6e3-409b-83bd-e4e2e57177d5",
            "action": "Create",
            "durationInMilliseconds": 2785,
            "sourceSystem": {
                "id": "0404601d-a9c0-4ec7-bbcd-02660120d8c9",
                "displayName": "Azure Active Directory",
                "details": {}
            },
            "targetSystem": {
                "id": "cd22f60b-5f2d-1adg-adb4-76ef31db996b",
                "displayName": "AWS Contoso",
                "details": {
                    "ApplicationId": "f2764360-e0ec-5676-711e-cd6fc0d4dd61",
                    "ServicePrincipalId": "chc46a42-966b-47d7-9774-576b1c8bd0b8",
                    "ServicePrincipalDisplayName": "AWS Contoso"
                }
            },
            "initiatedBy": {
                "id": "",
                "displayName": "Azure AD Provisioning Service",
                "initiatorType": "system"
            }
            ]
       }
    ]
}

Lásd még