È possibile automatizzare l'accesso delle applicazioni di terze parti a VMware Cloud Director utilizzando gli account di servizio.

Condivisione

A partire da VMware Cloud Director 10.4.1, se si desidera limitare le informazioni sull'account di servizio che gli utenti possono visualizzare, è possibile concedere a determinati ruoli solo il diritto Visualizzazione account di servizio limitata. Quando un utente con il diritto Visualizzazione account di servizio limitata effettua una richiesta GET per l'account di servizio, softwareId, softwareVersion, uri e status dell'account di servizio vengono visualizzati come null nella risposta.

Implementazione

Per fornire l'accesso automatico a VMware Cloud Director, gli account di servizio utilizzano i token API. Gli account di servizio vengono utilizzati solo per l'accesso basato su API. Quando si concede l'accesso a un account di servizio, l'applicazione client autenticata riceve il token API, ovvero un token di aggiornamento OAuth, e un token di accesso, che rappresenta la prima sessione di VMware Cloud Director, per l'uso immediato. Le applicazioni richiedono i token API per l'autenticazione con VMware Cloud Director. I token di accesso sono token di sessione di VMware Cloud Director (token JWT), che le applicazioni utilizzano per creare richieste API tramite l'account di servizio. Gli account di servizio per le applicazioni utilizzano i token API e hanno quindi le stesse limitazioni dei token API dell'utente in VMware Cloud Director.

Agli account di servizio viene concesso l'accesso utilizzando "Richiedi autorizzazione dell'account di servizio". Ciò garantisce che solo l'applicazione che deve utilizzare il token abbia l'accesso esclusivo al token e possa usarlo. Nessun altro utente può accedere al token. Un amministratore può gestire l'accesso all'account di servizio. Tuttavia, anche gli amministratori non possono accedere al token effettivo che concede l'accesso. VMware Cloud Director fornisce il token solo all'account di servizio. A tale scopo, VMware Cloud Director utilizza uno standard noto. Per assicurarsi di essere sincronizzati con l'applicazione a cui si concede il token tramite la concessione e la trasmissione del token, è possibile avviare il processo di concessione del token API solo conoscendo il codice utente per l'applicazione.

A differenza dei token API dell'utente, i token API concessi agli account di servizio vengono ruotati a ogni utilizzo, in base a RFC 6749 sezione 6. I token API dell'account di servizio inutilizzati non scadono mai a meno che non vengano revocati.

Gli account di servizio possono avere un solo ruolo. Nelle API conformi a OAuth, il ruolo viene comunicato tramite il campo dell'ambito come URN (Uniform Resource Name) con codifica URL con il nome del ruolo. Il formato URN è urn:vcloud:role:[roleName]. Vedere RFC 8141 che descrive la codifica URN.

Nota: L'endpoint del dispositivo non è autenticato. È consigliabile configurare regole di limitazione speciali a livello del bilanciamento del carico.
Tabella 1. Stati dell'account di servizio
Stato Descrizione
Creato L'account si trova nello stato iniziale dopo la creazione.
Richiesto Sono presenti una o più richieste di accesso in sospeso avviate da un richiedente tramite una richiesta di autorizzazione del dispositivo.
Concesso Un amministratore ha concesso una richiesta in sospeso ed è in attesa del polling e del recupero del token API dell'account di servizio.
Attivo L'account di servizio ha recuperato il token API e può accedere a VMware Cloud Director utilizzando il token.

Limitazioni

Poiché l'utilizzo degli account di servizio è riservato alle applicazioni di terze parti, gli account di servizio hanno alcune limitazioni.

Quando utilizzano gli account di servizio, le applicazioni non possono eseguire determinate attività.
  • Eseguire attività di gestione degli utenti
  • Creazione di token API
  • Gestione di altri account di servizio
Quando accedono a VMware Cloud Director utilizzando un account di servizio, le applicazioni dispongono solo dei diritti di visualizzazione per le seguenti risorse.
  • Utente
  • Gruppo
  • Ruoli
  • Ruoli globali
  • Bundle di diritti
Le applicazioni che accedono a VMware Cloud Director utilizzando un account di servizio non dispongono dei diritti seguenti.
  • Token: Gestisci
  • Token: Gestisci tutto

Multisito

A partire da VMware Cloud Director 10.4.1, gli account di servizio possono gestire e monitorare più installazioni o gruppi di server di VMware Cloud Director distribuiti geograficamente e le relative organizzazioni come singole entità utilizzando la funzionalità multisito. Per ulteriori informazioni, vedere Configurazione e gestione di distribuzioni multisito. Se un account di servizio effettua una richiesta a un'organizzazione diversa da quella in cui è autenticato, verificare che l'account di servizio esista nell'organizzazione associata e che disponga dello stesso nome e ID software. È inoltre necessario includere un'intestazione X-VMWARE-VCLOUD-AUTH-CONTEXT che specifichi il nome dell'organizzazione che deve soddisfare la richiesta. Vedere le informazioni per la configurazione e la gestione delle distribuzioni multisito in Guida alla programmazione dell'API di VMware Cloud Director.

