Référence de fichier JSON de schéma

Lors de la création d'un système orchestré de tables d'application de base de données, l'agent crée un schema.json dans le répertoire de l'agent (<agent-volume>/data/schema) qui mappe les données d'identité entre les tables de base de données intégrées et Oracle Access Governance. Ce fichier peut être accepté tel quel ou modifié par vous pour configurer les entités et les attributs mappés à Oracle Access Governance à des fins de prise en compte dans les campagnes et les révisions.

Flux de détection de schéma

Le flux de repérage de schéma pour les tables d'application de base de données est le suivant :

  1. Day0 : Lorsque vous créez le système orchestré pour les tables d'application de base de données, le fichier schema.json initial est créé, en fonction des paramètres d'intégration que vous entrez. Le fichier de schéma est créé avec les détails des tables et des colonnes contenant les données utilisateur pour les entités Account, Entitlement et Lookup. Les informations de relation sont chargées à partir de la configuration que vous fournissez, ainsi que les contraintes définies dans la base de données (clés principale et étrangère). Le fichier JSON de schéma intermédiaire contiendra le mappage des attributs suivants par défaut, s'ils sont définis. Pour mapper des attributs supplémentaires, vous devez modifier le fichier schema.json :
    • UID : __UID__
    • Nom : __NAME__
    • Statut : __ENABLE__
    • Mot de passe : __PASSWORD__
  2. DayN : Les activités DayN ont lieu à tout moment après avoir généré le fichier JSON de schéma intermédiaire. Le fichier par défaut créé par l'agent peut être utilisé pour le test, mais ne prend pas en charge le chargement de données complet car il n'apporte que des attributs d'UID et de nom. Pour le chargement complet des données, vous devez modifier le fichier afin de déterminer quelles entités et quels attributs sont transmis à Oracle Access Governance. Pour plus de détails sur la structure et les options disponibles lors de la modification de schema.json, voir Informations de référence sur les fichiers JSON de schéma.
    Note

    Après Day0, vous ne pouvez pas réexécuter la détection de schéma par rapport à la base de données source et générer un nouveau fichier de schéma. Le fichier JSON de schéma situé avec votre agent est la source de vérité pour les activités DayN et toutes les mises à jour doivent être effectuées dans le fichier.
    DayN les activités peuvent inclure ce qui suit :
    1. Exécutez le chargement de données avec le schéma limité. Vous pouvez exécuter un chargement de données de test avec le schéma limité généré sur Day0. Cela inclut uniquement, le cas échéant, l'UID des attributs, le nom, le statut et le mot de passe.
    2. Modifier le fichier de schéma : Vous pouvez modifier le fichier schema.json pour mettre à jour les détails de compte, de droit et de consultation, si nécessaire. Voici certaines des raisons pour lesquelles vous pourriez le faire :
      • Vous souhaitez intégrer des attributs supplémentaires à l'UID, au nom, au statut et au mot de passe par défaut. Pour ce faire, définissez la propriété name pour tous les attributs à inclure.
      • En cas de modification de la base de données source, celle-ci doit être répercutée dans le fichier de schéma. Par exemple, si vous ajoutez une nouvelle colonne dans la table ACCOUNT, celle-ci doit être ajoutée au fichier de schéma en tant qu'attribut.
    3. Vous devez effectuer une opération de détection de schéma qui extrait les dernières informations d'attribut personnalisé. Pour plus de détails sur l'exécution de cette tâche, voir Extraire les derniers attributs personnalisés.
    4. Pour appliquer une transformation sortante, vous devez la mettre à jour à partir de la console Oracle Access Governance. Toute règle de transformation appliquée dans Schema.json ne sera pas prise en compte. Pour appliquer une règle de transformation, voir Appliquer les transformations sortantes pour les attributs d'identité. Toutefois, si vous modifiez l'attribut ou supprimez un attribut dans Schema.json, les règles de transformation associées à cet attribut de compte particulier sont supprimées lors de l'opération de détection de schéma.
    5. Exécuter les opérations de chargement et de provisionnement des données : À l'aide du schéma découvert, charger les données d'utilisateur dans Oracle Access Governance à partir de la base de données intégrée et permettre à Oracle Access Governance de provisionner des comptes et des autorisations dans la base de données intégrée.

JSON de schéma intermédiaire

