Configuración manual del control de acceso basado En Roles

Puede configurar el control de acceso basado en roles (RBAC) con reclamaciones personalizadas de token web JSON (JWT) en Oracle Cloud Infrastructure.

Para crear una aplicación integrada de dominio que permita reclamaciones personalizadas de RBAC con JWT: Cada paso se explica con más detalle en las siguientes secciones.
Nota

En este documento se utiliza el dominio Default de Oracle Cloud Infrastructure con fines explicativos.

Creación de atributos personalizados para usuarios

Una entidad de usuario almacena sus propiedades y otra información como atributos. Por ejemplo, nombre, apellidos, inicio de sesión de usuario, contraseña, etc. Puede crear atributos personalizados en Oracle Cloud Infrastructure.

A continuación, se muestra un ejemplo para definir un atributo de usuario personalizado, que almacenará los roles asignados a cada usuario en el dominio.
  1. Haga clic en el menú de hamburguesa y vaya a Identidad y seguridad y seleccione Dominios. En Name (Nombre), haga clic en el dominio Default.
  2. Vaya al separador Gestión de esquemas y seleccione Atributos de usuario.

  3. Haga clic en Agregar atributo y especifique lo siguiente:
    • Nombre mostrado: ORDS RBAC
    • Nombre: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 un 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.

Creación de 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 de OAuth en Configuración del servidor de recursos. En el cuadro de diálogo Editar configuración de OAuth, especifique los siguientes campos:

Crear una nueva reclamación para 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.

Activar conexión de RBAC IAM para esquema de base de datos de IA autónoma

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 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.

Creación de un archivo de conexiones

  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 base de datos de IA autónoma a la que desea conectarse. Copie toda la URL de la interfaz de usuario web de la base de datos de IA autónoma. Por ejemplo, introduzca o copie el siguiente enlace "https://<hostname>-<databasename>.adb.<region>.oraclecloudapps.com/" para conectarse a la base de datos.
    • Nombre de esquema: introduzca el mismo esquema que utiliza para Activar 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.