Creazione di un account di servizio tramite il VMware Cloud Director Service Provider Admin Portal

È possibile creare un account per l'accesso automatico a VMware Cloud Director utilizzando il Service Provider Admin Portal.

Procedura

  1. Nella barra di navigazione superiore, selezionare Amministrazione.
  2. Nel pannello sinistro, in Controllo accessi provider, selezionare Account di servizio.
  3. Fare clic su Nuovo.
  4. Immettere un nome per l'account del servizio.
  5. Nel menu a discesa Assegna ruolo, selezionare un ruolo per l'account di servizio.
    L'elenco dei ruoli disponibili comprende i ruoli dell'organizzazione del sistema locale o, in un'organizzazione tenant, i ruoli globali pubblicati nell'organizzazione oltre a tutti i ruoli locali nel tenant.
  6. Immettere un ID software per l'account di servizio o generarne uno e immetterlo utilizzando il pulsante Genera ID software.

    Gli account di servizio devono disporre di ID software che sono identificatori univoci in formato UUID che rappresentano il software che si connette a VMware Cloud Director. Questo ID sarà lo stesso per tutte le versioni e le istanze di un software.

    Nel caso di soluzioni con dimensioni maggiori, per mantenere il controllo sull'identità degli account di servizio, non utilizzare l'opzione Genera ID software e generare un ID software personalizzato.

  7. (Facoltativo) Immettere la versione del software del sistema utilizzando l'account del servizio.
    La versione del software è una parte facoltativa dei metadati specificata dal fornitore associata all'account di servizio. Per monitorare le modifiche del software, VMware Cloud Director utilizza la versione del software. La versione del software potrebbe essere utile per identificare un account del servizio.
  8. (Facoltativo) Immettere un URI client.
    L'URI (Uniform Resource Identifier) del client è l'URL della pagina Web del fornitore e fornisce informazioni sul client.
  9. Fare clic su Avanti.
  10. (Facoltativo) Aggiungere le quote alle risorse che si desidera gestire dall'account del servizio.
    Tali quote limitano la capacità dell'account di servizio di consumare risorse di storage e di elaborazione.
  11. Controllare le informazioni dell'account di servizio, quindi fare clic su Fine.

risultati

L'account di servizio viene visualizzato nella pagina Account di servizio con lo stato Created.

Esempio

È possibile creare un account di servizio anche utilizzando l'API di VMware Cloud Director. La richiesta API utilizza lo stesso endpoint API della creazione di un token API dell'utente ma la presenza del campo software_id indica lo scopo di creare un account di servizio.

Richiesta di esempio:
POST /oauth/provider/register 

Accept:application/json

Content-Type:application/json

Authorization:Bearer eyJhbGciOiJSUzI...7g7rA 

Body: { 

    "client_name": "exampleServiceAccount", 

    "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

    "scope": "urn:vcloud:role:System%20Administrator", 

    "client_uri": "https://www.companyname.com", 

    "software_version": "1.0" 

} 
Risposta di esempio:
{ 

"client_name": "exampleServiceAccount", 

"client_id": "734e3845-1573-4f07-9b6c-b493c9042187", 

"grant_types": [ 

"urn:ietf:params:oauth:grant-type:device_code" 

], 

"token_endpoint_auth_method": "none", 

"client_uri": "https://www.company_name.com", 

"software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", 

"software_version": "1.0", 

"scope": "urn:vcloud:role:System%20Administrator" 

} 

Operazioni successive

Copiare l'ID client che viene visualizzato nei dettagli dell'account di servizio. Per concedere l'accesso all'account del servizio, è necessario utilizzare l'ID client.

Concessione dell'accesso a un account di servizio tramite il VMware Cloud Director Service Provider Admin Portal

Dopo aver creato un account di servizio, quando l'applicazione richiede l'autorizzazione a ricevere un token di accesso, è possibile concedere il token tramite VMware Cloud Director Service Provider Admin Portal.

Nota: Se il periodo di timeout scade durante questa procedura, lo stato dell'account di servizio in Service Provider Admin Portal diventa ancora Created ed è necessario avviare di nuovo la procedura.

