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.
- Creación de atributos personalizados para usuarios
- Asignar rol personalizado
- Crear una aplicación integrada de dominio
- Definir la reclamación personalizada
- Activar conexión de IAM para esquema de Autonomous Database
- Crear un archivo de conexión
En este capítulo, utilizaremos el dominio
Default
, pero puede seleccionar cualquier dominio de su preferencia.
Creación de atributos personalizados para usuarios
- Vaya a: Identidad → Dominios → Valor predeterminado. Haga clic en el separador Gestión de esquemas y seleccione Atributos de usuario.
- Haga clic en Agregar atributo en Atributos de usuario.
- 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.
- 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.
- 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
- Vaya a: Identidad → Dominios → Valor 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.
- Vaya a: Identidad → Dominios → Valor predeterminado. Haga clic en el separador Aplicaciones integradas y seleccione Agregar aplicación.
- Haga clic en Aplicación confidencial y seleccione Iniciar flujo de trabajo.
- 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.
- 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.
- En Configuración del Servidor de Recursos, seleccione Configurar esta aplicación como un servidor de recursos ahora.
- En Configurar API de aplicación que deben estar protegidas por OAuth, seleccione 3600 como caducidad del token de acceso (segundos).
- En el campo Público principal, introduzca ssaddin/.
- Haga clic en Agregar ámbitos y agregue rbac Ámbito.
- 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
- Vaya a: Identidad → Dominios → Valor predeterminado.
- Haga clic en el separador Aplicaciones integradas y seleccione Agregar aplicación.
- 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.
- En la página Aplicación integrada de dominio de identidad, seleccione el separador Configuración de OAuth.
- 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:
- En Configuración del cliente, seleccione el valor por defectoConfigurar esta aplicación como un cliente ahora.
- En Autorización, seleccione Credenciales de cliente. Mantenga el resto de las configuraciones en su estado por defecto.
- Seleccione Agregar Roles de Aplicación.
- En el cuadro de diálogo Agregar roles de aplicación, haga clic en Administrador de dominio de identidady seleccione Agregar.
- Después de agregar roles de aplicación, haga clic en Enviar.
- Activar la aplicación.
Nota
Asegúrese de anotar el ID de cliente y el secreto de cliente en la sección Información general de la aplicación integrada.
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)
Client ID
: 123a1234e1234567aa12345a1abcdefg1Client Secret
: idcscs-12a1a123-a123-1234-1234-e1a05aabc123Domain URL
: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
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)
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.
(ROLE CLAIM NAME)
como ssaddin.role y (MODIFIED FQN)
como urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords:
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"
]
}'
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
- En la hoja de trabajo de SQL, en el separador Navigator, seleccione
ORDS_METADATA
en la lista desplegable Schema. - Seleccione
Packages
en la lista desplegable Tipo de objeto. - Escriba
ORDS_SECURITY
en el campo Search. La función de búsqueda recupera todas las entradas que empiezan porORDS_SECURITY
. - Amplíe el paquete
ORDS_SECURITY
. - Haga clic con el botón derecho en
CREATE_JWT_PROFILE
y haga clic enRUN
. Esto abre un cuadro de diálogoRUN 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
-
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.
- 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.
Tema principal: Herramienta de análisis de datos