Conexiones de IAM de control de acceso basada en roles

En este tema se proporcionan instrucciones para la gestión de TI sobre cómo preparar una aplicación integrada en el dominio que active el control de acceso basado en roles mediante reclamaciones personalizadas de token web JSON (JWT). Esto permitirá a los usuarios de dominio conectarse a la base de datos mediante sus credenciales de dominio en lugar de la contraseña de esquema.

Este capítulo permite a los usuarios de dominio autenticarse en la base de datos con sus credenciales de dominio en lugar de utilizar la contraseña específica del esquema.

Para crear una aplicación integrada de dominio que permita el control de acceso basado en roles con reclamaciones personalizadas de JWT, debe:
Nota

En este capítulo, utilizaremos el dominio Default, pero puede seleccionar cualquier dominio de su preferencia.

Creación de atributos personalizados para usuarios

Los atributos de entidad son propiedades de la entidad. La información sobre la entidad de usuario se almacena en forma de atributos, como nombre, apellidos, conexión de usuario y contraseña. Puede crear atributos personalizados mediante OCI. Empecemos por definir un atributo de usuario personalizado, que servirá para almacenar los roles asignados a cada usuario dentro del dominio.
  1. Vaya a: IdentidadDominiosValor predeterminado. Haga clic en el separador Gestión de esquemas y seleccione Atributos de usuario.
  2. Haga clic en Agregar atributo en Atributos de usuario.



  3. En el cuadro de diálogo Add Attributes (Agregar atributos), especifique los siguientes campos:
    • Nombre mostrado: ORDS RBAC
    • Name:rbac_ords
    • Descripción:Control de acceso basado en roles para ORDS
    • Tipo de datos: Matriz de cadenas

    Puede dejar el resto de los campos en su estado por defecto.



    Haga clic en Agregar. Ha agregado el atributo personalizado.

  4. Para buscar el atributo recién agregado, escriba Personalizado en el campo de búsqueda. Verá el atributo ORDS RBAC en la lista.



    Haga clic en Editar atributo.

  5. Copie y anote el valor de FQN (nombre completo).



    En este ejemplo, FQN es urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords.

Asignar rol personalizado

Una vez que haya creado un atributo de usuario personalizado, puede continuar asignando roles personalizados en ese campo de atributo.
  1. Vaya a: IdentidadDominiosValor predeterminado. Haga clic en el separador Gestión de usuarios y seleccione su nombre de usuario en la lista de usuarios mostrada.



    Haga clic en Editar usuario. Desplácese hacia abajo hasta el campo Otra información e introduzca SQL Developer, SODA Developer en ORDS RBAC.

    Para obtener más información sobre los roles de ORDS, consulte este capítulo sobre Acerca de los roles de usuario de Oracle REST Data Services.



    Después de agregar los roles, haga clic en Guardar cambios.

Crear una aplicación integrada de dominio

Desarrollaremos una aplicación integrada dentro del dominio que emitirá un token de JWT al conectarse.

  1. Vaya a: IdentidadDominiosValor predeterminado. Haga clic en el separador Aplicaciones integradas y seleccione Agregar aplicación.
  2. Haga clic en Aplicación confidencial y seleccione Iniciar flujo de trabajo.
  3. En el cuadro de diálogo Agregar aplicación confidencial, especifique los siguientes campos:
    • Nombre: introduzca el nombre de la aplicación confidencial. Por ejemplo, RBAC de complemento de hoja de cálculo.
    • Descripción: introduzca la descripción. Por ejemplo, Aplicación integrada para el control de acceso basado en rol de complemento de hoja de cálculo.



    Haga clic en Enviar.

    Verá la página de la aplicación Spreadsheet-Addin RBAC recién agregada.

  4. Haga clic en Editar configuración de OAuth en el separador Configuración de OAuth de la página RBAC de complemento de hoja de cálculo.



  5. En Configuración del Servidor de Recursos, seleccione Configurar esta aplicación como un servidor de recursos ahora.
  6. En Configurar API de aplicación que deben estar protegidas por OAuth, seleccione 3600 como caducidad del token de acceso (segundos).
  7. En el campo Público principal, introduzca ssaddin/.
  8. Haga clic en Agregar ámbitos y agregue rbac Ámbito.



  9. En Configuración de cliente, especifique los siguientes campos:
    • Seleccione Configurar esta aplicación como un cliente ahora.
    • Seleccione Implícito en Tipos de permiso permitidos.
    • Introduzca el siguiente valor en el campo URL de redirección: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
    • Introduzca el siguiente valor en el campo URL posterior a la desconexión: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html



    Haga clic en Enviar.
    Nota

    Asegúrese de activar la aplicación.

Definir reclamación personalizada

Para incluir roles de usuario en el JWT, debemos asignar el atributo personalizado establecido en la primera sección al JWT mediante una reclamación personalizada.

Para lograr esto, necesitamos crear una aplicación integrada temporal adicional y adjuntar la reclamación personalizada a través de ella.

Crear aplicación integrada de dominio de identidad