Le fichier schema.json intermédiaire est généré à l'aide de toutes les informations disponibles à partir de la configuration que vous fournissez lors de la création du système orchestré. Il s'agit d'un modèle auquel vous pouvez apporter toutes les modifications qui ont une incidence sur les données d'utilisateur que vous pouvez intégrer. La structure du fichier schema.json intermédiaire est la suivante :
{
 "schemaTemplates":[
    {
        "type": "", // Type of entity "ACCOUNT", "ENTITLEMENT", "TARGETACCOUNT" or "LOOKUP"
        "name": "", // Name of entity
        "displayName": "", // display name of entity
        "data": {
            // Key-value pairs representing static lookup data if any, or else it will be missing from here.
        }
        "attributes": [
            {
                "name": "", // AG side Name of attribute
                "targetName": "", // Target side name of attribute
                "displayName": "" // Optional display name for the attribute which will be given priority if provided, else attribute name will be used for display name.
                "dataType": "", // Either of TEXT, DATE, NUMBER, DECIMAL_NUMBER, FLAG
                "nature": [ // One or more of "REQUIRED", "MULTIVALUED", "SENSITIVE". It can be missing from here if nothing applies.
                ],
                "usage": [ // One or more of "READ", "PROVISION". It can be missing from here if nothing applies.
                ],
                "relationship": { // Entity relationship details
                    "relatedTo": "", // Entity name in relationship with
                    "relatedBy": "", // Attribute to define the relation
                    "relationshipProperties": [ // Additional relationship properties
                        {
                            "name": "", // Name of additional attribute
                            "dataType": "", // Either of TEXT, DATE, NUMBER, DECIMAL_NUMBER, FLAG
                            "nature": [ // Only READ_ONLY is possible, or else it will be missing from here
                            ],
                            "uiProperties": { // ARMD if applicable, or it will be missing from here
                                "inputType": "" // Either of Auto, User, Admin
                                "widget": "", // Widget to use on UI i.e. Either of Text, Password, Number, Date, SelectOne, RepeatableFieldSet, CheckboxSet
                                "title": "", // Title to use on UI
                                "labelHint": "", // Labelhint to use on UI
                                "minLength": {SOME_POSITIVE_NUMBER},
                                "maxLength": {SOME_POSITIVE_NUMBER},
                                "defaultValues": [ // Default values if applicable, or it will be missing from here
                                ]
                            }
                        }
                    ]
                },
                "outboundTransformation": { // Outbound transformation script if applicable, or it will be missing from here
                    "script": "" // Script to execute for transformation
                },
                "uiProperties": { // ARMD if applicable, or it will be missing from here
                    "inputType": "" // Either of Auto, User, Admin
                    "widget": "", // Widget to use on UI i.e. Either of Text, Password, Number, Date, SelectOne, RepeatableFieldSet, CheckboxSet
                    "title": "", // Title to use on UI
                    "labelHint": "", // Labelhint to use on UI
                    "minLength": {SOME_POSITIVE_NUMBER},
                    "maxLength": {SOME_POSITIVE_NUMBER},
                    "defaultValues": [ // Default values if applicable, or it will be missing from here
                    ]
                }
            }
        ]
    }
  ]
}
Note

L'attribut uiProperties n'est inclus que pour les types d'entité TARGETACCOUNT. Il ne doit pas être utilisé pour les types d'entité ACCOUNT, ENTITLEMENT ou LOOKUP.
Le schéma peut contenir des entités des types suivants :
  • ACCOUNT : Le type d'entité ACCOUNT est mappé à l'entité Identité d'Oracle Access Governance. Les attributs du type d'entité ACCOUNT sont utilisés pour alimenter une identité dans Oracle Access Governance.
  • TARGETACCOUNT : Le type d'entité TARGETACCOUNT mappe l'entité Compte d'Oracle Access Governance. Lorsque vous provisionnez un compte dans votre application de base de données, les attributs du type d'entité ACCOUNT Oracle Access Governance sont utilisés pour alimenter l'entité de base de données TARGETACOUNT.
  • RÈGLEMENT : RÈGLEMENT correspond à l'autorisation d'Oracle Access Governance.
  • LOOKUP : LOOKUP est mappé aux informations de consultation dans Oracle Access Governance.
Lorsque le schéma intermédiaire JSON est généré, il alimente à la fois ACCOUNT et TARGETACCOUNT pour chaque utilisateur des tables de base de données. Cela se produit quel que soit le mode de configuration du système orchestré, de la source faisant autorité et/ou du système géré. Toutefois, lors de l'exécution du chargement de données, les règles suivantes s'appliquent pour savoir laquelle de ces entités est réellement créée dans Oracle Access Governance.
  1. Le mode sélectionné est Source faisant autorité seulement :
    • ACCOUNT et TARGETACCOUNT sont générés dans le schéma JSON.
    • Seule une identité est créée dans Oracle Access Governance, en fonction des valeurs de ACCOUNT.
    • TARGETACCOUNT peut être ignoré.
  2. Le mode sélectionné est Système géré seulement :
    • ACCOUNT et TARGETACCOUNT sont générés dans le schéma JSON.
    • Seul un compte est créé dans Oracle Access Governance, en fonction des valeurs de TARGETACCOUNT.
    • Le compte peut être ignoré.
  3. Le mode sélectionné est Source faisant autorité et Système géré.
    • ACCOUNT et TARGETACCOUNT sont générés dans le schéma JSON.
    • L'identité est créée dans Oracle Access Governance, en fonction des valeurs de ACCOUNT.
    • Le compte est créé dans Oracle Access Governance, en fonction des valeurs de TARGETACCOUNT.
