Guía no oficial de seguridad en Microsoft Dynamics SL 7.0


Este documento se proporciona AS-es y está diseñado para ayudar a comprender la estructura de seguridad de las bases de datos de SL 7.0. Mientras comentarios son bienvenidos en este documento, errores u omisiones no constituyen un defecto del producto.  

La información de este documento procede de observar la estructura de la base de datos en SQL Management Studio y ejecute trazas de varios procesos en el analizador de SQL. No se incluye ninguna información obtenida a partir de código fuente compilado.

A menos que se indique lo contrario, la información de este documento supone el uso de "Autenticación de Windows".

 

 

Contenido:

Usuarios SQL y funciones:

07718158D19D4f5f9D23B55DBF5DF1- También conocido como "el superusuario entidad". Debe mostrar esta cuenta deshabilitada.  Este inicio de sesión se crea por el mantenimiento de la base de datos como "no interactivo", lo que significa que no puede iniciar sesión con esta cuenta de inicio de sesión.  Sólo se utiliza para la suplantación dentro de SL.

Este seudónimo se utiliza cuando un único procedimiento almacenado necesita tener acceso a los objetos de la base de datos de sistema SL y aplicación SL. El procedimiento almacenado de pp_cleanwrkrelease es un buen ejemplo. Este procedimiento ejecuta una instrucción delete de una tabla en la base de datos de aplicación SL basado en información de la tabla de Access en la base de datos de sistema SL. (Obtiene a la tabla acceso al procedimiento almacenado mediante la vista VS_Access en la base de datos de la aplicación). Por lo que en el procedimiento, hay una instrucción como ésta:

CON EXECUTE AS '07718158D19D4f5f9D23B55DBF5DF1'

Esto indica que en lugar de utilizar el inicio de sesión de windows que obtiene los derechos de la función de aplicación MSDSL, vamos a suplantar al usuario 07718158D19D4f5f9D23B55DBF5DF1 cuando se ejecuta este uno proc. esto es necesario porque las funciones de aplicación SQL (como MSDSL) no funcionan en bases de datos. Si no se utiliza la suplantación "Con ejecutar", se obtendría el siguiente error:

---------------------------
Mensaje de SQL Server 916
---------------------------
El servidor principal "dominio\nombreDeUsuario" no es capaz de tener acceso a la base de datos "SLSYS" en el contexto de seguridad actual.
---------------------------
OK  
---------------------------

El usuario 07718158D19D4f5f9D23B55DBF5DF1 tiene acceso a la mayoría de las vistas de vs_ y algunas de las tablas de la base de datos de aplicación de SL y la mayoría de las tablas de la base de datos de sistema SL. 07718158D19D4f5f9D23B55DBF5DF1 usuario o la suplantación también se refiere al propietario de la base de datos debido a que el encadenamiento de propiedad. El propietario de las bases de datos de sistema SL y aplicación SL deben coincidir... Si no es así, obtendrá este error:

---------------------------
Mensaje de SQL Server 916
---------------------------
La entidad de seguridad de servidor "07718158D19D4f5f9D23B55DBF5DF1" no es capaz de tener acceso a la base de datos "SLSYS" en el contexto de seguridad actual.
---------------------------
OK  
---------------------------

Parece que no importa que el propietario de la base de datos es tan largo como todas las de la aplicación de SL y SL las bases de datos tienen el mismo propietario. Ver "Propietario de la base de datos" para obtener más información. Vea también http://msdn2.microsoft.com/en-us/library/ms188676.aspx para obtener más información sobre el encadenamiento de propiedad.

 

E7F575915A2E4897A517779C0DD7CE- También se conoce como "El informe de usuario". Este ID de usuario se utiliza junto con la conexión ODBC y su ID de usuario de windows para ejecutar informes de Crystal. El usuario parece tener derechos SELECT a todas las tablas y vistas y derechos de ejecución a todos los procedimientos almacenados en las bases de datos de sistema SL y aplicación SL.  

El usuario deberá tener derechos SELECT o EXECUTE para cualquier objeto personalizado que se utiliza en un informe personalizado u obtendrá el siguiente error:

---------------------------
Aplicación auxiliar de Crystal Reports para Solomon IV
---------------------------
Error en la consulta SQL Get

Informe: C:\Program Files\Microsoft Dynamics SL\Usr_Rpts\03730DET. RPT

Error del motor de impresión de Crystal: 709 - Error en el archivo C:\Program Files\Microsoft Dynamics SL\Usr_Rpts\03730DET. RPT:

No se pudo encontrar la tabla.
---------------------------
OK  
---------------------------

Si la cuenta está deshabilitada, o si se ha cambiado la contraseña de la cuenta, obtendrá el siguiente error al ejecutar cualquier informe:

---------------------------
Aplicación auxiliar de Crystal Reports para Solomon IV
---------------------------
Error en la consulta SQL Get

Informe: C:\Program Files\Microsoft Dynamics\SL\Applications\GL\01650.RPT

Error del motor de impresión de Crystal: 536 - Error en el archivo C:\Program Files\Microsoft Dynamics\SL\Applications\GL\01650.RPT:

No se puede conectar: parámetros de inicio de sesión incorrecto.
---------------------------
OK  
---------------------------

 

MASTER60SP- El usuario principal de SL 6.0 SP1 - modelo de seguridad de SL 6.5. Este usuario todavía se utiliza si ejecuta SL 7.0 en la sección "Autenticación de SQL". En una base de datos de autenticación de windows, normalmente no existe este usuario y no se utiliza. El usuario es aproximadamente el equivalente del usuario "Master" en SL 6.0 y anteriores.

En una base de windows no autenticado, el usuario master60sp es el propietario de la base de datos de aplicación de SL y sistema de SL, dándole un control total sobre todos los objetos en las bases de datos. Toda la interacción entre las pantallas de SL y los informes se realiza aunque el usuario master60sp... el usuario de windows no se utiliza en todo el ID. Se puede cambiar la contraseña de este usuario ingresando en la pantalla de administración de base de datos (98.270.00) en SL.

El usuario también se utiliza en FRx. Esto puede ser un problema porque en una base de datos de autenticación de windows, no existe el usuario master60sp. KB 941591 explica cómo solucionarlo.

 

Usuario CD7359B5576446f85EB67E824B4770: El usuario de SL 6.0 SP1 - 6.5 "un" modelo de seguridad. También se utiliza este usuario si ejecuta SL 7.0 en la sección "Autenticación de SQL". En una SL 7.0 base de datos de autenticación de windows, este usuario normalmente no existe y no se utiliza. El usuario es aproximadamente el equivalente del usuario "MasterRO" en SL 6.0 y anteriores.

El usuario sólo tiene acceso a la base de datos del sistema. No debería tener derechos para la base de datos de la aplicación o puede obtener el problema descrito en 896321 KB. Puede seleccionar de varias tablas y ejecutar varios procedimientos almacenados. También puede insert, update o delete en las tablas rptextra y de dominio.  

Durante el proceso de inicio de sesión, el usuario CD7359B5576446f85EB67E824B4770 realiza las siguientes tareas:

  • Comprueba la versión de SQL
  • Comprueba la versión de la base de datos de SL
  • Comprueba si las claves de registro
  • Obtiene una lista de las empresas en la base de datos
  • Pasa el procesamiento al usuario master60sp

 

Función de base de datos de MSDynamicsSL- SL todos los usuarios son un miembro de esta función. El papel en la base de datos de sistema SL tiene permisos de ejecución a la getAuthenticationType, GetInfo, y getVersion procedimientos almacenados en la base de datos del sistema. El papel en la base de datos de aplicación SL no tiene permisos. No se sabe cuál es su función esta función sirve en la base de datos de aplicación SL. Si los usuarios no son un miembro de la función de base de datos de MSDynamicsSL en el sistema de SL DB o si la función de base de datos de MSDynamicsSL en el sistema de SL no tiene permiso de ejecución para el getauthenticationtype procedimiento almacenado, a continuación, en el inicio de sesión. EXE se bloqueará cuando no son administradores intentan iniciar sesión en SL.

 

