Connexions IAM basées sur le contrôle d'accès (RBAC)

Cette rubrique fournit des instructions pour la gestion informatique sur la préparation d'une application intégrée au domaine qui active le contrôle d'accès basé sur les rôles à l'aide de réclamations personnalisées de jeton Web JSON (JWT). Les utilisateurs de domaine peuvent ainsi se connecter à la base de données à l'aide de leurs informations d'identification de domaine au lieu du mot de passe de schéma.

Ce chapitre permet aux utilisateurs de domaine de s'authentifier auprès de la base de données avec leurs informations d'identification de domaine plutôt que d'utiliser le mot de passe propre au schéma.

Pour créer une application intégrée de domaine qui autorise le contrôle d'accès basé sur les rôles avec des réclamations personnalisées JWT, vous devez :
Remarque

Nous allons utiliser le domaine Default tout au long de ce chapitre, mais vous pouvez sélectionner n'importe quel domaine de votre préférence.

créer des attributs personnalisés pour les utilisateurs,

Les attributs d'entité sont des propriétés de l'entité. Les informations relatives à l'entité utilisateur sont stockées sous la forme d'attributs, tels que le prénom, le nom, la connexion utilisateur et le mot de passe. Vous pouvez créer des attributs personnalisés avec OCI. Commençons par définir un attribut utilisateur personnalisé, qui servira à stocker les rôles affectés à chaque utilisateur dans le domaine.
  1. Accédez à : IdentitéDomainesValeur par défaut. Cliquez sur l'onglet Gestion des schémas et sélectionnez Attributs utilisateur.
  2. Cliquez sur Ajouter un attribut sous Attributs utilisateur.



  3. Dans la boîte de dialogue Ajouter des attributs, renseignez les champs suivants :
    • Nom d'affichage : ORDS RBAC
    • Nom :rbac_ords
    • Description :Contrôle d'accès basé sur les rôles pour ORDS
    • Type de données : tableau de chaînes :

    Vous pouvez laisser les autres champs à leur état par défaut.



    Cliquez sur Ajouter. Vous avez ajouté l'attribut personnalisé.

  4. Recherchez l'attribut que vous venez d'ajouter en saisissant Personnalisé dans le champ de recherche. Vous pouvez afficher l'attribut ORDS RBAC dans la liste.



    Cliquez sur Modifier un attribut.

  5. Copiez et notez la valeur de FQN (Nom complet qualifié).



    Dans cet exemple, le FQN est urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords.

Affecter un rôle personnalisé

Une fois que vous avez créé un attribut utilisateur personnalisé, vous pouvez continuer à affecter des rôles personnalisés dans ce champ d'attribut.
  1. Accédez à : IdentitéDomainesValeur par défaut. Cliquez sur l'onglet Gestion des utilisateurs et sélectionnez votre nom utilisateur dans la liste des utilisateurs affichée.



    Cliquez sur Modifier l'utilisateur. Faites défiler la page vers le bas jusqu'au champ Autres informations et entrez SQL Developer, SODA Developer sous ORDS RBAC.

    Pour plus d'informations sur les rôles ORDS, reportez-vous à ce chapitre sur A propos des rôles utilisateur Oracle REST Data Services.



    Une fois les rôles ajoutés, cliquez sur Enregistrer les modifications.

Créer un domaine Application intégrée

Nous développerons une application intégrée au sein du domaine qui émettra un jeton JWT lors de la connexion.

  1. Accédez à : IdentitéDomainesValeur par défaut. Cliquez sur l'onglet Applications intégrées et sélectionnez Ajouter une application.
  2. Cliquez sur Application confidentielle et sélectionnez Lancer le workflow.
  3. Dans la boîte de dialogue Ajouter une application confidentielle, indiquez les champs suivants :
    • Nom : entrez le nom d'application confidentielle. Par exemple, RBAC d'extension de feuille de calcul.
    • Description : entrez la description. Par exemple, Application intégrée pour le contrôle d'accès basé sur les rôles du complément de feuille de calcul.



    Cliquez sur Soumettre.

    La page de l'application RBAC de complément de feuille de calcul que vous venez d'ajouter apparaît.

  4. Cliquez sur Modifier la configuration OAuth dans l'onglet Configuration OAuth de la page RBAC d'extension de feuille de calcul.



  5. Sous Configuration du serveur de ressources, sélectionnez Configurer cette application comme serveur de ressource maintenant.
  6. Dans Configurer les API d'application devant être protégées par OAuth, sélectionnez 3600 comme expiration de jeton d'accès (secondes).
  7. Dans le champ Audience principale, entrez ssaddin/.
  8. Cliquez sur Ajouter des portées et ajoutez rbac Portée.



  9. Sous Configuration client, indiquez les champs suivants :
    • Sélectionnez Configurer cette application comme client maintenant.
    • Sélectionnez Implicite sous Types d'octroi autorisés.
    • Entrez la valeur suivante dans le champ URL de réacheminement : https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
    • Entrez la valeur suivante dans le champ URL de post-déconnexion : https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html



    Cliquez sur Soumettre.
    Remarque

    Veillez à activer l'application.

Définir une déclaration personnalisée

Pour inclure des rôles utilisateur dans le jeton JWT, nous devons mettre en correspondance l'attribut personnalisé établi dans la première section avec le jeton JWT à l'aide d'une demande personnalisée.

Pour ce faire, nous devons créer une application intégrée temporaire supplémentaire et y joindre la réclamation personnalisée.

Créer une application intégrée de domaine d'identité

