Referência do Arquivo JSON do Esquema

Na criação de um sistema orquestrado de Tabelas do Aplicativo de Banco de Dados, o agente cria um schema.json no diretório do agente (<agent-volume>/data/schema) que mapeia dados de identidade entre as tabelas do banco de dados integrado e o Oracle Access Governance. Esse arquivo pode ser aceito no estado em que se encontra ou modificado por você para configurar quais entidades e atributos são mapeados para o Oracle Access Governance para consideração em campanhas e revisões.

Fluxo de Descoberta de Esquema

O fluxo de descoberta de esquema para Tabelas do Aplicativo de Banco de Dados é o seguinte:

  1. Day0: Quando você cria o sistema orquestrado de Tabelas do Aplicativo de Banco de Dados, o arquivo schema.json inicial é criado, com base nas definições de integração informadas. O arquivo de esquema é criado com detalhes de tabelas e colunas que contêm dados do usuário para entidades Conta, Direito e Pesquisa. As informações de relacionamento são carregadas a partir da configuração fornecida, juntamente com quaisquer restrições definidas no banco de dados (chaves Primárias e Estrangeiras). O arquivo JSON do esquema intermediário conterá o mapeamento para os atributos a seguir por padrão, se eles forem definidos. Para mapear atributos adicionais, edite o arquivo schema.json:
    • UID: __UID__
    • Nome: __NAME__
    • Status: __ENABLE__
    • Senha: __PASSWORD__
  2. DayN: As atividades DayN ocorrem a qualquer momento após você ter gerado o arquivo JSON de esquema intermediário. O arquivo padrão criado pelo agente pode ser usado para teste, mas não oferece suporte ao carregamento completo de dados, pois ele só traz atributos de UID e nome. Para o carregamento completo de dados, você deve editar o arquivo para determinar quais entidades e atributos são transmitidos ao Oracle Access Governance. Para obter detalhes completos sobre a estrutura e as opções disponíveis ao editar o schema.json, consulte Referência de Arquivo JSON do Esquema.
    Observação

    Após Day0, você não pode executar novamente a descoberta de esquema no banco de dados de origem e gerar um novo arquivo de esquema. O arquivo JSON do esquema localizado com seu agente é a origem da verdade para atividades DayN, e todas as atualizações devem ser feitas no arquivo.
    As atividades do DayN podem incluir o seguinte:
    1. Execute a carga de dados com o esquema limitado. Você pode executar uma carga de dados de teste com o esquema limitado gerado no Day0. Isso incluirá somente, quando disponível, os atributos uid, nome, status e senha.
    2. Modificar arquivo de esquema: Você pode modificar o arquivo schema.json para atualizar os detalhes da Conta, do Direito e da Pesquisa, se necessário. Alguns motivos pelos quais você pode fazer isso são:
      • Você deseja integrar atributos adicionais ao uid padrão, nome, status e senha. Para fazer isso, defina a propriedade name para todos os atributos que você deseja incluir.
      • Se houver uma alteração no banco de dados de origem, isso deverá ser refletido no arquivo de esquema. Por exemplo, se você adicionar uma nova coluna à tabela ACCOUNT, isso precisaria ser adicionado ao arquivo de esquema como um atributo.
    3. Execute uma operação de descoberta de esquema que extrairá as informações de atributo personalizado mais recentes. Para obter detalhes sobre como executar essa tarefa, consulte Obter Atributos Personalizados Mais Recentes.
    4. Para aplicar a transformação de saída, você deve atualizá-la na Console do Oracle Access Governance. Nenhuma regra de transformação aplicada em Schema.json seria considerada. Para aplicar a regra de transformação, consulte Aplicar Transformações de Saída para Atributos de Identidade. No entanto, se você alterar o atributo ou excluir um atributo em Schema.json, as regras de transformação, relacionadas a esse atributo de conta específico, serão excluídas durante a operação de Descoberta de Esquema.
    5. Executar operações de carregamento e provisionamento de dados: Usando o esquema descoberto, carregue dados do usuário no Oracle Access Governance do banco de dados integrado e permita que o Oracle Access Governance provisione contas e permissões no banco de dados integrado.

Esquema Intermediário JSON