Función de aplicación MSDSL: Este rol tiene derechos de Control en todos los objetos de la base de datos.  

La importancia de que una función de "aplicación" en lugar de una función normal "database" es que sólo son válidos los derechos asignados al tener acceso a la base de datos de la aplicaciónde SL. Para incluso aunque el usuario podría tener derechos para agregar una nueva cuenta en la pantalla de mantenimiento de plan de cuentas dentro de SL, que no tengan derechos para ejecutar un comando INSERT en la tabla cuenta SQL Server Management Studio.

La función es específica de la base de datos... es decir el MSDSL función en una base de datos no es la misma función que la función MSDSL en otra base de datos aunque se denominan lo mismo. La función "MSDSL" en la base de datos de aplicación SL tiene los derechos de control sobre los objetos de esa base de datos. y la función "MSDSL" en la base de datos del sistema de SL tiene derechos de control sobre los objetos de la base de datos del sistema.  

Si la contraseña de esta función es incorrecta, puede producir el siguiente error durante el inicio de sesión (la propiedad de sincronización y el escenario de seguridad corregirlo a menos que existan varias bases de datos de sistema de SL que apuntan a la misma base de datos de aplicación):

---------------------------
INICIO DE SESIÓN
---------------------------
Se ha producido un Error fatal de SQL 15161 durante el inicio de sesión de compañía
---------------------------
OK  
---------------------------

Si el escenario de sincronización no corrige el error, manualmente debe pasar por cada base de datos en el servidor SQL y ejecute lo siguiente para ver si hay varios DBs sistema apuntando a la misma aplicación DB.  Si encuentra que sea el caso, uno de lo DBs sistema deberá quitarse o al menos unliked desde la base de datos de la aplicación.

SeleccioneDatabaseName, * Dedominio
SeleccioneDatabaseName, * Decompañía

Dominio\nombre de usuario: Otro cambio en 7.0 es que los inicios de sesión de windows del usuario ahora se agregan a la base de datos de SQL. Esto se puede observar en SQL Management Studio, expanda en una de las bases de datos de SL -> seguridad -> usuarios. Las cuentas de usuario no tienen ninguno de sus derechos de acceso; Algunos derechos por ser miembro de la función MSDynamicsSL, pero de los derechos se conceden principalmente por SL utilizando la función de aplicación MSDSL. La excepción es si el usuario es un miembro del grupo Administradores de SL. Vea la explicación de "Grupos de SL" a continuación para obtener más información.

Al tener las cuentas de usuario de SQL, los usuarios tendrán permiso para iniciar sesión en SQL Server Management Studio sin tener que conocer la contraseña "sa". Por suerte porque se utilizan las funciones de aplicación, no tendrán permiso para hacer algo una vez iniciado pulg.

 

BusinessPortalUser- De SQL Server de este usuario se crea cuando se instala Business Portal. Se utiliza para la interacción entre el portal de negocio y SQL. No tiene derechos propios. Obtiene su potencia de ser un miembro de la función de base de datos BFGROUP.  

 

Función de base de datos BFGROUP- Esta función se utiliza para conceder permisos de "SELECT, UPDATE, INSERT, DELETE" a todos los objetos de SL. El BusinessPortalUser debe ser el único miembro de esta función. De vez en cuando la función no tiene derechos de acceso correctos para varios objetos que pueden provocar errores en portal de negocio. Para obtener más información, vea KB 906715.

Grupos de SL:

Grupo Administradores: Como su nombre implica, ser miembro de este grupo proporciona al usuario privilegios administrativos en SL. cualquier miembro del grupo se convierte en el equivalente del usuario "SYSADMIN" en las versiones anteriores. Derechos individuales no están asignados al grupo "administradores" en la pantalla de mantenimiento de los derechos de acceso... en su lugar ser miembros de este grupo automáticamente otorga derechos completos para todas las pantallas y los informes.

