Permisos del servicio de datos SQL
Los usuarios se pueden conectar a un servicio de datos SQL a través de una herramienta de cliente JDBC u ODBC. Tras conectarse, los usuarios pueden ejecutar consultas SQL sobre tablas virtuales en un servicio de datos SQL o ejecutar un procedimiento almacenado virtual en un servicio de datos SQL. Los permisos controlan el nivel de acceso que un usuario tiene a un servicio de datos SQL.
Puede asignar permisos a usuarios y grupos para los objetos de datos SQL siguientes:
- •Servicio de datos SQL
- •Tabla virtual
- •Procedimiento almacenado virtual
Cuando asigne permisos en un objeto de servicio de datos SQL, el usuario o grupo heredará los mismos permisos para todos los objetos que pertenezcan al objeto de servicio de datos SQL. Por ejemplo, asigna a un usuario permiso de selección para un servicio de datos SQL. Dicho usuario hereda el permiso de selección para todas las tablas virtuales del servicio de datos SQL.
Puede denegar permisos a usuarios y grupos para algunos objetos de datos SQL. Al denegar permisos, configura excepciones para los permisos que los usuarios y grupos puede que ya tengan. Por ejemplo, no puede asignar permisos a una columna en una tabla virtual, pero puede denegar a un usuario que ejecute una instrucción SQL SELECT que incluya dicha columna.
Tipos de permiso del servicio de datos SQL
Puede asignar los siguientes permisos a usuarios y grupos:
- •Permiso de concesión. Los usuarios pueden conceder y revocar permisos para los objetos del servicio de datos de SQL con Administrator Tool o empleando el programa de línea de comandos infacmd.
- •Permiso de ejecución. Los usuarios pueden ejecutar en el servicio de datos de SQL los procedimientos virtuales almacenados mediante una herramienta cliente JDBC u ODBC.
- •Permiso de selección. Los usuarios pueden ejecutar instrucciones SQL SELECT en tablas virtuales del servicio de datos de SQL mediante una herramienta cliente JDBC u ODBC.
Algunos permisos no son aplicables a todos los objetos del servicio de datos SQL.
La tabla siguiente describe los permisos para cada objeto del servicio de datos SQL:
Objeto | Permiso de concesión | Permiso de ejecución | Permiso de selección |
---|
Servicio de datos SQL | Conceder y revocar permisos para el servicio de datos de SQL y todos objetos del mismo. | Ejecutar todos los procedimientos almacenados virtuales del servicio de datos SQL. | Ejecutar instrucciones SQL SELECT en todas las tablas virtuales del servicio de datos de SQL. |
Tabla virtual | Conceder y revocar permisos para la tabla virtual. | - | Ejecutar instrucciones SQL SELECT en la tabla virtual. |
Proceso almacenado virtual | Conceder y revocar permisos para el procedimiento almacenado virtual. | Ejecutar el procedimiento almacenado virtual. | - |
Asignación de permisos en un servicio de datos SQL
Cuando se asignan permisos en un objeto de servicio de datos SQL, se define el nivel de acceso que tiene un usuario o grupo al objeto.
1. En la ficha Administrar, seleccione la vista Servicios y nodos.
2. En el navegador, seleccione un servicio de integración de datos.
3. En el panel de contenido, seleccione la vista Aplicaciones.
4. Seleccione el objeto de servicio de datos SQL.
5. En el panel de detalles, seleccione la vista Permisos de grupo o Permisos de usuario.
6. Haga clic en el botón Asignar permiso.
El cuadro de diálogo Asignar permisos muestra todos los usuarios o grupos que no tienen permisos en el objeto de servicio de datos SQL.
7. Introduzca las condiciones de filtro para buscar usuarios y grupos y haga clic en el botón Filtrar.
8. Seleccione un usuario o un grupo y haga clic en Siguiente.
9. Seleccione Permitir para cada tipo de permiso que desee asignar.
10. Haga clic en Finalizar.
Visualización de detalles de permisos en un servicio de datos SQL
Cuando visualice los detalles de un permiso, puede ver el origen de los permisos efectivos.
1. En la ficha Administrar, seleccione la vista Servicios y nodos.
2. En el navegador, seleccione un servicio de integración de datos.
3. En el panel de contenido, seleccione la vista Aplicaciones.
4. Seleccione el objeto de servicio de datos SQL.
5. En el panel de detalles, seleccione la vista Permisos de grupo o Permisos de usuario.
6. Introduzca las condiciones de filtro para buscar usuarios y grupos y haga clic en el botón Filtrar.
7. Seleccione un usuario o grupo y haga clic en el botón Ver detalles del permiso.
Se abre el cuadro de diálogo Detalles del permiso. El cuadro de diálogo muestra los permisos directos asignados al usuario o grupo, los permisos directos asignados a los grupos primarios y los permisos heredados de los objetos primarios. Los detalles del permiso muestran además si el usuario o grupo tiene asignada la función de administrador que omite la comprobación del permiso.
8. Haga clic en Cerrar
9. o haga clic en Editar permisos para editar los permisos directos.
Edición de permisos en un servicio de datos SQL
Puede editar los permisos directos para un usuario o grupo en un servicio de datos SQL. No puede revocar permisos heredados ni sus propios permisos.
Nota: Si revoca un permiso directo en un objeto, el usuario o grupo aún podrá heredar el permiso de un grupo u objeto primario.
1. En la ficha Administrar, seleccione la vista Servicios y nodos.
2. En el navegador, seleccione un servicio de integración de datos.
3. En el panel de contenido, seleccione la vista Aplicaciones.
4. Seleccione el objeto de servicio de datos SQL.
5. En el panel de detalles, seleccione la vista Permisos de grupo o Permisos de usuario.
6. Introduzca las condiciones de filtro para buscar usuarios y grupos y haga clic en el botón Filtrar.
7. Seleccione un usuario o grupo y haga clic en el botón Editar permisos directos.
Aparecerá el cuadro de diálogo Editar permisos directos.
8. Elija si desea permitir o revocar permisos.
- - Seleccione Permitir para asignar un permiso.
- - Desactive la opción Permitir para revocar un solo permiso.
- - Seleccione Revocar para revocar todos los permisos.
Para ver si el permiso se ha asignado directamente o es heredado, haga clic en Ver detalles del permiso.
9. Haga clic en Aceptar.
Denegación de permisos en un servicio de datos SQL
Puede denegar explícitamente los permisos en algunos objetos de servicio de datos SQL. Cuando se deniega un permiso en un objeto en un servicio de datos SQL, se está aplicando una excepción al permiso efectivo.
Para denegar permisos, se usa uno de los siguientes comandos de infacmd:
- •infacmd sql SetStoredProcedurePermissions. Deniega los permisos de ejecución o concesión en el nivel de procedimiento almacenado.
- •infacmd sql SetTablePermissions. Deniega los permisos de selección y concesión en el nivel de tabla virtual.
- •infacmd sql SetColumnPermissions. Deniega el permiso de selección en el nivel de columna.
Cada comando tiene opciones para aplicar permisos (-ap) y denegar permisos (-dp). El comando SetColumnPermissions no incluye la opción de aplicar permisos.
Nota: No se pueden denegar permisos desde Administrator Tool.
El servicio de integración de datos comprueba los permisos antes de ejecutar procedimientos almacenados y consultas SQL en la base de datos virtual. El servicio de integración de datos valida los permisos para los usuarios o grupos a partir del nivel de servicio de datos SQL. Cuando los permisos se aplican a un objeto primario en un servicio de datos SQL, los objetos secundarios heredan el permiso. El servicio de integración de datos comprueba si hay permisos denegados en el nivel de columna.
Seguridad de nivel de columna
Un administrador puede denegar el acceso a las columnas de una tabla virtual de un objeto de datos SQL. El administrador puede configurar el comportamiento del servicio de integración de datos para que las consultas se realicen en una columna restringida.
Cuando el usuario consulta una columna para la que no tiene permisos, puede ocurrir lo siguiente:
- •La consulta devuelve un valor de sustitución en lugar de los datos. La consulta devuelve un valor de sustitución en cada fila que devuelve. El valor de sustitución reemplaza el valor de la columna a través de la consulta. Si la consulta incluye filtros o uniones, el valor de sustitución del resultado aparece en los resultados.
- •La consulta falla por un error de permisos no suficientes.
Para obtener más información sobre la configuración de la seguridad para los servicios de datos SQL, consulte el artículo "How to Configure Security for SQL Data Services" en la biblioteca de procedimientos de Informatica (Informatica How-To Library):
http://communities.informatica.com/docs/DOC-4507.
Columnas restringidas
Cuando configure la seguridad a nivel de columna, debe establecer una opción de columna que determine qué ocurrirá si un usuario selecciona la columna restringida en una consulta. Los datos restringidos se pueden sustituir con un valor predeterminado. Otra posibilidad es hacer que la consulte falle si el usuario selecciona la columna restringida.
Por ejemplo, un administrador deniega al usuario acceso a la columna de salario de la tabla Empleado. El administrador configura un valor sustituto de 100.000 para la columna de salario. Cuando el usuario selecciona la columna de salario en una consulta SQL, el servicio de integración de datos devuelve 100.000 como salario en todas las filas.
Ejecute el comando infacmd sql UpdateColumnOptions para configurar las opciones de columna. No puede establecer opciones de columna desde Administrator Tool.
Cuando ejecute infacmd sql UpdateColumnOptions, especifique las siguientes opciones:
- ColumnOptions.DenyWith=opción
- Determina si se sustituye el valor de la columna restringida o si se hace fallar a la consulta. Si sustituye el valor de la columna, puede hacerlo por NULL o por un valor constante. Especifique una de las siguientes opciones:
- - ERROR. Hace fallar a la consulta y devuelve un error cuando una consulta SQL selecciona una columna restringida.
- - NULL. Devuelve valores nulos para una columna restringida en cada fila.
- - VALUE. Devuelve un valor constante en lugar de una columna restringida en cada fila. Configure el valor constante en la opción ColumnOptions.InsufficientPermissionValue.
- ColumnOptions.InsufficientPermissionValue=valor
- Sustituye el valor de la columna restringida con una constante. El valor predeterminado es una cadena vacía. Si el servicio de integración de datos sustituye la columna con una cadena vacía, pero la columna incluye números o fechas, la consulta devolverá errores. Si no configura un valor para la opción DenyWith, el servicio de integración de datos ignora la opción InsufficientPermissionValue.
Para configurar un valor de sustitución para una columna, especifique un comando con la siguiente sintaxis:
infacmd sql UpdateColumnOptions -dn empDomain -sn DISService -un Administrator -pd Adminpass -sqlds employee_APP.employees_SQL -t Employee -c Salary -o ColumnOptions.DenyWith=VALUE ColumnOptions.InsufficientPermissionValue=100000
Si no configura ninguna opción para una columna restringida, la opción predeterminada no hará fallar la consulta. En tal caso, se ejecutará la consulta y el servicio de integración de datos sustituirá la columna con NULL.
Cómo añadir seguridad a nivel de columna
Configure la seguridad a nivel de columna con el comando infacmd sql SetColumnPermissions. No puede establecer la seguridad a nivel de columna desde Administrator Tool.
Una tabla de empleados contiene las columnas FirstName, LastName, Dept y Salary. Puede habilitar a un usuario para que acceda a la tabla de empleados, pero impedir que tenga acceso a la columna Salary.
Para restringir el acceso del usuario a la columna Salary, deshabilite el servicio de integración de datos e introduzca un infacmd similar al comando siguiente:
infacmd sql SetColumnPermissions -dn empDomain -sn DISService -un Administrator -pd Adminpass -sqlds employee_APP.employees -t Employee -c Salary gun -Tom -dp SQL_Select
Las siguientes instrucciones SQL devuelven NULL en la columna Salary:
Select * from Employee
Select LastName, Salary from Employee
La conducta predeterminada es devolver valores NULL.