O arquivo schema.json intermediário é gerado usando todas as informações disponíveis na configuração que você fornece durante a criação do sistema orquestrado. Isso serve como um modelo para o qual você pode fazer qualquer alteração que afete os dados do usuário que você pode integrar. A estrutura do arquivo intermediário schema.json é a seguinte:
{
 "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
                    ]
                }
            }
        ]
    }
  ]
}
Observação

O atributo uiProperties só está no escopo dos tipos de entidade TARGETACCOUNT. Não deve ser usado para os tipos de entidade ACCOUNT, ENTITLEMENT ou LOOKUP.
O esquema pode conter entidades dos seguintes tipos:
  • CONTA: O tipo de entidade CONTA é mapeado para a entidade de Identidade do Oracle Access Governance. Os atributos do tipo de entidade ACCOUNT são usados para preencher uma Identidade no Oracle Access Governance.
  • TARGETACCOUNT: O tipo de entidade TARGETACCOUNT mapeia a entidade Conta do Oracle Access Governance. Quando você provisiona uma conta no seu aplicativo de banco de dados, os atributos do tipo de entidade ACCOUNT Oracle Access Governance serão usados para preencher a entidade de banco de dados TARGETACOUNT.
  • ENTITLEMENT: A ENTITLEMENT é mapeada para Permissão do Oracle Access Governance.
  • LOOKUP: O LOOKUP é mapeado para informações de LOOKUP no Oracle Access Governance.
Quando o esquema intermediário JSON é gerado, ele preenche ACCOUNT e TARGETACCOUNT para cada usuário nas tabelas do banco de dados. Isso acontece independentemente de qualquer modo que você configure o sistema orquestrado, a origem autorizada e/ou o sistema gerenciado. No entanto, quando a carga de dados é executada, as regras a seguir se aplicam a quais dessas entidades são realmente criadas no Oracle Access Governance.
  1. O modo selecionado é apenas Origem Autorizada:
    • ACCOUNT e TARGETACCOUNT são gerados no esquema JSON.
    • Somente uma Identidade é criada no Oracle Access Governance, com base nos valores de ACCOUNT.
    • TARGETACCOUNT pode ser ignorado.
  2. O modo selecionado é Sistema Gerenciado somente:
    • ACCOUNT e TARGETACCOUNT são gerados no esquema JSON.
    • Somente uma Conta é criada no Oracle Access Governance, com base nos valores de TARGETACCOUNT.
    • A CONTA pode ser ignorada.
  3. O modo selecionado é Origem Autorizada e Sistema Gerenciado.
    • ACCOUNT e TARGETACCOUNT são gerados no esquema JSON.
    • A identidade é criada no Oracle Access Governance, com base nos valores de ACCOUNT.
    • A conta é criada no Oracle Access Governance, com base nos valores de TARGETACCOUNT.
Observação

Quaisquer direitos concedidos diretamente nas tabelas de banco de dados, que são carregados no Oracle Access Governance, não podem ser gerenciados pelo Oracle Access Governance quando o sistema orquestrado é configurado no modo de sistemas gerenciados. Somente direitos originados em uma solicitação de provisionamento do Oracle Access Governance podem ser gerenciados pelo Oracle Access Governance.

Principais Atributos de Identidade

Ao executar Tabelas de Aplicativos de Banco de Dados no modo de origem autorizado, você pode integrar dados do usuário do seu banco de dados integrado ao Oracle Access Governance, que é usado para criar uma Identidade do Oracle Access Governance.

A lista de atributos principais que podem ser designados a uma Identidade do Oracle Access Governance é mostrada abaixo. O elemento, "nature": ["REQUIRED"], indica que um atributo deve ser NOT NULL no banco de dados de origem. Isso não significa que o atributo deve ser incluído na descoberta do esquema. Você pode ou não incluí-lo no esquema que deseja integrar.
[
  {
    "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"
    ]
  }
]

Status do Usuário

Ao executar Tabelas de Aplicativos de Banco de Dados no modo de origem autorizado, você pode integrar dados do usuário do seu banco de dados integrado ao Oracle Access Governance, que é usado para criar uma Identidade do Oracle Access Governance.

Quando você configura o sistema orquestrado, é solicitado que você informe a coluna do banco de dados que contém o status de um registro de usuário. Esta coluna determina se o usuário está ativado ou desativado no Oracle Access Governance. Essas informações são sempre capturadas durante o carregamento completo de dados, independentemente do modo configurado (origem autorizada ou sistema gerenciado).

