Configurare manualmente il controllo dell'accesso basato sui ruoli

È possibile configurare il controllo dell'accesso basato sui ruoli (RBAC) con le richieste personalizzate JWT (JSON Web Token) in Oracle Cloud Infrastructure.

Per creare un'applicazione integrata di dominio che consenta RBAC con richieste personalizzate JWT, procedere come segue. Ogni passo è illustrato in dettaglio nelle sezioni riportate di seguito.
Nota

Questo documento utilizza il dominio Default di Oracle Cloud Infrastructure a scopo esplicativo.

Crea attributi personalizzati per gli utenti

Un'entità utente memorizza le proprietà e altre informazioni come attributi. Ad esempio, nome, cognome, login utente, password e così via. Puoi creare attributi personalizzati in Oracle Cloud Infrastructure.

Di seguito è riportato un esempio di definizione di un attributo utente personalizzato, che memorizzerà i ruoli assegnati a ciascun utente nel dominio.
  1. Fare clic sul menu hamburger e andare a Identità e sicurezza e selezionare Domini. In Nome fare clic sul dominio Predefinito.
  2. Andare alla scheda Gestione schema e selezionare Attributi utente.

  3. Fare clic su Aggiungi attributo e specificare quanto segue:
    • Nome visualizzato: ORDS RBAC
    • Nome:rbac_ords
    • Descrizione:Controllo dell'accesso basato sui ruoli per ORDS
    • Tipo di dati: Array di stringhe

    È possibile lasciare il resto dei campi allo stato predefinito.



    Fare clic su Aggiungi. L'attributo personalizzato è stato aggiunto.

  4. Cercare l'attributo appena aggiunto digitando Personalizzato nel campo di ricerca. Verrà visualizzato l'attributo ORDS RBAC nell'elenco.

    Fare clic su Modifica attributo.

  5. Copiare e annotare il valore di FQN (Nome completamente qualificato).

    In questo esempio, FQN è urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords.

Assegna un ruolo personalizzato

Dopo aver creato un attributo utente personalizzato, è possibile continuare ad assegnare ruoli personalizzati all'interno di tale campo attributo.
  1. Passare a IdentitàDominiPredefinito. Fare clic sulla scheda Gestione utenti e selezionare il nome utente dall'elenco di utenti visualizzato.



    Fare clic su Modifica utente. Scorrere fino al campo Altre informazioni e immettere SQL Developer, SODA Developer in ORDS RBAC.

    Per ulteriori informazioni sui ruoli ORDS, vedere questo capitolo in Informazioni sui ruoli utente di Oracle REST Data Services.



    Dopo aver aggiunto i ruoli, fare clic su Salva modifiche.

Creare un'applicazione integrata di dominio

Svilupperemo un'applicazione integrata all'interno del dominio che emetterà un token JWT al momento dell'accesso.

  1. Passare a IdentitàDominiPredefinito. Fare clic sulla scheda Applicazioni integrate e selezionare Aggiungi applicazione.
  2. Fare clic su Applicazione riservata e selezionare Avvia workflow.
  3. Nella finestra di dialogo Aggiungi applicazione riservata specificare i campi riportati di seguito.
    • Nome: immettere il nome dell'applicazione riservata. Ad esempio, Spreadsheet-Addin RBAC.
    • Descrizione: immettere la descrizione. Ad esempio, Applicazione integrata per il controllo dell'accesso basato sul ruolo del componente aggiuntivo del foglio di calcolo.



    Fare clic su Sottometti.

    Verrà visualizzata la pagina dell'applicazione Spreadsheet-Addin RBAC appena aggiunta.

  4. Fare clic su Modifica configurazione OAuth nella scheda Configurazione OAuth della pagina Indirizzo foglio di calcolo RBAC.



  5. In Configurazione server risorse, selezionare Configurare questa applicazione come server risorse ora.
  6. In Configura API dell'applicazione che devono essere protette da OAuth selezionare 3600 come scadenza del token di accesso (secondi).
  7. Nel campo Audience principale immettere ssaddin/.
  8. Fare clic su Aggiungi ambiti e aggiungere l'ambito rbac.



  9. In Configurazione client specificare i campi riportati di seguito.
    • Selezionare Configurare l'applicazione come client ora.
    • Selezionare Implicito in Tipi di sovvenzione consentiti.
    • Immettere il valore seguente nel campo URL di reindirizzamento: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
    • Immettere il valore seguente nel campo URL post-logout: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html



    Fare clic su Sottometti.
    Nota

    Assicurarsi di attivare l'applicazione.