Prerequisiti

  1. Copiare l'ID client dai dettagli dell'account di servizio in Service Provider Admin Portal.
  2. Verificare che l'applicazione che richiede l'account crei una richiesta di concessione dell'autorizzazione del dispositivo OAuth 2.0 conforme a RFC all'endpoint dell'API https://site.cloud.example.com/oauth/provider/device_authorization. Per ulteriori informazioni sulle richieste di autorizzazione dei dispositivi, vedere RFC 8628 sezione 3.1.
    Chiave Valore
    client_ID Generated_Client_ID

    Quando l'applicazione richiede l'accesso, lo stato dell'account di servizio in Service Provider Admin Portal diventa Requested. L'applicazione riceve il codice dispositivo, il codice utente e alcune informazioni aggiuntive.

    Richiesta di esempio:
    POST /oauth/provider/device_authorization
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id=734e3845-1573-4f07-9b6c-b493c9042187
    Risposta di esempio:
    {
    "device_code": "tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw",
    "user_code": "3VL8-SQVJ",
    "verification_uri": "https://[VCD]/provider/administration/access-control/service-accounts",
    "expires_in": 3600,
    "interval": 60
    }

    Il dispositivo deve eseguire il polling alla frequenza specificata nella risposta precedente (in secondi) /oauth/provider/token in base alla RFC. Il dispositivo deve utilizzare il codice del dispositivo finché non riceve i token da VMware Cloud Director o finché non si verifica il timeout della richiesta.

    Richiesta di esempio:
    POST: /oauth/provider/token
    Accept:application/json 
    Content-Type: application/x-www-form-urlencoded
    Body:
    client_id= 734e3845-1573-4f07-9b6c-b493c9042187&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code&device_code=tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw
    Risposta di esempio prima della concessione:
    {
        "error": "authorization_pending",
        "error_description": "Device authorization request pending",
        "error_uri": null,
        "minorErrorCode": "authorization_pending",
        "message": "Device authorization request pending",
        "stackTrace": null
    }
    Risposta di esempio dopo la concessione:
    {
        "access_token": "eyJhbGciOiJSU…HqJaDud1sVA",
        "token_type": "Bearer",
        "expires_in": 2592000,
        "refresh_token": "SsybukUed8SBP2p1AaFiGJhrntQNWZVX"
    }

    Se non si conferma o si nega una richiesta di accesso, si verifica il timeout del codice utente. Il periodo di timeout viene visualizzato nella risposta alla richiesta di autorizzazione del dispositivo.

    VMware Cloud Director concede all'applicazione un token API primario solo se l'applicazione e l'amministratore utilizzano il codice dispositivo e il codice utente corrispondenti tra loro.

  3. Recuperare il codice utente dall'applicazione. È necessario immettere il codice nel passaggio 4.

Procedura

  1. Nella barra di navigazione superiore, selezionare Amministrazione.
  2. Nel pannello sinistro, in Controllo accessi provider, selezionare Account di servizio.
  3. Fare clic su Controlla richieste di accesso.
  4. Immettere il codice utente per l'applicazione ottenuto nel prerequisito 3, fare clic su Ricerca e verificare i dettagli dell'accesso richiesto.
  5. Concedere l'accesso all'applicazione.
    Se si nega l'accesso all'applicazione, lo stato dell'account di servizio in Service Provider Admin Portal diventa di nuovo Created.

risultati

Lo stato della richiesta di servizio diventa Granted. VMware Cloud Director concede all'applicazione collegata all'account di servizio il token API primario sotto forma di token API. Come richiesto dalla RFC, nella risposta è incluso un token di accesso OAuth che rappresenta una sessione utente per l'uso immediato da parte dell'account di servizio. Se l'applicazione non utilizza immediatamente il token di accesso OAuth, si verifica il timeout della sessione in base al timeout di sessione inattiva configurato. L'account di servizio potrebbe anche disconnettersi esplicitamente, operazione consigliata non solo per motivi di sicurezza, ma anche perché offre l'esecuzione di un test ottimale per l'account di servizio per effettuare una chiamata API a VMware Cloud Director. Quando l'applicazione recupera il token API, lo stato diventa Active.

Operazioni successive

  • Per modificare l'ID software, la versione del software, l'URI client, le limitazioni di quota o il ruolo dell'account di servizio assegnato, selezionare un account di servizio e fare clic su Modifica account di servizio. Le modifiche diventano effettive al successivo aggiornamento del token.
  • Per revocare l'accesso all'account di servizio in modo che il token API concesso diventi non valido, fare clic su Revoca. VMware Cloud Director termina tutte le sessioni attive. La revoca di un token API non comporta l'eliminazione dell'account di servizio, ma lo stato dell'account diventa Created. Se l'applicazione ha già richiesto nuovamente l'accesso, lo stato dell'account di servizio diventa Requested. È necessario eseguire di nuovo la procedura per concedere l'accesso all'account di servizio affinché l'account diventi Active.