Você também configura os seguintes valores boolianos para o status ativado/desativado:
  • Valor de status ativado da conta do usuário: Esse valor será definido como ACTIVE ou pode ser definido como qualquer valor de texto do banco de dados que é mapeado para um status ativado no Oracle Access Governance. Alguns exemplos incluem Y, Yes, true e assim por diante.
  • Valor de status desativado da conta do usuário: Esse valor será definido como INATIVO ou pode ser definido como qualquer valor de texto do banco de dados que é mapeado para um status desativado no Oracle Access Governance. Alguns exemplos incluem N, Não, falso e assim por diante.
O mapeamento do valor do banco de dados para o status ativado/desativado do Oracle Access Governance usa a seguinte lógica:
  • Se o usuário tiver um status igual ao valor de Status desativado da conta do usuário, o usuário será marcado como desativado no Oracle Access Governance.
  • Se o usuário tiver qualquer outro valor, presume-se que o usuário está ativado e o usuário está marcado como tal no Oracle Access Governance.

Atualizando o Arquivo JSON do Esquema Intermediário

Você pode atualizar o arquivo JSON do esquema intermediário para incluir atributos no esquema do Oracle Access Governance.

Para incluir ou excluir atributos de esquema do Oracle Access Governance, considere o seguinte exemplo de entidade, que mostra um exemplo de entidade 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" ]
    } ]
  }, {

Incluindo Atributos no Esquema

Observe os parâmetros name e targetName para os atributos listados no exemplo. Você verá que, em todos os casos, o parâmetro targetName é preenchido. Isso ocorre porque esse parâmetro é mapeado para o nome da coluna no banco de dados Oracle que contém as informações do usuário que você está integrando. Por exemplo, temos FIRSTNAME, LASTNAME, DESCRIPTION e assim por diante. No entanto, o parâmetro name nem sempre é preenchido. Isso ocorre porque o parâmetro name se correlaciona ao atributo no esquema no lado do Oracle Access Governance. Se name for preenchido, esse parâmetro será incluído no esquema do Oracle Access Governance, por exemplo:
"name" : "firstName",
"targetName" : "FIRSTNAME",
Se o name não for preenchido, esse parâmetro não será incluído no esquema do Oracle Access Governance. No exemplo acima, o parâmetro DESCRIPTION não está incluído:
"name" : "",
"targetName" : "DESCRIPTION",

Incluindo Tabelas de Consulta

Para incluir tabelas de pesquisa ao seu esquema, use o mesmo método descrito acima, definindo o parâmetro name no arquivo JSON do seu esquema. A definição do parâmetro name incluirá todos os dados de consulta e os mapeará para o atributo relevante do Oracle Access Governance. Além disso, se você incluir uma tabela de consulta, os valores serão exibidos em uma lista de valores ao criar um novo pacote de acesso.

    "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" ]
    } ]
  }
Além disso, você deve criar um campo em sua tabela ACCOUNT principal que contenha o valor de sua consulta. Neste exemplo, você pode ter um atributo como account.homeCountry que contém esse valor. Este atributo deve ter um relacionamento de chave estrangeira com sua tabela ACCOUNT. Um exemplo pode ser:
    "type" : "ACCOUNT",
    "name" : "ACCOUNT",
    "displayName" : "Account",
    "attributes" : ...
{
      "name" : "country",
      "targetName" : "COUNTRYCODE",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ],
      "relationship" : {
        "relatedTo" : "COUNTRY",
        "relatedBy" : "COUNTRYCODE"
      }

Mapeamento para Atributos Principais e Personalizados

Você pode determinar se um parâmetro está mapeado para um atributo principal ou um atributo personalizado. Se você usar o nome do atributo principal no name, o valor targetName correspondente será mapeado para o atributo principal. Se name não for o nome de um atributo principal, o valor targetName será mapeado para um atributo personalizado. Por exemplo, o seguinte mapearia a coluna do banco de dados FIRSTNAME para o atributo principal firstName.
{
      "name" : "firstName",
      "targetName" : "FIRSTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }
enquanto o seguinte mapearia FIRSTNAME para um atributo personalizado chamado foreName
{
      "name" : "foreName",
      "targetName" : "FIRSTNAME",
      "displayName" : "",
      "dataType" : "TEXT",
      "nature" : [ ],
      "usage" : [ "READ" ]
    }
.