Vous allez créer une application intégrée temporaire supplémentaire :
  1. Accédez à : IdentitéDomainesValeur par défaut.
  2. Cliquez sur l'onglet Applications intégrées et sélectionnez Ajouter une application.
  3. Cliquez sur Application confidentielle et sélectionnez Lancer le workflow.
    • Entrez le nom de l'application : Application intégrée de domaine d'identité
    • Entrer la description : Il s'agit d'une application intégrée au domaine.

    Cliquez sur Soumettre.

  4. Sur la page Application intégrée de domaine d'identité, sélectionnez l'onglet Configuration OAuth.
  5. Cliquez sur Modifier la configuration OAuth dans la configuration du serveur de ressources. Dans la boîte de dialogue Modifier la configuration OAuth, renseignez les champs suivants :

Créer une nouvelle réclamation pour le jeton JWT

CLIENT ID, CLIENT SECRET et DOMAIN URL sont requis pour extraire un nouveau jeton d'accès pour l'application d'administrateur de domaine d'identité.

Nous avons les éléments CLIENT ID et CLIENT SECRET de l'application intégrée de domaine que vous avez créée à l'étape précédente.

Le fichier DOMAIN URL se trouve sur la page du domaine sous Informations sur le domaine.



Exécutez la commande suivante et remplacez les valeurs (CLIENT ID), (CLIENT SECRET) et (DOMAIN URL) par vos valeurs.

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)
Dans cet exemple, vous allez utiliser les valeurs suivantes :
  • Client ID: 123a1234e1234567aa12345a1abcdefg1
  • Client Secret: idcscs-12a1a123-a123-1234-1234-e1a05aabc123
  • Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
Exécutez le code suivant dans le shell Bash, en remplaçant les valeurs d'espace réservé en conséquence :
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)
 
Pour vérifier que vous avez correctement récupéré le jeton, exécutez la commande suivante et vérifiez le jeton affiché.
echo $ACCESS_TOKEN

L'image ci-dessous montre comment les commandes ci-dessus apparaissent dans le shell Bash.



Il affiche la sortie composée de plusieurs lignes (plus de 10) contenant des caractères alphanumériques.

Exécutez la commande suivante avec (ROLE CLAIM NAME) en tant que ssaddin.role et (MODIFIED FQN) en tant que urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords :
Remarque

Utilisez le signe FQN de l'étape 1 et remplacez le signe " :" final par un signe ".".

Par exemple, FQN de l'étape 1 est :

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

MODIFIED FQN doit donc être :

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"
  ]
}'
Remarque

Remplacez Domain URL par sa valeur réelle dans le code ci-dessus.

La sortie suivante s'affiche :HTTP/1.1 201 Created.

Activation de la connexion RBAC IAM pour le schéma Autonomous Database

Les instructions suivantes permettent à ORDS de valider les jetons de support JWT et d'accorder l'accès aux ressources protégées.
  1. Dans l'onglet Navigator de la feuille de calcul SQL, sélectionnez ORDS_METADATA dans la liste déroulante Schema.
  2. Sélectionnez Packages dans la liste déroulante Type d'objet.
  3. Saisissez ORDS_SECURITY dans le champ Rechercher. La fonction de recherche extrait toutes les entrées qui commencent par ORDS_SECURITY.
  4. Développez le package ORDS_SECURITY.



  5. Cliquez avec le bouton droit de la souris sur CREATE_JWT_PROFILE et cliquez sur RUN. La boîte de dialogue RUN CODE s'ouvre.
    Dans la boîte de dialogue Run Code…, indiquez les valeurs de champ suivantes :
    • P_ISSUER- https://identity.oraclecloud.com/. Ce champ doit être une valeur non NULL et doit être rempli à l'aide d'une seule virgule.
    • P_AUDIENCE-ssaddin/. Ce champ doit être une valeur non NULL.
    • P_JWK_URL : ajoutez l'URL DOMAIN à la fin avec /admin/v1/SigningCert/jwk. Il doit s'agir d'une valeur non NULL commençant par https :// et identifier la clé de vérification publique fournie par le serveur d'autorisation au format de clé Web JSON (JWK).

      Vous pouvez afficher l'URL de domaine dans l'onglet Informations sur le domaine présent dans le menu Domaines du menu de navigation Identité et sécurité de la console OCI.

    • P_DESCRIPTION : entrez la description de ce profil. Par exemple, "RBAC JWT Demo confluence".
    • P_ALLOWED_AGE-"0"
    • P_ALLOWED_SKEW-"0"
    • P_ROLE_CLAIM_NAME - "ssaddin.role"

    Cliquez sur Insérer un code dans la feuille de calcul.



    Exécutez la procédure.



    La procédure PL/SQL terminée s'affiche dans le panneau de sortie.

Créer un fichier de connexion

  1. Cliquez sur Ajouter dans l'en-tête du panneau Connexions pour ajouter une connexion. La boîte de dialogue Ajouter une nouvelle connexion s'ouvre.

  2. Indiquez les champs suivants dans la boîte de dialogue Ajouter une nouvelle connexion :
    • Nom de connexion : entrez le nom de la connexion.
    • URL d'Autonomous Database : entrez l'URL de la base de données Autonomous Database à laquelle vous souhaitez vous connecter. Copiez l'URL entière à partir de l'interface utilisateur Web d'Autonomous Database. Par exemple, saisissez ou copiez le lien "https ://<nom_hôte>-<nom_databas>.adb.<région>.oraclecloudapps.com/" pour vous connecter à la base de données.
    • Nom de schéma : entrez le même schéma que celui utilisé pour activer la connexion IAM pour le schéma Autonomous Database.
    • Sélectionnez le type de connexion : OCI IAM
    • URL de domaine : entrez l'URL de domaine dans l'onglet Informations sur le domaine.
    • Sélectionnez le type IAM RBAC.
    • Portée d'IAM : ssaddin/rbac



Une fois la connexion créée, vous pouvez la partager avec d'autres utilisateurs de ce domaine.