Note

Les droits accordés directement dans les tables de base de données, qui sont ensuite chargés dans Oracle Access Governance, ne peuvent pas être gérés par Oracle Access Governance lorsque le système orchestré est configuré en mode systèmes gérés. Seuls les droits provenant d'une demande de provisionnement d'Oracle Access Governance peuvent être gérés par Oracle Access Governance.

Attributs d'identité de base

Lorsque vous exécutez les tables d'application de base de données en mode source faisant autorité, vous pouvez intégrer les données d'utilisateur de votre base de données intégrée dans Oracle Access Governance, qui est utilisée pour créer une identité Oracle Access Governance.

La liste des attributs de base pouvant être affectés à une identité Oracle Access Governance est présentée ci-dessous. L'élément "nature": ["REQUIRED"] indique qu'un attribut ne doit pas être NULL dans la base de données source. Cela ne signifie pas que l'attribut doit être inclus dans la détection de schéma. Vous pouvez l'inclure ou non dans le schéma à intégrer.
[
  {
    "name": "uid",
    "dataType": "TEXT",
    "nature": [
      "REQUIRED"
    ],
    "usage": [
      "READ"
    ]
  },
  {
    "name": "name",
    "dataType": "TEXT",
    "nature": [
      "REQUIRED"
    ],
    "usage": [
      "READ"
    ]
  },
  {
    "name": "email",
    "dataType": "TEXT",
    "nature": [
      "REQUIRED"
    ],
    "usage": [
      "READ"
    ]
  },
  {
    "name": "firstName",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "middleName",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "lastName",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "displayName",
    "dataType": "TEXT",
    "nature": [
      "REQUIRED"
    ],
    "usage": [
      "READ"
    ]
  },
  {
    "name": "employeeType",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "title",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "empNo",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "status",
    "dataType": "FLAG",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "jobCode",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "state",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "risk",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "location",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "department",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "managerUid",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "managerLogin",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "organizationUid",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "organizationName",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "country",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "postalCode",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  },
  {
    "name": "territory",
    "dataType": "TEXT",
    "usage": [
      "READ"
    ]
  }
]

Statut d'utilisateur

Lorsque vous exécutez les tables d'application de base de données en mode source faisant autorité, vous pouvez intégrer les données d'utilisateur de votre base de données intégrée dans Oracle Access Governance, qui est utilisée pour créer une identité Oracle Access Governance.

Lorsque vous configurez votre système orchestré, vous êtes invité à entrer la colonne de base de données contenant le statut d'un enregistrement d'utilisateur. Cette colonne détermine si l'utilisateur est activé ou désactivé dans Oracle Access Governance. Ces informations sont toujours saisies lors du chargement complet des données, quel que soit le mode configuré (source autorisée ou système géré).

Vous configurez également les valeurs booléennes suivantes pour le statut Activé/Désactivé :
  • Valeur de statut activé pour le compte d'utilisateur : Cette valeur par défaut est ACTIVE ou peut être définie comme n'importe quelle valeur de texte de la base de données qui correspond à un statut activé dans Oracle Access Governance. Par exemple, Y (Oui), Yes (Oui), true (Vrai), etc.
  • Valeur de statut Désactivé du compte d'utilisateur : Cette valeur par défaut est INACTIVE ou peut être définie comme n'importe quelle valeur de texte de la base de données qui correspond à un statut Désactivé dans Oracle Access Governance. Par exemple, N, No, false, etc.
Le mappage de la valeur de la base de données au statut activé/désactivé d'Oracle Access Governance utilise la logique suivante :
  • Si l'utilisateur a un statut égal à la valeur Valeur de statut désactivée du compte d'utilisateur, l'utilisateur sera marqué comme désactivé dans Oracle Access Governance.
  • Si l'utilisateur a une autre valeur, il est supposé que l'utilisateur est activé et qu'il est marqué comme tel dans Oracle Access Governance.

Mise à jour du fichier JSON de schéma intermédiaire

Vous pouvez mettre à jour le fichier JSON de schéma intermédiaire pour inclure des attributs dans le schéma Oracle Access Governance.