Ser miembro del grupo Administradores, también le ofrece algunos privilegios adicionales:

  • Sólo los administradores ven el grupo estándar de módulo de "Administración" en el menú
  • Sólo los administradores pueden agregar nuevos usuarios al sistema
  • Los administradores reciben también automáticamente la función de servidor "sysadmin" en el SQL Server. Esto es importante saber porque el usuario ahora podrá iniciar sesión en SQL Server Management Studio y realizar cualquier tarea en cualquier base de datos.
    • Nota: Hasta el debate si esto es mejorado o cambiado en 7.0 Fp1 con "conceder este permiso de usuario para crear usuarios y los inicios de sesión SQL server"

Por este motivo, pertenencia a este grupo debe limitarse a sólo aquellos usuarios que realmente se necesiten.

 

Grupo todos: Contrariamente a lo que su nombre indica, todos los usuarios no están automáticamente miembro de "todos" grupo. Debe agregar manualmente los usuarios nuevos todos grupo. De forma predeterminada, este grupo se utiliza para proporcionar a los usuarios del menú estándar. El grupo no proporciona ningún derecho de acceso por defecto.

El sincronizar todos los Ownership & un escenario de actualización de seguridad:

Este escenario de Database Maintenance (98.290.00) puede corregir una variedad de problemas y debe ser el primer paso para solucionar problemas de seguridad o iniciar sesión problema relacionado. Cuando se ejecuta el escenario, que sincroniza las bases de datos en el servidor independientemente de que se selecciona uno en el mantenimiento de la base de datos. Aquí son los detalles específicos sobre lo que hace el proceso:

· Bases de datos de autenticación de Windows NT

o   Establece el propietario de la base de datos

§  En 7.0 el propietario se establecerá en el inicio de sesión ID para iniciar sesión en el mantenimiento de la base de datos.  

§  En 7.0 SP1 del propietario se establece como 'sa'

o   Crea los usuarios de E7F575915A2E4897A517779C0DD7CE y 07718158D19D4f5f9D23B55DBF5DF1 en el SQL Server sólo si se han perdido.

o   Quita y vuelve a agregar el usuario E7F575915A2E4897A517779C0DD7CE de las bases de datos de sistema SL y aplicación SL.

o   Concede derechos al usuario E7F575915A2E4897A517779C0DD7CE.

o   Concede derechos al usuario 07718158D19D4f5f9D23B55DBF5DF1.

o   Establece la propiedad de confianza en las bases de datos de sistema SL y aplicación SL en TRUE.

o   Crea el rol de la base de datos de MSDynamicsSL si falta y asigna derechos, pero no vuelve a agregar los usuarios a la función. Error Véase 15135.

§  En SL 7.0, sólo crea de nuevo la función en la base de datos de sistema SL

§  En SL 7.0 Sp1, vuelve a crear la función de sistema de SL y SL aplicación de bases de datos.  

o   La función de aplicación MSDSL se crea en el sistema y bases de datos de aplicación sólo si se han perdido

o   Asigna derechos a la función MSDSL en el sistema de base de datos. Debido a error 15053, derechos no están asignados a la función MSDSL en la base de datos de la aplicación si faltaba el papel. Esto puede conducir a un mensaje de sistema 10232 en Inicio de sesión. Error Véase para la solución.

o   Restablece y se sincroniza la contraseña MSDSL de la función de la aplicación.

o   Restablece la contraseña de usuario E7F575915A2E4897A517779C0DD7CE.

o   Restablece la contraseña de usuario 07718158D19D4f5f9D23B55DBF5DF1.

· Autenticado de SQL bases de datos

o   Establece el propietario de las bases de datos de sistema SL y SL aplicación a master60sp.

o   Si falta, crea el usuario master60sp en el servidor.

o   Crea el usuario CD7359B5576446f85EB67E824B4770 si falta.

o   Elimina y vuelve a agregar el usuario CD7359B5576446f85EB67E824B4770 desde las bases de datos de sistema SL y aplicación SL.

o   Concede derechos al usuario CD7359B5576446f85EB67E824B4770.

o   Establece la propiedad de confianza en las bases de datos de sistema SL y aplicación SL en TRUE.

o   Sincroniza la contraseña master60sp.

o   Restablece la contraseña de usuario CD7359B5576446f85EB67E824B4770.

Propietario de la base de datos:

El propietario de la base de datos obtiene establecido durante el mantenimiento de la base de datos (98.290.00). En la versión 6.0 Sp1: 6.5 o en SL 7.0 mediante la autenticación de SQL, el propietario de la base de datos es master60sp. En SL 7.0, el propietario de las bases de datos establecerá con el identificador de usuario proporcionado al inicio de sesión para el mantenimiento de la base de datos. En SL 7.0 Service Pack 1, el propietario de las bases de datos establecerá a sa.

El propietario de la base de datos hereda el control total sobre todos los objetos de la base de datos. Normalmente no importa que el propietario de las bases de datos son siempre que el mismo usuario posee todas las bases de datos de SL. Hay una excepción a esto. Si el propietario de la base de datos es un usuario de dominio y por algún motivo el SQL Server tiene problemas para ponerse en contacto con un controlador de dominio, puede recibir el siguiente error en varios lugares:

---------------------------
Mensaje de SQL Server 15404
---------------------------
No se pudo obtener información sobre el grupo o usuario de Windows NT 'Dominio\Usuario', código de error 0x54b.
---------------------------
OK  
---------------------------

Para convertirse en el propietario de la base de datos, ya no puede ser un usuario en esa base de datos. Esto tiene el potencial de producir el siguiente error en el mantenimiento de la base de datos:

---------------------------
9829000
---------------------------
SetOwner Error-2147206394: [Microsoft] [controlador ODBC para SQL Server] [SQL Server] el nuevo propietario propuesto para la base de datos ya es un usuario o un alias en la base de datos.
---------------------------
OK  
---------------------------

Vea KB 942450 para obtener más información acerca de este error.

Para evitar este problema, se recomienda realizar el propietario de las bases de datos de un usuario SQL como "sa" (que ocurre automáticamente en 7.0 Service Pack 1)

 

 

Varios:

Cuenta de servicio de SQL Server. , Pero la cuenta de servicio puede ser cualquier cuenta debe tener permisos de lectura para los objetos de cuenta de usuario en active directory. De lo contrario obtendrá el siguiente error al intentar agregar usuarios a SL:

---------------------------
Mensaje de SQL Server 15404
---------------------------
No se pudo obtener información sobre el grupo o usuario de Windows NT 'Dominio\Usuario', código de error 0x54b.
---------------------------
OK  
---------------------------

La cuenta del servicio SQL Server se puede establecer seleccionando Inicio -> Configuración -> Panel de Control -> Herramientas administrativas -> servicios. Desplazamiento hacia abajo hasta "SQL Server (MSSQLSERVER)", derecha haga clic en y seleccione Propiedades. , A continuación, haga clic en la ficha iniciar sesión.

Las conexiones ODBC. Al ejecutar en primer lugar un crystal report en una nueva estación de trabajo, se crea una conexión ODBC para el sistema SL y SL aplicación bases de datos en la ficha DSN de usuario de orígenes de datos (ODBC). Se debe establecer esta conexión para usar la autenticación de SQL incluso si utiliza autenticación de Windows para iniciar sesión en Dynamics SL si se cambia esta conexión para usar la autenticación de windows o un DSN de sistema se agrega y se utiliza la autenticación de windows, los usuarios pueden ver el error siguiente:

---------------------------
Aplicación auxiliar de Crystal Reports para Solomon IV
---------------------------
Error en la consulta SQL Get
Informe: C:\Program Files\Microsoft Dynamics\SL\Applications\GL\01720.RPT
Error del motor de impresión de Crystal: 709 - Error en el archivo C:\Program Files\Microsoft Dynamics\SL\Applications\GL\01720.RPT:
No se pudo encontrar la tabla.
---------------------------
OK  
---------------------------

Es seguro eliminar las entradas de usuario DSN como que automáticamente vuelven a crearse. Puede ver las entradas seleccionando Inicio -> Panel de Control -> Herramientas administrativas -> orígenes de datos (ODBC).

 

