Creación de tablas federadas mediante hiperenlaces de tablas mediante la definición de ámbito
Puede crear una tabla federada a través de un hiperenlace de tabla de base de datos de IA autónoma. Una tabla federada es una tabla externa definida en los hipervínculos de tabla. Permite la agregación de datos de varias instancias de bases de datos de IA autónomas.
Aunque una tabla federada utiliza el mismo mecanismo de hiperenlace que una tabla externa, el flujo de trabajo de creación es diferente. Para las tablas externas, el proveedor crea y comparte hipervínculos de tabla, y cada consumidor utiliza esos hipervínculos para definir tablas externas. Para las tablas federadas, el consumidor inicia la creación de la tabla y los hipervínculos de tabla se crean automáticamente en la base de datos del proveedor, siempre que el consumidor esté dentro del ámbito definido por el proveedor.
Como Proveedor, puede definir ámbitos en la base de datos para otorgar a los consumidores el privilegio de crear automáticamente hipervínculos de tabla. Los consumidores autorizados dentro de estos ámbitos pueden crear tablas federadas y consultar datos de varias bases de datos de origen sin intercambio manual de enlaces.
- Uso compartido de datos simplificado: los consumidores ahora pueden iniciar la creación de tablas externas por separado y pueden crear hiperenlaces de tablas cuando pertenecen a un ámbito autorizado.
- Seguridad mejorada: elimina los métodos de distribución de hipervínculo de tabla (URL) no seguros.
- Federación de datos: los consumidores pueden agregar datos de varias bases de datos de proveedores a través de tablas federadas.
En las siguientes secciones se describe el flujo de trabajo detallado sobre cómo las bases de datos autónomas de proveedor y consumidor crean tablas federadas juntas mediante la definición de ámbitos en un caso de uso práctico de ejemplo. Este flujo de trabajo y los ejemplos de código asociados se pueden modificar e implantar según sus necesidades.
- Flujo de trabajo para crear tablas federadas
El siguiente flujo de trabajo tiene distintas responsabilidades para el proveedor Autonomous AI Database y la base de datos de IA autónoma del consumidor. - Solución de problemas de escenarios
En esta sección, se proporcionan instrucciones sobre los tipos de fallos que se pueden producir y cómo solucionar los problemas.
Flujo de trabajo para crear tablas federadas
El siguiente flujo de trabajo tiene distintas responsabilidades para el proveedor Autonomous AI Database y la base de datos de IA autónoma del consumidor.
Desde el lado del proveedor, el primer paso es definir un ámbito de creación que especifique qué bases de datos de IA autónomas de consumidores pueden crear de forma remota hipervínculos de tabla en el proveedor. El ámbito se puede definir en el nivel de esquema u objeto.
A continuación, el DBA del proveedor controla quién puede gestionar ámbitos llamando a DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para los usuarios seleccionados. Estos usuarios con privilegios pueden utilizar DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE, UPDATE_CREATION_SCOPE y UNREGISTER_CREATION_SCOPE para registrar, cambiar o eliminar ámbitos para tablas o esquemas específicos, y LIST_CREATION_SCOPES para revisar la configuración actual. Cuando un consumidor solicita posteriormente un hiperenlace, el proveedor comprueba que la base de datos de IA autónoma del consumidor solicitante coincide con el ámbito registrado antes de permitir la generación de URL, lo que garantiza que solo los consumidores autorizados puedan crear hiperenlaces a los datos del proveedor.
Desde la perspectiva del consumidor, el flujo de trabajo se inicia una vez que el proveedor ha definido ámbitos que incluyen la base de datos del consumidor. El DBA del consumidor otorga a los usuarios específicos el privilegio de crear tablas federadas a través de los datos del proveedor llamando a DBMS_DATA_ACCESS_ADMIN.GRANT_READ.
A continuación, un consumidor puede llamar a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear hiperenlaces de tabla en la base de datos del proveedor en nombre del consumidor y la tabla federada resultante en el consumidor puede consultar los datos del productor como si se tratara de una tabla externa local.
Cuando el acceso federado ya no es necesario, el consumidor se limpia llamando a DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE, que elimina el objeto de tabla federada en el consumidor mientras deja intactos los ámbitos del proveedor.
ADMIN(proveedor) otorga el privilegio de registro del ámbito al propietario de los datos mediante el procedimientoDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER.BEGIN DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER( username => 'DATA_OWNER', scope => 'MY$COMPARTMENT' ); END; /- Como
ADMIN, otorgue privilegios de ejecución al usuario propietario de datos (DATA_OWNER).grant execute on DBMS_DATA_ACCESS_SCOPE to DATA_OWNER; - El propietario de los datos registra el ámbito de creación en el objeto o esquema compartido en la base de datos de IA autónoma del proveedor mediante el procedimiento
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE. Esto autoriza a las bases de datos de IA autónomas del consumidor en el mismo compartimento a crear hiperenlaces de tabla de forma remota.BEGIN DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE( schema_name => 'DATA_OWNER', schema_object_name => 'SALES_DATA', scope => 'MY$COMPARTMENT' ); END; / -
El consumidor
ADMINotorga el privilegio de lectura al analista de negocio mediante el procedimientoDBMS_DATA_ACCESS_ADMIN.GRANT_READ.{{BEGIN DBMS_DATA_ACCESS_ADMIN.GRANT_READ( username => 'BI_ANALYST', remote_schema_name => 'DATA_OWNER', remote_schema_object_name=> 'SALES_DATA' ); END; /}}Esto garantiza que el analista pueda iniciar la creación de tablas federadas.
- El consumidor
ADMINotorga privilegios de ejecución al usuario bi_analyst.grant execute on DBMS_DATA_ACCESS to bi_analyst; -
El analista de negocio crea una tabla externa federada en la base de datos de IA autónoma del consumidor mediante el procedimiento
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE. Esto genera el hiperenlace Tabla automáticamente si el ámbito coincide en el que no es necesaria ninguna intervención del profesional asistencial.BEGIN DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE( table_name => 'DEPT_SALES_XT', remote_schema_name => 'DATA_OWNER', remote_schema_object_name => 'SALES_DATA', db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]' ); END; /Nota
El OCID de la base de datos (db_ocid) debe estar en mayúsculas. - El analista consulta la tabla externa para los análisis de departamento:
SELECT * FROM DEPT_SALES_XT WHERE region = 'West';
Los ejemplos de código anteriores se pueden modificar e implantar según sus requisitos.
Para obtener más información sobre las funciones y los parámetros anteriores, consulte DBMS_DATA_ACCESS_SCOPE Package, DBMS_DATA_ACCESS_ADMIN Package y DBMS_DATA_ACCESS Package.
| Operación | Descripción | Usuario que ejecuta esta operación |
|---|---|---|
| Definir ámbito de creación | Define qué bases de datos pueden crear de forma remota hiperenlaces de tablas en una instancia de base de datos de IA autónoma de proveedor. Consulte Ámbito de creación para obtener más información. | Proveedor |
| Otorgar Registrar |
Otorga a los usuarios de una instancia de base de datos de IA autónoma de proveedor permiso para registrar o actualizar el ámbito. Consulte Grant Register para obtener más información. |
Proveedor |
| Ámbito de creación de registro |
Define qué objetos de base de datos pueden tener enlaces de hipertexto de tabla creados en un ámbito de autorización especificado. Consulte Registro del ámbito de creación para obtener más información. |
Proveedor |
| Actualizar ámbito de creación | Modifica el ámbito de creación existente. Consulte Actualizar ámbito de creación para obtener más información. | Proveedor |
| Anular registro de ámbito de creación | Elimina la configuración de ámbito de creación registrada anteriormente para un esquema, un único objeto o una lista de objetos. Consulte Anulación del registro del ámbito de creación para obtener más información. | Proveedor |
| Recuperar ámbito de creación | Consulta y recupera los ámbitos de creación registrados para los esquemas u objetos especificados. Consulte Lista de ámbitos de creación para obtener más información. | Proveedor |
| Crear tabla federada | Crea una tabla federada. Consulte Creación de tablas federadas para obtener más información. | Consumidor |
| Conceder lectura | Otorga privilegios de lectura a un usuario consumidor para esquemas u objetos remotos, lo que permite la creación de tablas federadas. Consulte Otorgar lectura para obtener más información. | Consumidor |
| Revocar lectura | Revoca un privilegio de lectura otorgado anteriormente para crear una tabla federada. Consulte Revocar lectura para obtener más información. | Consumidor |
| Borrar tabla federada | Elimina las tablas federadas especificadas de la base de datos. Consulte Borrar tabla federada para obtener más información. | Consumidor |
- Ámbito de creación
Un ámbito de creación en una base de datos de proveedor determina qué instancias de base de datos de IA autónoma de consumidor tienen permiso para crear de forma remota hiperenlaces de tabla en la base de datos de proveedor. - Registro de otorgamiento
ADMIN(oPDB_DBA) en la base de datos de IA autónoma del proveedor utilizaDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTERpara decidir qué usuarios locales pueden gestionar los ámbitos de creación. - Registrar Ámbito de Creación
Un proveedor llama aDBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPEpara registrar el ámbito permitido para tablas específicas o esquemas completos a fin de crear hipervínculos de tabla en esos objetos. - Actualizar ámbito de creación
Si un proveedor necesita cambiar el acceso, el mismo usuario u otro usuario autorizado llama aUPDATE_CREATION_SCOPEpara ampliar, reducir o ajustar de otro modo qué bases de datos de IA autónomas de consumidor pueden crear hiperenlaces para objetos de esquema concretos. - Anulación del registro del ámbito de creación
Cuando un proveedor desea revocar la capacidad de creación remota por completo (para una tabla, una lista de tablas o un esquema), el proveedor llama aUNREGISTER_CREATION_SCOPE. Esto elimina el ámbito registrado y evita que las bases de datos de consumidores creen nuevos hipervínculos de tabla para esos objetos. - Recuperación de ámbitos de creación
En cualquier momento, un usuario autorizado puede llamar aLIST_CREATION_SCOPESpara recuperar las definiciones de ámbito actuales. - Otorgar lectura
En la base de datos de IA autónoma del consumidor,ADMIN(oPDB_DBA) utilizaDBMS_DATA_ACCESS_ADMIN.GRANT_READpara otorgar a usuarios específicos el derecho de crear tablas federadas en esquemas u objetos del proveedor remoto. - Revocación de Lectura
El procedimientoREVOKE_READelimina el privilegio de un usuario para crear tablas federadas a través de un esquema remoto u objeto de esquema especificado en la base de datos del proveedor. - Crear tabla federada
Un usuario consumidor al que se le han otorgado privilegios de lectura llama aDBMS_DATA_ACCESS.CREATE_FEDERATED_TABLEpara crear una tabla federada a través de la tabla o vista dentro del ámbito del proveedor. - Borrar tabla federada
Cuando el acceso federado ya no es necesario, el usuario consumidor llama aDBMS_DATA_ACCESS.DROP_FEDERATED_TABLEpara eliminar la tabla federada.
Ámbito de creación
Un ámbito de creación en una base de datos de proveedor determina qué instancias de base de datos de IA autónoma de consumidor tienen permiso para crear de forma remota hipervínculos de tabla en la base de datos de proveedor.
- Basado en arrendamiento (
MY$TENANCY): cualquier base de datos del mismo arrendamiento que la base de datos del proveedor. - Basado en compartimentos (
MY$COMPARTMENT): cualquier base de datos del mismo compartimento que la base de datos del proveedor. - Nivel de objeto: tablas o vistas específicas dentro de un esquema.
- Nivel de esquema: todos los objetos de un esquema específico.
Puede gestionar ámbitos de creación mediante el paquete DBMS_DATA_ACCESS_SCOPE, que proporciona procedimientos para registrar, anular el registro, actualizar y recuperar ámbitos. Consulte DBMS_DATA_ACCESS_SCOPE para obtener más información.
Tema principal: Flujo de trabajo para crear tablas federadas
Otorgar Registrar
ADMIN (o PDB_DBA) en la base de datos de IA autónoma del proveedor utiliza DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para decidir qué usuarios locales pueden gestionar ámbitos de creación.
Solo estos usuarios con privilegios pueden registrar, actualizar o anular el registro de ámbitos, lo que evita la exposición no controlada de las tablas de proveedores.
Ejemplo
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
username => 'ANALYTICS_ADMIN',
scope => 'MY$COMPARTMENT'
);
END;
/En el ejemplo anterior se otorga al usuario ANALYTICS_ADMIN permiso para registrar juegos de datos en el ámbito MY$COMPARTMENT.
Consulte GRANT_REGISTER para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Ámbito de creación de registro
Un proveedor llama a DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE para registrar el ámbito permitido para tablas específicas o esquemas completos a fin de crear hipervínculos de tabla en esos objetos.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'NULL',
scope => 'MY$COMPARTMENT'
);
END;
/En este ejemplo, se registra un ámbito de acceso a datos en el nivel de esquema para el esquema ANALYTICS, asociándolo al compartimento MY$COMPARTMENT.
Ejemplo: registro de ámbito de nivel de objeto
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$TENANCY'
);
END;
/En este ejemplo se registra un ámbito de acceso a datos más específico para un objeto específico SALES_DATA dentro del esquema ANALYTICS, enlazándolo al arrendamiento MY$TENANCY. A diferencia de la versión de nivel de esquema, schema_object_name limita la aplicación a esta tabla, lo que permite el control granular sobre los permisos de creación.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_list => '["SALES_DATA", "CUSTOMER_DATA", "PRODUCT_DATA"]',
scope => 'MY$COMPARTMENT'
);
END;
/Este procedimiento asocia los objetos de esquema mostrados: SALES_DATA, CUSTOMER_DATA y PRODUCT_DATA al ámbito MY$COMPARTMENT, restringiendo su creación o acceso a las entidades de ese compartimento.
Consulte Register Creation Scope para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Actualizar ámbito de creación
Si un proveedor necesita cambiar el acceso, el mismo usuario u otro usuario autorizado llama a UPDATE_CREATION_SCOPE para ampliar, reducir o ajustar de otro modo qué bases de datos de IA autónomas de consumidores pueden crear hiperenlaces para objetos de esquema concretos.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UPDATE_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$COMPARTMENT'
);
END;
/En este ejemplo, se actualiza el ámbito de creación de la tabla SALES_DATA en el esquema ANALYTICS a MY$COMPARTMENT.
Consulte Update Creation Scope para obtener más información sobre la sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Anular registro de ámbito de creación
Cuando un proveedor desea revocar completamente la capacidad de creación remota (para una tabla, una lista de tablas o un esquema), el proveedor llama a UNREGISTER_CREATION_SCOPE. Esto elimina el ámbito registrado y evita que las bases de datos de consumidores creen nuevos hipervínculos de tabla para esos objetos.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UNREGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA'
);
END;
/Este bloque de ejemplo elimina un ámbito de creación registrado anteriormente para SALES_DATA en el esquema ANALYTICS, de modo que los nuevos objetos creados en ese ámbito ya no se rigen por el acceso a los datos que controla el ámbito aplicado.
Consulte Unregister Creation Scope para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Recuperar ámbitos de creación
En cualquier momento, un usuario autorizado puede llamar a LIST_CREATION_SCOPES para recuperar las definiciones de ámbito actuales.
DECLARE
l_result CLOB;
BEGIN
DBMS_DATA_ACCESS_SCOPE.LIST_CREATION_SCOPES(
schema_name => 'ANALYTICS',
result => l_result
);
DBMS_OUTPUT.PUT_LINE(l_result);
END;
/Consulte Retrieve Creation Scope para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Conceder lectura
En la base de datos de IA autónoma del consumidor, ADMIN (o PDB_DBA) utiliza DBMS_DATA_ACCESS_ADMIN.GRANT_READ para otorgar a usuarios específicos el derecho de crear tablas federadas en esquemas u objetos de proveedores remotos.
Ejemplo: Otorgamiento de acceso a un objeto remoto específico
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/En este ejemplo, se otorga al usuario BI_ANALYST acceso de lectura al objeto SALES_DATA remoto específico en el esquema ANALYTICS de un proveedor de datos externo.
Consulte Otorgar lectura para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Revocar lectura
El procedimiento REVOKE_READ elimina el privilegio de un usuario para crear tablas federadas a través de un esquema remoto u objeto de esquema especificado en la base de datos del proveedor.
Si omite el nombre del objeto remoto, revoca el acceso a la tabla federada de ese usuario para todos los objetos del esquema remoto proporcionado.
Ejemplo
BEGIN
DBMS_DATA_ACCESS_ADMIN.REVOKE_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Consulte Revoke Read para obtener referencia sobre la sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Crear tabla federada
Un usuario consumidor al que se le han otorgado privilegios de lectura llama a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear una tabla federada en la tabla o vista dentro del ámbito del proveedor.
El procedimiento utiliza OCID de base de datos e información de región para establecer hipervínculos de tabla para que el consumidor pueda consultar datos remotos como si se tratara de una tabla externa local.
Requisitos
- Se deben otorgar privilegios de lectura al usuario mediante el procedimiento
GRANT_READ. - El usuario debe existir en las bases de datos de consumidor y proveedor con los privilegios necesarios.
- La base de datos de consumidores debe pertenecer al ámbito de creación del proveedor.
- El proveedor debe tener un ámbito de creación registrado para los objetos de destino.
- Conectividad de red establecida entre las bases de datos de consumidores y proveedores.
-
Cuando las instancias de Autonomous AI Database del proveedor y el consumidor están en diferentes regiones de OCI, aún puede crear tablas federadas mediante hiperenlaces de tablas de ámbito de proveedor.
-
Esto significa que, incluso si el origen de datos (proveedor) está en, por ejemplo, la región Este de EE. UU. y la base de datos de consumidores está en Europa Occidental, puede configurar una tabla federada a través de hiperenlaces de tabla.
Ejemplo: proveedor único
BEGIN
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE(
table_name => 'SALES_FED',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA',
db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]'
);
END;
/En el ejemplo anterior, un consumidor llama a DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para crear una tabla federada local que enlace a la tabla o vista de un proveedor remoto (por ejemplo, SALES_DATA en el esquema ANALYTICS), utilizando JSON db_ocids para especificar la base de datos de proveedor OCIDs y las regiones para realizar consultas sin problemas como si fueran locales.
SELECT
REGION,
PRODUCT_ID,
SUM(SALES_AMOUNT) as total_sales,
COUNT(*) as transaction_count
FROM SALES_FED
GROUP BY REGION, PRODUCT_ID
ORDER BY total_sales DESC;Consulte Crear tabla federada para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Borrar tabla federada
Cuando el acceso federado ya no es necesario, el usuario consumidor llama a DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE para eliminar la tabla federada.
Este procedimiento limpia el objeto del lado del consumidor y finaliza efectivamente esa ruta de acceso federada concreta, mientras que los ámbitos y privilegios del proveedor subyacente permanecen bajo control del proveedor.
BEGIN
DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE(
table_name => 'SALES_FED'
);
END;
/En el ejemplo anterior se borra la tabla SALES_FED.
Consulte Borrar tabla federada para obtener una referencia de sintaxis.
Tema principal: Flujo de trabajo para crear tablas federadas
Escenarios de solución de problemas
En esta sección, se proporcionan instrucciones sobre los tipos de fallos que se pueden producir y cómo solucionar los problemas.
-
La base de datos del consumidor no está incluida en el ámbito
Problema: el consumidor recibe un error de autorización al intentar crear tablas federadas.
Resolución
- Verifique que el ID de la base de datos de consumidores coincide con los criterios de ámbito del proveedor.
- Confirme que se han otorgado privilegios de lectura al usuario mediante el procedimiento
GRANT_READ. - El proveedor de comprobación ha registrado el ámbito de creación adecuado mediante el procedimiento
REGISTER_CREATION_SCOPE. - Confirme el estado de registro de la base de datos en la consola de OCI.
-
Fallo al crear la tabla federada
Problema: el procedimiento
CREATE_FEDERATED_TABLEfalla a pesar de que se cumplen los requisitos previos.Resolución- Verifique que el usuario existe en las bases de datos de consumidor y proveedor.
- Confirme que el usuario tiene la propiedad del objeto o el privilegio
GRANT OPTIONen objetos remotos. - Compruebe que el esquema remoto y los nombres de objeto son correctos (sensible a mayúsculas/minúsculas).
- Verifique que JSON
db_ocidscontiene códigos de región y OCID de base de datos válidos. - Asegúrese de que el ámbito del proveedor está activado y contiene la base de datos de consumidores.
-
Errores de autorización
Problema: los usuarios no pueden registrar ámbitos ni acceder a tablas federadas.
Resolución
- Verifique que se ha otorgado al usuario el privilegio
REGISTERmediante el procedimientoGRANT_REGISTER(del lado del proveedor). - Verifique que se ha otorgado al usuario el privilegio
READmedianteGRANT_READ(del lado del consumidor). - Para las operaciones de nivel de objeto, confirme que el usuario posee el objeto o tiene el privilegio de opción
GRANT. - Para las operaciones de nivel de esquema, confirme que el usuario es
ADMINo que tiene el rolPDB_DBA. - Compruebe el historial de revocaciones de privilegios para asegurarse de que los privilegios no se han revocado explícitamente.
- Verifique que se ha otorgado al usuario el privilegio