Creará una aplicación integrada temporal adicional:
  1. Vaya a: IdentidadDominiosValor predeterminado.
  2. Haga clic en el separador Aplicaciones integradas y seleccione Agregar aplicación.
  3. Haga clic en Aplicación confidencial y seleccione Iniciar flujo de trabajo.
    • Introduzca el nombre de la aplicación: Aplicación integrada de dominio de identidad
    • Escriba Descripción: Esta es una aplicación integrada de dominio.

    Haga clic en Enviar.

  4. En la página Aplicación integrada de dominio de identidad, seleccione el separador Configuración de OAuth.
  5. Haga clic en Editar configuración OAuth en la configuración del servidor de recursos. En el cuadro de diálogo Editar configuración OAuth, especifique los siguientes campos:

Crear nueva reclamación para el token de JWT

Necesitamos CLIENT ID, CLIENT SECRET y DOMAIN URL para recuperar un nuevo token de acceso para la aplicación de administrador de dominio de identidad.

Tenemos los valores CLIENT ID y CLIENT SECRET de la aplicación integrada de dominio que ha creado en el paso anterior.

DOMAIN URL se puede encontrar en la página de dominio bajo Información de dominio.



Ejecute el siguiente comando y sustituya los valores (CLIENT ID), (CLIENT SECRET) y (DOMAIN URL) por los valores.

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)
En este ejemplo, utilizará los siguientes valores:
  • Client ID: 123a1234e1234567aa12345a1abcdefg1
  • Client Secret: idcscs-12a1a123-a123-1234-1234-e1a05aabc123
  • Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
Ejecute el siguiente código en el shell de Bash y sustituya los valores de marcador de posición según corresponda:
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)
 
Para verificar que ha recuperado correctamente el token, ejecute el siguiente comando y revise el token mostrado.
echo $ACCESS_TOKEN

La siguiente imagen muestra cómo aparecen los comandos anteriores en el shell de Bash.



Muestra la salida que consta de varias líneas (más de 10) que contienen caracteres alfanuméricos.

Ejecute el siguiente comando con (ROLE CLAIM NAME) como ssaddin.role y (MODIFIED FQN) como urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords:
Nota

Utilice FQN del paso 1 y sustituya el ":" final por un ".".

Por ejemplo, FQN del paso 1 es:

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

Por lo tanto, MODIFIED FQN debe ser:

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

Sustituya Domain URL por su valor real en el código anterior.

Verá lo siguiente como salida:HTTP/1.1 201 Created.

Activación de la conexión de RBAC IAM para el esquema de Autonomous Database

Las siguientes instrucciones permiten a ORDS validar tokens portadores de JWT y otorgar acceso a recursos protegidos.
  1. En la hoja de trabajo de SQL, en el separador Navigator, seleccione ORDS_METADATA en la lista desplegable Schema.
  2. Seleccione Packages en la lista desplegable Tipo de objeto.
  3. Escriba ORDS_SECURITY en el campo Search. La función de búsqueda recupera todas las entradas que empiezan por ORDS_SECURITY.
  4. Amplíe el paquete ORDS_SECURITY.



  5. Haga clic con el botón derecho en CREATE_JWT_PROFILE y haga clic en RUN. Esto abre un cuadro de diálogo RUN CODE.
    En el cuadro de diálogo Run Code… (Ejecutar código), especifique los siguientes valores de campo:
    • P_ISSUER: https://identity.oraclecloud.com/. Este campo debe ser un valor no nulo y debe rellenarse con una sola coma.
    • P_AUDIENCE-ssaddin/. Este campo debe ser un valor no nulo.
    • P_JWK_URL: agregue URL de DOMAIN con /admin/v1/SigningCert/jwk. Debe ser un valor no nulo que empiece por https:// e identifique la clave de verificación pública proporcionada por el servidor de autorización en un formato de clave web JSON (JWK).

      Puede ver la URL de dominio en el separador Información de dominio presente en el menú de navegación Dominios del menú de navegación Identidad y seguridad de la consola de OCI.

    • P_DESCRIPTION: introduzca la descripción de este perfil. Por ejemplo, "Confluencia de demostración de RBAC JWT".
    • P_ALLOWED_AGE-"0"
    • P_ALLOWED_SKEW-"0"
    • P_ROLE_CLAIM_NAME: "ssaddin.role"

    Haga clic en Insertar código en la hoja de trabajo.



    Ejecute el procedimiento.



    Verá el "procedimiento PL/SQL completado correctamente" en el panel de salida.

Crear un archivo de conexión

  1. Haga clic en la opción Agregar de la cabecera del panel Conexiones para agregar una conexión. Se abre el cuadro de diálogo Agregar nueva conexión.

  2. Especifique los siguientes campos en el cuadro de diálogo Agregar nueva conexión:
    • Nombre de conexión: introduzca el nombre de la conexión.
    • URL de Autonomous Database: introduzca la URL de la instancia de Autonomous Database a la que desea conectarse. Copie toda la URL de la interfaz de usuario web de Autonomous Database. Por ejemplo, introduzca o copie el siguiente enlace "https://<nombrehost>-<nombredatabas>.adb.<región>.oraclecloudapps.com/" para conectarse a la base de datos.
    • Nombre de esquema: introduzca el mismo esquema que utiliza para activar la conexión de IAM para el esquema de Autonomous Database.
    • Seleccione el tipo: OCI IAM
    • URL de dominio: introduzca la URL de dominio en el separador de información de dominio.
    • Seleccione el tipo de IAM RBAC.
    • Ámbito de IAM: ssaddin/rbac



Después de crear la conexión, puede compartirla con otros usuarios de este dominio.