La propiedad "Trustworthy" en la base de datos. Esto parece ser algo nuevo en SQL 2005. Cuando una base de datos se adjunta primero a un SQL Server, la propiedad de "confianza" en la base de datos se establece en FALSE. Esto significa que los objetos en la base de datos a los que intentan tener acceso a objetos de otra base de datos (como la vista de vs_company de la base de datos de aplicación SL) se producirá un error. Esto puede producir el error siguiente en una variedad de lugares incluidos abrir pantallas en SL:

---------------------------
Mensaje de SQL Server 916
---------------------------
La entidad de seguridad de servidor "07718158D19D4f5f9D23B55DBF5DF1" no es capaz de tener acceso a la base de datos "SLSYS" en el contexto de seguridad actual.
---------------------------
OK  
---------------------------

Puede ver el estado actual de la propiedad desde SQL Server Management Studio -> derecha haga clic en la base de datos -> Seleccionar propiedades -> haga clic en Opciones. Propiedad la confianza está bajo la sección Miscellaneous.  

El escenario de mantenimiento de base de datos Synchronize All Ownership & Security parece establecer en TRUE para todas las bases de datos de SL.

Puede encontrar más información aquí:

http://msdn2.microsoft.com/en-us/library/ms187861.aspx

 

Adición de usuarios en la pantalla Mantenimiento de usuario. Incluso si un usuario tiene que actualizar, insertar, eliminar los derechos a la pantalla de mantenimiento de usuario (98.260.00) que aún no se pueden agregar nuevos usuarios o agregar usuarios al grupo Administradores. Cuando intenta escribir el nombre de usuario de Windows y salga, recibirá el siguiente error:

---------------------------
SQL Server mensaje 229
---------------------------
Se denegó el permiso EXECUTE en el objeto 'xp_logininfo', base de datos 'mssqlsystemresource', esquema 'sys'.
---------------------------
OK  
---------------------------

Si intenta agregar un usuario al grupo Administradores, recibirá el siguiente error:

---------------------------
Mensaje de SQL Server 15247
---------------------------
Usuario no tiene permiso para realizar esta acción.
---------------------------
OK  
---------------------------

Debe ser en el grupo de administradores de SL para agregar usuarios o agregar usuarios al grupo Administradores. Cuando se agrega un nuevo identificador de usuario, el proceso realmente es agregar el usuario de windows como un nuevo usuario de SQL Server. Esto requiere un nivel elevado de derechos de SQL que no concede el rol MSDSL por sí solo. Por lo que debe estar en el grupo de administradores de SL.

 

Mover bases de datos a un nuevo servidor. En una base de datos de autenticación de windows, cada inicio de sesión de windows de usuarios ID se agregan a la de SQL Server en SQL Server -> seguridad -> inicios de sesión. Los inicios de sesión, a continuación, se agregan a la base de datos en SLDATABASE -> seguridad -> usuarios. , Pero si una base de datos de copia de seguridad y restaurarla en un nuevo servidor, los identificadores de inicio de sesión no se agregan automáticamente a la de SQL Server. Por lo que ahora son huérfanos los identificadores de inicio de sesión en la base de datos. Error Véase 15024 que debe corregirse de 7.0 FP1. Para corregir esto, debe ejecutar el script siguiente contra la base de datos del sistema de SL en el nuevo servidor. Si no lo hace, los usuarios recibirán "inicio de sesión. EXE ha detectado un problema y debe cerrarse. Disculpe las molestias"errores al intentar iniciar la sesión

declarar @windowsuseracct como char(85)
declarar @execString como char(200)
DECLARAR user_cursor para el CURSOR
seleccionar distintos windowsuseracct de userrec
izquierda join sys.server_principals slogins en userrec.windowsuseracct=slogins.name
donde windowsuseracct <>'' y slogins.name es null
       OPEN user_cursor
FETCH NEXT FROM user_cursor INTO @windowsuseracct
Al @@FETCH_STATUS = 0
       BEGIN
set @execString = 'CREATE LOGIN' + QUOTENAME (rtrim(@windowsuseracct)) + 'FROM WINDOWS WITH DEFAULT_DATABASE = [master]'
              exec (@execString)
FETCH NEXT FROM user_cursor INTO @windowsuseracct
       END
Cerrar user_cursor
DEALLOCATE user_cursor