Nota

Abilita l'autenticazione OAuth2 nel gateway API OCI per chiamare i servizi OCI utilizzando OCI Functions e OCI SDK

Introduzione

Spesso abbiamo bisogno delle nostre applicazioni per utilizzare i servizi REST Oracle Cloud Infrastructure (OCI). Esistono diversi modi per garantire la sicurezza tra i componenti, garantendo che l'applicazione possa eseguire l'autenticazione in modo sicuro al servizio backend.

Questo task è nativo in Oracle Cloud, in quanto esistono diversi modi per proteggere la rete e accedere ai servizi esistenti. Solo alcune impostazioni e hai finito. Tuttavia, ci sono casi in cui l'applicazione può offrire ulteriori requisiti di sicurezza e connettività. Il caso d'uso di questo materiale soddisfa un'esigenza molto comune nello scenario ibrido o multi-cloud (on-premise connesso a Oracle Cloud o Oracle Cloud connesso a un altro cloud).

Presentiamo il seguente scenario:

Pertanto, il tutorial fornisce le seguenti soluzioni:

Obiettivi

Prerequisiti

Task 1: configurare OAuth2 con Oracle Identity Cloud Service

  1. Ottenere i parametri del gateway API OCI: iniziamo a configurare il meccanismo OAuth2. È necessario integrare l'istanza del gateway API OCI in un provider di identità configurando Oracle Identity Cloud Service da Oracle Cloud come provider di identità.

    Andare all'istanza del gateway API OCI e copiare il nome host. Queste informazioni verranno utilizzate nella configurazione del server delle risorse di Oracle Identity Cloud Service nel passo successivo.

    img.png

  2. Crea un'applicazione risorsa: è necessario creare un responsabile autorizzazioni OAuth2 per l'applicazione. Possiamo farlo con Oracle Identity Cloud Service in Oracle Cloud.

    1. Nella console OCI, andare a Identità e sicurezza e selezionare Federazione.

      img.png

    2. Fare clic su OracleIdentityCloudSevice.

      img.png

    3. Fare clic sul collegamento per l'istanza di Oracle Identity Cloud Service.

      img.png

    4. Creeremo due applicazioni. Fare clic su Applicazioni e servizi.

      img.png

    5. Fare clic su Aggiungi in Applicazioni.

      img.png

    6. Selezionare Applicazione riservata per avviare la configurazione del server delle risorse.

      img.png

    7. Verrà configurata la prima applicazione. Immettere un Nome nell'applicazione del server delle risorse e fare clic su Successivo.

      img.png

    8. Fare clic su Salta per dopo. È necessario configurare solo la risorsa.

      img.png

    9. Immettere il nome host del gateway API OCI ottenuto nel passo 1.

      img.png

    10. Fare clic su Aggiungi ambito e immettere le informazioni sull'ambito.

      img.png

    11. Rivedere le informazioni sull'ambito, fare clic su Avanti due volte e fare clic su Fine.

      img.png

    12. Fare clic su Attiva per attivare l'applicazione.

      img.png

  3. Creazione di un'applicazione client.

    1. In Applicazioni, fare clic su Aggiungi.

      img.png

    2. Selezionare Applicazione riservata per avviare la configurazione del server delle risorse.

      img.png

    3. Immettere un nome per l'applicazione e fare clic su Successivo.

      img_1.png

    4. Selezionare Configure the application as a client now per abilitare le configurazioni per l'applicazione client. Selezionare Credenziali client, Asserzione JWT e Per conto di.

      img.png

    5. Scorrere la schermata verso il basso e fare clic su Aggiungi ambito.

      img.png

    6. Trovare l'applicazione risorsa creata prima (oauth_resource_server in questo task) e fare clic su Aggiungi.

      img.png

    7. È possibile visualizzare l'ambito aggiunto all'applicazione. Fare clic su Avanti.

      img.png

      Nota: conservare il valore dell'ambito, che sarà necessario utilizzare per richiedere un token.

    8. Saltare le finestre Risorse e Criterio livello Web. In Autorizzazione, selezionare Applica privilegi come autorizzazione e fare clic su Fine.

      img.png

    9. Conservare le informazioni ID client e Segreto client. Avrai bisogno di questo per ottenere il tuo token.

      img.png

    10. Fare clic su Attiva per attivare l'applicazione e il responsabile autorizzazioni OAuth2 è pronto per il test.

      img_1.png

  4. Ottieni un token: ora è possibile eseguire il test del responsabile autorizzazioni OAuth2 per ottenere il token.

    1. Comporre l'URL per il responsabile autorizzazioni. Per ottenere questo risultato, ottenere l'URL di Oracle Identity Cloud Service nel browser. Nell'URL di Oracle Identity Cloud Service è possibile visualizzare uno dei seguenti elementi: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole.

    2. Sarà necessario il collegamento URL fino a oraclecloud.com, che è l'endpoint radice. Ad esempio, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com.

    3. È necessario aggiungere il percorso di autenticazione oAuth. Questo URL verrà eseguito come richiesta REST POST. Ad esempio, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token. È necessario immettere alcuni parametri per richiedere il token.

    4. Immettere le credenziali come Autenticazione di base, ID client e Segreto client.

      img.png

    5. Nel contenuto Corpo immettere i valori grant_type e ambito. Tenere presente che l'ambito è stato acquisito nella configurazione di Oracle Identity Cloud Service.

      img.png

    6. Fare clic su Invia ed eseguire la richiesta POST e visualizzare il token.

      img_2.png

  5. Creare la chiave Web JSON (JWK): nel browser immettere l'endpoint root di Oracle Identity Cloud Service aggiungendo /admin/v1/SigningCert/jwk per ottenere la chiave JWK: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/jwk

    Riceverai una stringa JWK come mostrato di seguito.

    img_2.png

    Dobbiamo lavorare su questa stringa JWK.

    {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"key_ops":["sig","encrypt"],"alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
    

    Nota:

    • Questo JWK è stato redatto.

    • Se si riceve un messaggio di errore, è necessario fornire l'accesso in Oracle Identity Cloud Service.

    img.png

    Modifica importante nella stringa JWK: la stringa JWK non sarà utile nel gateway API OCI finché non verranno apportate alcune modifiche.

    1. Trovare il segmento con "key_ops":["x","y","z"] e sostituirlo con "use" : "sig". Sarà come mostrato di seguito (confrontare le due stringhe).

      {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
      
    2. Rimuovere la stringa {"keys":[ dall'inizio e ]} dalla fine. La stringa finale sarà simile a quella mostrata di seguito. Ora puoi usarlo.

      {"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}
      

Task 2: configurare un OCI Functions per chiamare l'API SDK OCI

  1. Comprendere OCI Functions e API Gateway: è una best practice per esporre i servizi tramite un gateway API. È possibile eseguire molte autenticazioni ignorando le credenziali dal gateway API ai servizi backend, ma se l'autenticazione backend non è stata il metodo appropriato per l'applicazione client, è possibile eseguire alcune configurazioni a livello di gateway API.

    In questo passo, analizziamo in che modo OCI API Gateway può aiutarci a integrare l'autenticazione OAuth2 e la richiesta per qualsiasi servizio OCI, come la previsione della distribuzione del modello di data science tramite le funzioni OCI.

    Le funzioni OCI possono eseguire il job per ricevere la richiesta del corpo e passare al servizio OCI. Alcuni servizi nel servizio OCI non possono essere autenticati con il metodo OAuth2, quindi possiamo farlo con OCI Functions.

    In questo esempio, il servizio di previsione Distribuzione modello può essere autenticato mediante la chiave privata OCI in IAM OCI. Può essere eseguita dal principal risorsa.

    Se non si sa come creare e distribuire una funzioni OCI, vedere Avvio rapido delle funzioni OCI

  2. Comprendere il codice: questo codice sarà pronto per essere utilizzato con OCI API Gateway. Nella distribuzione API, l'endpoint di distribuzione modello verrà configurato nel gateway API e verrà passato come parametro HEADER. È pertanto possibile utilizzare questa funzione per molte distribuzioni di modelli in ogni distribuzione del gateway API necessaria.

    img_3.png

    • La libreria oracle.ads in Python verrà utilizzata per autorizzare mediante principal risorsa l'accesso di questa funzione all'istanza di distribuzione del modello (vedere il task 4).

      ads.set_auth('resource_principal')
      
    • Il contenuto del corpo può essere acquisito da questa riga.

      body = json.loads(data.getvalue())
      
    • Verrà configurato un HEADER denominato model_deployment nel gateway API OCI. Questo HEADER contiene l'URL per la previsione di distribuzione del modello passata nella richiesta del gateway API.

      endpoint = ctx.Headers()["model_deployment"]
      
    • Questa operazione eseguirà la richiesta POST dell'API REST e restituirà il risultato dalla distribuzione del modello nell'endpoint di Data Science.

      return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
      
    • Questa è la libreria requirements.txt che dovrà essere caricata in questa funzione.

      requirements.txt
      ---------------------
      fdk>=0.1.54
      requests
      oracle-ads
      

    Distribuire le funzioni OCI e configurarle nel gateway API OCI.

Task 3: configurare un'autenticazione di distribuzione del gateway API

Nota: per ulteriori informazioni su come sviluppare un OCI Functions e chiamarlo in OCI API Gateway, vedere Chiama un OCI Functions utilizzando API Gateway.

  1. Selezionare OAuth 2.0 / OpenID Connect e immettere la configurazione seguente. Questo è il modo predefinito per eseguire l'autenticazione tramite HEADER.

    Token Location: Header
    JWT token header name: Authorization
    Authentication scheme: Bearer
    
  2. Immettere la stringa Chiave Web JSON creata in precedenza, selezionare Chiavi statiche e immettere le informazioni riportate di seguito.

    Key ID: SIGNING_KEY
    Key format: JSON web key
    JSON web key: <Your JWK string created previously>
    
  3. Immettere gli emittenti come https://identity.oraclecloud.com/ e le audience con il nome host OCI API Gateway ottenuto in precedenza.

    img.png

    Configurare le funzioni OCI create nell'ultimo task.

    img_1.png

  4. Configurare il parametro HEADER model_deployment e fare clic su Mostra criteri di richiesta di instradamento.

    img_5.png

  5. Nelle trasformazioni HEADER fare clic su Aggiungi.

    img_2.png

  6. È necessario disporre dell'URL di previsione per la distribuzione del modello Data Science. È possibile ottenere questo risultato qui: andare al menu Data Science, selezionare l'istanza di Data Science e la distribuzione del modello, quindi fare clic su Richiesta del modello.

    Nota: salvare l'OCID di distribuzione modello qui. Sarà necessario configurare i criteri in un secondo momento.

    img_3.png

    URL di previsione della distribuzione del modello di data science.

    img_4.png

  7. Immettere il nome dell'intestazione come model_deployment e i valori come URL di previsione della distribuzione del modello Data Science.

    img_3.png

    img_4.png

    Nota: dopo aver salvato la distribuzione del gateway API, ricordare l'endpoint di distribuzione API.

    img_2.png

Task 4: configurare il gruppo e i criteri OCI

Creare un gruppo dinamico per concedere l'accesso da OCI Functions alla risorsa OCI. In questa esercitazione viene utilizzata la funzionalità Distribuzione del modello di Data Science. Per ulteriori informazioni su come utilizzare Resource Principal, vedere Resource Principal.

  1. Ottenere l'OCID dell'istanza di distribuzione del modello. Immettere l'OCID nella stringa del gruppo dinamico.

    ALL {resource.type = 'fnfunc', resource.id = 'ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
    

    Nota: resource.id è l'OCID ottenuto in precedenza nella schermata della console Distribuzione modello.

    img_4.png

  2. Creare un criterio per consentire il gruppo dinamico. Per ulteriori informazioni vedere Criteri di distribuzione del modello.

    allow dynamic-group hoshikawa_datascience to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy
    allow dynamic-group hoshikawa_datascience to manage data-science-model-deployments in tenancy
    

    img_4.png

Task 5: API di test

Ora simuliamo la richiesta OAuth2 dell'applicazione per il servizio di distribuzione dei modelli in OCI Data Science.

  1. Ottenere il token passando l'ID client e il segreto client al provider di Oracle Identity Cloud Service.

    img_2.png

  2. Immettere l'endpoint di distribuzione del gateway API OCI e selezionare la richiesta REST POST. Copiare il valore access_token e passare alla distribuzione del gateway API OCI. Ricorda che il token ha una durata di un'ora.

    img_5.png

    Ed ecco il risultato!

    img.png

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.