Pour inclure ou exclure des attributs de schéma d'Oracle Access Governance, tenez compte de l'exemple d'entité suivant, qui présente un exemple d'entité ACCOUNT :

    "type" : "ACCOUNT",
    "name" : "ACCOUNT",
    "displayName" : "Account",
    "attributes" : [ {
      "name" : "joiningDate",
      "targetName" : "JOININGDATE",
      "displayName" : "",
      "dataType" : "DATE",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "",
      "targetName" : "LASTUPDATED",
      "displayName" : "",
      "dataType" : "DATE",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "firstName",
      "targetName" : "FIRSTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "email",
      "targetName" : "EMAIL",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "REQUIRED" ],
      "usage" : [ "READ" ]
    }, {
      "name" : "name",
      "targetName" : "__NAME__",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "REQUIRED" ],
      "usage" : [ "READ" ]
    }, {
      "name" : "uid",
      "targetName" : "__UID__",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "REQUIRED" ],
      "usage" : [ "READ" ]
    }, {
      "name" : "status",
      "targetName" : "__ENABLE__",
      "displayName" : "",
      "dataType" : "FLAG",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "salary",
      "targetName" : "SALARY",
      "displayName" : "",
      "dataType" : "DECIMAL_NUMBER",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "password",
      "targetName" : "__PASSWORD__",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "SENSITIVE" ],
      "usage" : [ ]
    }, {
      "name" : "country",
      "targetName" : "COUNTRYCODE",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ],
      "relationship" : {
        "relatedTo" : "A_COUNTRY",
        "relatedBy" : "COUNTRYCODE"
      }
    }, {
      "name" : "",
      "targetName" : "DESCRIPTION",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }, {
      "name" : "lastName",
      "targetName" : "LASTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    } ]
  }, {

Inclusion d'attributs dans votre schéma

Notez les paramètres name et targetName pour les attributs répertoriés dans l'exemple. Vous verrez que dans tous les cas le paramètre targetName est alimenté. En effet, ce paramètre est mappé au nom de colonne de votre base de données Oracle qui contient les informations utilisateur que vous intégrez. Par exemple, nous avons FIRSTNAME, LASTNAME, DESCRIPTION, etc. Le paramètre name n'est toutefois pas toujours alimenté. En effet, le paramètre name est en corrélation avec l'attribut du schéma côté gouvernance d'Oracle Access. Si name est alimenté, ce paramètre est inclus dans le schéma Oracle Access Governance, par exemple :
"name" : "firstName",
"targetName" : "FIRSTNAME",
Si name n'est pas alimenté, ce paramètre n'est pas inclus dans le schéma Oracle Access Governance. Dans l'exemple ci-dessus, le paramètre DESCRIPTION n'est pas inclus :
"name" : "",
"targetName" : "DESCRIPTION",

Inclusion des tables de consultation

Pour inclure des tables de consultation dans votre schéma, vous utilisez la même méthode que ci-dessus, en définissant le paramètre name dans votre fichier JSON de schéma. La définition du paramètre name inclura toutes les données de consultation et les mappera à l'attribut Oracle Access Governance approprié. De plus, si vous incluez une table de consultation, les valeurs seront affichées dans une liste de valeurs lors de la création d'un nouvel ensemble d'accès.

    "type" : "LOOKUP",
    "name" : "COUNTRY",
    "displayName" : "Country",
    "attributes" : [ {
      "name" : "uid",
      "targetName" : "__UID__",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "REQUIRED" ],
      "usage" : [ "READ" ]
    }, {
      "name" : "name",
      "targetName" : "__NAME__",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ "REQUIRED" ],
      "usage" : [ "READ" ]
    } ]
  }
En outre, vous devez créer un champ dans votre table ACCOUNT principale qui contient la valeur de votre consultation. Dans cet exemple, vous pouvez avoir un attribut tel que account.homeCountry qui contient cette valeur. Cet attribut doit avoir une relation de clé étrangère avec votre table ACCOUNT. Voici un exemple :
    "type" : "ACCOUNT",
    "name" : "ACCOUNT",
    "displayName" : "Account",
    "attributes" : ...
{
      "name" : "country",
      "targetName" : "COUNTRYCODE",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ],
      "relationship" : {
        "relatedTo" : "COUNTRY",
        "relatedBy" : "COUNTRYCODE"
      }

Mappage aux attributs de base et personnalisés

Vous pouvez déterminer si un paramètre est mappé à un attribut de base ou à un attribut personnalisé. Si vous utilisez le nom de l'attribut de base dans name, la valeur targetName correspondante est mappée à l'attribut de base. Si name n'est pas le nom d'un attribut de base, la valeur targetName est mappée à un attribut personnalisé. Par exemple, ce qui suit mapperait la colonne de base de données FIRSTNAME à l'attribut de base firstName.
{
      "name" : "firstName",
      "targetName" : "FIRSTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }
alors que ce qui suit mapperait FIRSTNAME à un attribut personnalisé nommé foreName
{
      "name" : "foreName",
      "targetName" : "FIRSTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }
.