Definisci richiesta di risarcimento personalizzata

Per includere i ruoli utente all'interno del JWT, è necessario mappare l'attributo personalizzato stabilito nella prima sezione nel JWT utilizzando un risarcimento personalizzato.

Per raggiungere questo obiettivo, è necessario creare un'applicazione integrata temporanea aggiuntiva e allegare il reclamo personalizzato tramite tale applicazione.

Crea applicazione integrata del dominio di Identity

Verrà creata un'applicazione integrata temporanea aggiuntiva:
  1. Passare a IdentitàDominiPredefinito.
  2. Fare clic sulla scheda Applicazioni integrate e selezionare Aggiungi applicazione.
  3. Fare clic su Applicazione riservata e selezionare Avvia workflow.
    • Immettere il nome dell'applicazione: Applicazione integrata del dominio di identità
    • Descrizione: si tratta di un'applicazione integrata di dominio.

    Fare clic su Sottometti.

  4. Nella pagina Applicazione integrata del dominio di Identity selezionare la scheda Configurazione OAuth.
  5. Fare clic su Modifica configurazione OAuth nella configurazione del server risorse. Nella finestra di dialogo Modifica configurazione OAuth specificare i campi riportati di seguito.

Crea nuova richiesta di risarcimento per JWT

Per recuperare un nuovo token di accesso per l'applicazione amministratore del dominio di Identity, sono necessari CLIENT ID, CLIENT SECRET e DOMAIN URL.

Abbiamo CLIENT ID e CLIENT SECRET dall'applicazione integrata di dominio creata nel passo precedente.

Il file DOMAIN URL è disponibile nella pagina del dominio sotto Informazioni sul dominio.



Eseguire il comando seguente e sostituire i valori (CLIENT ID), (CLIENT SECRET) e (DOMAIN URL) con i valori.

export ACCESS_TOKEN=$(curl -s -i -u"(CLIENT ID):(CLIENT SECRET)" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST (DOMAIN URL)/oauth2/v1/token -d
      "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" | tail -n +1 | grep -o
      '"access_token":"[^"]*' | cut -d'"' -f4)
In questo esempio verranno utilizzati i seguenti valori:
  • Client ID: 123a1234e1234567aa12345a1abcdefg1
  • Client Secret: idcscs-12a1a123-a123-1234-1234-e1a05aabc123
  • Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
Eseguire il codice seguente nella shell Bash, sostituendo i valori segnaposto di conseguenza.:
export ACCESS_TOKEN=$(curl -s -i -u"123a1234e1234567aa12345a1abcdefg1: idcscs-12a1a123-a123-1234-1234-e1a05aabc123" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" |
          tail -n +1 | grep -o '"access_token":"[^"]*' | cut -d'"'
        -f4)
 
Per verificare che il token sia stato recuperato correttamente, eseguire il comando seguente ed esaminare il token visualizzato.
echo $ACCESS_TOKEN

L'immagine seguente mostra come vengono visualizzati i comandi sopra riportati nella shell Bash.



Visualizza l'output costituito da più righe (oltre 10) contenenti caratteri alfanumerici.

Eseguire il comando seguente con (ROLE CLAIM NAME) come ssaddin.role e (MODIFIED FQN) come urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords:
Nota

Utilizzare FQN dal passaggio 1 e sostituire il finale ":" con un ".".

Ad esempio, FQN dal passo 1 è:

urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords

Quindi il MODIFIED FQN dovrebbe essere:

urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords
curl -i -X POST (DOMAIN URL)/admin/v1/CustomClaims -H"Cache-Control: no-cache" -H"Accept:application/json" -H"Content-Type:application/json" -H"Authorization: Bearer $ACCESS_TOKEN" -d '{
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
    ],
    "name": "(ROLE CLAIM NAME)",
    "value": "$user.(MODIFIED FQN).*",     
    "expression": true,
    "mode": "always",
    "tokenType": "AT",
    "allScopes": false,
    "scopes": [
    "ssaddin/rbac"
  ]
}'
Nota

Sostituire Domain URL con il relativo valore effettivo nel codice sopra riportato.

Verrà visualizzato quanto segue come output:HTTP/1.1 201 Created.

Abilita il login IAM RBAC per lo schema di Autonomous AI Database

Le seguenti istruzioni consentono a ORDS di convalidare i token JWT bearer e di concedere l'accesso alle risorse protette.
  1. Nella scheda Navigator del foglio di lavoro SQL, selezionare ORDS_METADATA dall'elenco a discesa Schema.
  2. Selezionare Packages dall'elenco a discesa Tipo di oggetto.
  3. Digitare ORDS_SECURITY nel campo Cerca. La funzione di ricerca recupera tutte le voci che iniziano con ORDS_SECURITY.
  4. Espandere il pacchetto ORDS_SECURITY.



  5. Fare clic con il pulsante destro del mouse su CREATE_JWT_PROFILE e fare clic su RUN. Viene visualizzata una finestra di dialogo RUN CODE.
    Nella finestra di dialogo Run Code (Codice di esecuzione…), specificare i seguenti valori di campo:
    • P_ISSUER- https://identity.oraclecloud.com/. Questo campo deve essere un valore non nullo e deve essere compilato con una singola virgola.
    • P_AUDIENCE-ssaddin/. Questo campo deve essere un valore non nullo.
    • P_JWK_URL: consente di aggiungere l'URL DOMINIO con /admin/v1/SigningCert/jwk. Deve essere un valore non nullo che inizi con https:// e identifichi la chiave di verifica pubblica fornita dal server di autorizzazione in formato JWK (JSON Web Key).

      È possibile visualizzare l'URL dominio nella scheda Informazioni dominio presente nel menu Domini del menu di navigazione Identità e sicurezza della console OCI.

    • P_DESCRIPTION: immettere la descrizione del profilo. Ad esempio, "RBAC JWT Demo confluence".
    • P_ALLOWED_AGE-"0"
    • P_ALLOWED_SKEW-"0"
    • P_ROLE_CLAIM_NAME- "ssaddin.role"

    Fare clic su Inserisci codice nel foglio di lavoro.



    Eseguire la procedura.



    Verrà visualizzata la "procedura PL/SQL completata correttamente" nel pannello di output.

Creare un file di connessioni

  1. Fare clic su Aggiungi nell'intestazione del riquadro Connessioni per aggiungere una connessione. Viene visualizzata la finestra di dialogo Aggiungi nuova connessione.

  2. Specificare i campi riportati di seguito nella finestra di dialogo Aggiungi nuova connessione.
    • Nome connessione: immettere il nome della connessione.
    • URL di Autonomous Database: immettere l'URL dell'Autonomous AI Database a cui si desidera connettersi. Copiare l'intero URL dall'interfaccia utente Web di Autonomous AI Database. Ad esempio, immettere o copiare il collegamento seguente "https://<nomehost>-<nomebase>.adb.<region>.oraclecloudapps.com/" per connettersi al database.
    • Nome schema: immettere lo stesso schema utilizzato per Abilitare il login IAM per lo schema di Autonomous Database.
    • Selezionare il tipo di connessione: OCI IAM
    • URL dominio: immettere l'URL dominio nella scheda Informazioni dominio.
    • Selezionare il tipo IAM RBAC.
    • Ambito IAM: ssaddin/rbac



Una volta creata la connessione, è possibile condividerla con altri utenti di questo dominio.