Manual de fundamentos de seguridad de SharePoint / Evitar escollos comunes

ACTUALIZACIÓN 12/18/07: Consulte el artículo de Paul Liebrand para algunas consecuencias técnicas de quitar o modificar los nombres de grupo predeterminados (Véase también su comentario a continuación).

Visión general:

Es fácil de configurar y administrar SharePoint seguridad. Sin embargo, ha demostrado para ser difícil para algunos administradores primera vez realmente envolver sus manos alrededor de ella. No sólo, He visto a algunos administradores de llegar a un entendimiento perfecto el lunes sólo a han perdido viernes porque no tienen que hacer alguna configuración en el tiempo intermedio. (Admito que tengo este problema yo mismo). Esta entrada de blog que proporciona una útil cartilla de seguridad de SharePoint y apunta hacia unas mejores prácticas de configuración seguridad.

Nota importante:

Esta descripción se basa fuera de la caja de seguridad de SharePoint. Mi experiencia personal se orienta alrededor de musgo por lo que puede haber algunas cosas específicas musgo aquí, pero creo que es exacto para WSS. Espero que nadie pueda ver los errores u omisiones que señalan que en los comentarios o Enviarme un correo electrónico. Voy a hacer correcciones post prisa.

Fundamentos:

Para los propósitos de este Resumen, Hay cuatro aspectos fundamentales para la seguridad: usuarios/grupos, objetos asegurables, herencia y niveles de permisos.

Usuarios y grupos romper a:

  • Usuarios individuales: Tiró de activo creado directamente en SharePoint o directorio.
  • Grupos: Asignadas directamente desde active directory o creado en SharePoint. Los grupos son una colección de usuarios. Grupos son globales en una colección de sitios. Ellos no son nunca "atados" a un objeto asegurable específico.

Objetos asegurables romper a por lo menos:

  • Sitios
  • Bibliotecas de documentos
  • Elementos individuales en las listas y bibliotecas de documentos
  • Carpetas
  • Varios ajustes del BDC.

Hay otros objetos asegurables, Pero tienes la foto.

Niveles de permisos: Un paquete de granular / baja nivel de permisos que incluyen cosas tales como crear, leer o eliminar entradas en las listas de.

Herencia: Por defecto entidades heredarán configuración de seguridad de objeto que contiene. Subsitios heredan permisos de sus padres. Las bibliotecas de documentos heredan de su sitio. Así sucesivamente y así sucesivamente.

Usuarios y grupos se refieren a objetos asegurables mediante niveles de permisos y herencia.

Las reglas de seguridad más importantes para entender, alguna vez 🙂 :

  1. Los grupos son simplemente las colecciones de los usuarios.
  2. Los grupos son globales dentro de una colección de sitios (i.e. No hay nada como un grupo definido en un nivel de sitio).
  3. Nombre del grupo no soportar, los grupos no, en y de sí mismos, tienen ningún nivel particular de seguridad.
  4. Los grupos tienen seguridad en el contexto de un específico objeto asegurable.
  5. Puede asignar niveles de permisos diferentes para el mismo grupo para cada objeto asegurable.
  6. Las directivas de aplicación web triunfan sobre todo esto (ver abajo).

Los administradores de seguridad perdidos en un mar de anuncios de grupo y usuario siempre pueden confiar en estos axiomas para gestionar y comprender su configuración de seguridad.

Errores comunes:

  • Nombres de grupo implican falsamente permiso: Fuera de la caja, SharePoint define un conjunto de grupos cuyos nombres implican un nivel inherente de seguridad. Considerar el grupo de "Colaborador". Uno familiarizado con la seguridad de SharePoint puede mirar ese nombre y asumir que algún miembro de ese grupo puede "contribuir" a cualquier sitio/lista/Biblioteca en el portal. Eso puede ser cierto pero no porque el nombre del grupo pasa a ser "colaborador". Esto sólo es cierto fuera de la caja porque el grupo se ha proporcionado un nivel de permisos que permite añadir, editar o eliminar contenido en el sitio raíz. A través de la herencia, los contribuyentes"" Grupo también puede añadir, editar o eliminar contenido en cada sitio secundario. Uno puede "romper" la cadena de herencia y cambio el nivel de permiso de un subsitio tal que los miembros del llamada "colaborador" Grupo no contribuyen en absoluto, Pero sólo leer (por ejemplo). Esto no sería una buena idea, Obviamente, ya que sería muy confuso.
  • Los grupos no están definidos a nivel de sitio. Es fácil confundirse por la interfaz de usuario. Microsoft proporciona un conveniente enlace a administración de usuario o grupo a través "y grupos de cada sitio de personas" enlace. Es fácil creer cuando estoy en el sitio "xyzzy" y crear un grupo a través personas de xyzzy y grupos que yo he creado un grupo que sólo existe en xyzzy. Ese no es el caso. Realmente he creado un grupo para la colección de todo el sitio.
  • Miembros de grupos no varía por sitio (i.e. es el mismo en todas partes que se utiliza el grupo): Considerar el grupo propietario"" y dos sitios, "HR" y "Logística". Sería normal pensar que dos individuos separados dueños de esos sitios — un dueño de HR y un propietario de logística. La interfaz de usuario hace que sea fácil para un administrador de seguridad argumentado este escenario. Si no sabía mejor, Podría acceder a los enlaces de personas y grupos via el sitio HR, Seleccione los dueños"" Grupo y añadir mi dueño de HR a ese grupo. Un mes más tarde, Logística viene en línea. Acceder a personas y grupos desde el sitio de logística, Añadir Levante los dueños"" Grupo. Veo allí el dueño de HR y le quite, pensando que estoy quitando le de propietarios en el sitio de logística. En realidad, Yo le estoy quitando del Grupo Mundial de propietarios. Produce hilaridad.
  • Fallando a nombre de grupos basados en papel específico: Los aprobadores"" el grupo es un ejemplo perfecto. ¿Qué miembros de aprobar de este grupo? Puede que se apruebe? Realmente quiero Departamento de logística de la gente para poder aprobar documentos de RRHH? Por supuesto que no. Nombre siempre grupos basados en su papel dentro de la organización. Esto reducirá el riesgo de que el grupo se le asigna un nivel inadecuado de permiso para un objeto asegurable determinado. Grupos nombre basados en su papel previsto. En el anterior escenario de recursos humanos y logística, Que debería haber creado dos nuevos grupos: "Dueños de HR" y "dueños de logística" y asignar niveles de permisos razonable para cada uno y la cantidad mínima necesaria para que aquellos usuarios que hagan su trabajo.

Otras referencias útiles:

Si lo has hecho esto lejos:

Por favor, hágamelo saber sus pensamientos a través de los comentarios o enviarme por correo electrónico. Si conoces otras buenas referencias, por favor hacer lo mismo!

Etiquetas de Technorati:

Fácil y rápida: Crear un elemento Web de vista de datos (DVWP)

Hay una riqueza de gran información sobre el WSS 3.0 Elemento Web vista de datos (DVWP) en la web de varias fuentes. Sin embargo, Me pareció sorprendentemente difícil encontrar información sobre este primer paso muy básico. Aquí está otro artículo en el "rápido y fácil" serie para solucionar el problema.

Siga estos pasos para crear un elemento web vista de datos (DVWP). Se basan en un "anuncios" elemento Web, Pero se aplican a la mayoría de las listas.

  1. Crear un elemento web de anuncios y agregarlo a un sitio.
  2. Abrir el sitio de SharePoint Designer.
  3. Abra default.aspx el sitio.
  4. Seleccione el elemento de web de anuncios y haga clic.
  5. En el menú contextual, Seleccione "convertir a XSLVista de datos T".

SharePoint Designer le notifica que este sitio es ahora para requisitos particulares de su definición del sitio. Eso no es necesariamente malo, Pero hay importantes implicaciones (rendimiento, actualización, otros) que están fuera del alcance de este pequeño "rápido y fácil" entrada. Para obtener más información sobre este tema, Te recomiendo dos libros aquí así como su búsqueda favorita en Internet.

Confirmar que lo hiciste correctamente:

  1. Cierre y vuelva a abrir el navegador web (para evitar que accidentalmente volver a publicar el original "añade un nuevo elemento web").
  2. Seleccione la flecha desplegable de la parte web y seleccione "modificar compartido Web Part" en el menú.
  3. El panel de herramientas se abre a la derecha.
  4. El panel ha cambiado de sus habituales establecer opciones a este:
imagen

“No se puede obtener la propiedad de columna del esquema de lista de la lista de SharePoint” — Descripción, work-arounds

Esta semana, Finalmente hemos reproducido un problema que había sido informado por un usuario remoto: Cuando ella trató de exportar el contenido de una lista de excel, las cosas parecen comenzar a trabajar, pero entonces sería pop Excel hasta un error: "No se puede obtener la propiedad de columna del esquema de lista de la lista de SharePoint". Ella corría oficina 2003, Windows XP y conexión a MOSS.

He buscado las Internets y vio algunas especulaciones pero nada 100% definitivo. Por lo tanto, este post.

El problema: Exportar una vista de excel contiene una fecha (fecha = el tipo de datos de la columna).

Lo que funcionó para nosotros: Convertir la fecha a "una sola línea de texto". A continuación, convertir a una fecha.

Lo solucionó. Fue agradable ver que la conversión trabajado, en realidad. Estaba bastante nervioso que convertir las cosas de esta manera no, pero no.

Este fallo ha arrojado una sombra enorme sobre el tipo de datos date en la mente del cliente, así que vamos a estar buscando una respuesta definitiva de Microsoft y esperemos que voy a publicar y actualizar aquí en el próximo período corto de tiempo con la información oficial de respuesta y la revisión.

Otras referencias:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<final>

Suscribirse a mi blog.

Etiquetas de Technorati: ,

Rápida y sencilla: Enviar un correo electrónico con hipervínculo incrustado de flujo de trabajo de SharePoint Designer

Una vez o dos veces al mes, alguien puestos una pregunta del Foro: ¿"Cómo incluyo enlaces a URL que son seleccionables desde un correo electrónico de SharePoint Designer?"

Presentado sin más comentario: (bien, realmente no hay más comentarios después de la imagen):

imagen

Becky Isserman sigue con una útil explicación sobre cómo incrustar un vínculo a un artículo en el correo electrónico: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

Nueva versión: Extensiones de flujo de trabajo de SharePoint Designer (funciones de manipulación de cadenas)

ACTUALIZACIÓN: Consulte aquí para mis reflexiones sobre la comercialización de este proyecto: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

He estado ocupado trabajando en mi proyecto de Codeplex que actualmente se centra en proporcionar cadena extensiones de manipulación para flujos de trabajo creados a través de SharePoint Designer.

Consulte aquí para obtener más detalles:

Inicio de proyecto: http://www.codeplex.com/spdwfextensions

Lanzamiento: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Versión 1.0 incluye las siguientes nuevas características:

Función Descripción (Si no igual.Función neto)
Num-entradas() Devuelve las números "entradas" en una cadena según un delimitador especificado.

Por ejemplo: Num-entradas en una cadena de "un,b,c" con delimitadores"," = 3.

Entrada() Devuelve el token n-ésima de una cadena según un delimitador especificado.
Longitud String.Length
Reemplazar() String.Replace()
Contiene() String.Contains()
Devuelve la palabra "verdadero" o la palabra "falso".
Subcadena(Inicio) String.substring(Inicio)
Subcadena(Inicio,longitud) String.substring(Inicio,longitud)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Devuelve la palabra "verdadero" o la palabra "falso".
EndsWith() String.EndsWith()
Devuelve la palabra "verdadero" o la palabra "falso".

Un error de tiempo de ejecución BDC explicado

Se ha producido un error BDC esta semana que se manifiesta en la interfaz de usuario y en la 12 registro de colmena en tiempo de ejecución.

Primero, Esto apareció en la interfaz de usuario:

No se pudo encontrar campos para insertar todos los valores de identificador para ejecutar correctamente una SpecificFinder MethodInstance con nombre … Disponer de parámetros de entrada TypeDescriptors asociados con cada identificador definido para esta entidad.

Aquí hay una captura de pantalla:

clip_image001

Yo también podría causar este mensaje que aparezca en el 12 registro de colmena en va (usando mi high-tech-don't-try-this-at-home patentado "misteriosos errores" método):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C datos de SharePoint Portal Server Business 6q4x excepción alta en BusinessDataWebPart.OnPreRender: System.InvalidOperationException: El valor del identificador ”, de tipo ”, no es válido. Valor esperado de identificador de tipo 'System.String'. en Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objeto[] subIdentifierValues, LobSystemInstance lobSystemInstance) en Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entidad de entidad, Objeto[] userValues, LobSystemInstance lobSystemInstance) en Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) en Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() en Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Busqué alrededor y encontrar algunas pistas en el Foro de MSDN, pero no eran suficiente para mí entender lo que estaba haciendo mal. Estuve viendo una transmisión por Ted Pattison que mi empresa ha squirreled lejos en un servidor y llegó a darse cuenta de mi problema.

En mi ADF, Estoy conectando a una base de datos SQL como se muestra:

            <Propiedad Nombre="RdbCommandText" Tipo="System.String">
              <![CDATA[
                SELECCIONE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAÍS, ADDRESS1, 2, ADDRESS3, ADDRESS4, CIUDAD, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      CONDADO DE, ESTADO, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELÉFONO, EXTENSIÓN, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW con (NOLOCK)
                DONDE
                  (SETID <> 'COMPARTIR') y
                  (inferior(CARRIER_ID) >= menor(@MinId)) y
                  (inferior(CARRIER_ID) <= menor(@MaxId)) y
                  (inferior(DESCR) COMO inferior(@InputDescr))
                ]]>
            </Propiedad>

Yo fui siempre que SQL de una persona DBA y dan a entender que es un especial vista que crearon sólo para mí. La única clave que es CARRIER_ID.

Aquí está el error que introdujo:

      <Identificadores de>
        <Identificador de Nombre="CARRIER_ID" TypeName="System.String" />
        <Identificador de Nombre="DESCR" TypeName="System.String" /> 
</Identificadores de>

En algún lugar a lo largo de la línea, Que había conseguido yo confundir sobre el significado de <Identificadores de> y DESCR aunque no es realmente un identificador. Sacó de DESCR el conjunto de identificadores y presto! Todos los que trabajaron.

Espero que esto ahorra alguien alguna pena 🙂

Etiquetas de Technorati: , , ,

No se puede batir alcance de SharePoint

Durante los últimos dos días, He participado en dos reuniones durante el cual presentaron los resultados de un proyecto de SharePoint. El CIO y su equipo se unió a la primera reunión. Es estándar y no especialmente notables. El Departamento de informática participa obviamente en una implementación de empresa de cualquier proyecto de tecnología. La segunda reunión ampliada para incluir un V.P. desde el marketing, varios directores que representan HR, Logística, Fabricación, Proyectos de capital, Calidad, Compra, Desarrollo corporativo y otros departamentos (algunos de los cuales no estaban directamente implicados en la fase actual). Es una poderoso gran audiencia.

En mi vida anterior, He trabajado principalmente en proyectos ERP y CRM. Ambos tienen un dominio de solución bastante amplia pero no tan amplia como SharePoint. Para realizarse plenamente, Proyectos de SharePoint legítimamente y necesariamente llegar a cada rincón y grieta de una organización. ¿Cuántas otras soluciones empresariales tienen que tipo de alcance? No hay muchos.

SharePoint claramente representa una gran oportunidad para aquellos lo suficientemente afortunados como estar en este espacio. Ofrece una gran oportunidad técnica (que de alguna manera se da vuelta sobre su cabeza aquí bajo "Tecnologías usted debe dominar"). Pero aun mejor, SharePoint nos expone a una extensa y amplia gama de procesos de negocio a través de estos contratos. ¿Cuántos especialistas en CRM trabajan con la parte de fabricación de la empresa? ¿Cuántos consultores ERP trabajan con recursos humanos en adquisición de talento? SharePoint es superior a ambos.

Como cualquier cosa, No es perfecto, Pero es un muy buen lugar para estar.

Por el amor de [llenar en su ser persona superior más queridos], no cambie el ' título’ columna de sitio.

En el Foros de SharePoint, de vez en cuando alguien pregunta sobre "cambiar la etiqueta de título" o sobre "quitar título de listas".

Línea inferior: No lo hagas!

Lamentablemente, la interfaz de usuario permite un cambio unidireccional de esa etiqueta de columna como se muestra:

imagen

Título es una columna asociada al elemento"" tipo de contenido. Muchos, muchos, muchos CT utiliza esta columna y si cambias aquí, ondas hacia fuera por todas partes. Hay una buena oportunidad que usted no tenía la intención de que esto suceda. Usted probablemente estaban pensando a sí mismo, "Tengo una lista de búsqueda personalizada y ' título’ No tiene ningún sentido como un nombre de columna, así que voy a cambiarlo a ' código de estado’ y añadir una columna de descripción." Pero si usted sigue ese pensamiento y cambiar el nombre de ' título’ al 'Código de estado', título de cada lista (incluyendo las bibliotecas de documentos) cambios al código de estado"" y tú probablemente No pienso que eso pasara.

El verdadero problema es que se trata de un cambio unidireccional. La interfaz de usuario "sabe" ese título"" es una palabra reservada. Por lo tanto, Si tratas de cambiar "Status Code" volver a "Título", te evitará y ahora tienes pintado a sí mismo en una esquina using paint that never dries 🙂

¿Qué pasa si ya lo cambiaste? No he visto la respuesta que todos queremos, que es un método simple y fácil para cambiar la etiqueta de 'Título'. Ahora mismo, el mejor Consejo es cambiarlo a algo como "Doc/artículo título". Es una etiqueta lo suficientemente genérica que puede no ser demasiado discordante para sus usuarios.

Tengo algunas otras ideas que están en mi lista de cosas a la investigación:

  • Póngase en contacto con Microsoft.
  • Hacer algo con el modelo de objetos, Tal vez en conjunción con una característica.
  • Descifrar el esquema de base de datos y actualizar manualmente SQL. (Usted debe contactar a Microsoft antes de hacerlo aunque; es probable que se anulará el contrato de soporte).

Si alguien sabe como solucionar esto, por favor enviar un comentario.

Actualización final de la tarde, 11/15: He encontrado este enlace que describe un método para crear un tipo de lista que no tiene un columna de título: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF y tu amigo, CDATA

He notado algo torpe e innecesario mano-codificación de RdbCommandText en algunos ejemplos (incluyendo la documentación de MSDN).

Quería señalar a los recién llegados a BDC que comandos se pueden envolver dentro de una etiqueta CDATA en natural"" forma. Por lo tanto, Esta construcción incómoda:

<Propiedad Nombre="RdbCommandText" Tipo="System.String">
SELECT dbo.MCRS_SETTLEMENT.ID, DBO.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
DONDE (ID. &gt;= @MinId) Y (ID. &lt;= @MaxId)
</Propiedad>

puede ser mejor representado de esta manera:

<Propiedad Nombre="RdbCommandText" Tipo="System.String">
<![CDATA[
SELECT dbo.MCRS_SETTLEMENT.ID, DBO.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
DONDE (ID. >= @MinId) Y (ID. <= @MaxId)
]]>
</Propiedad>

</final>

Cartilla BDC

Introducción a BDC

Ejemplo funcional: ADF de BDC que se conecta a la base de datos SQL incrustado seudónimo y contraseña

Necesitaba conectar MOSS a una base de datos SQL vía BDC. Para propósitos de prueba/POC, Quería integrar el SQL cuenta usuario id y contraseña en el ADF. A partir de Esta plantilla (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), He creado un Ada que se conecta a una determinada instancia de SQL server y registros con un id de usuario específico y una contraseña y se muestra en este fragmento de código:

  <LobSystemInstances>
    <LobSystemInstance Nombre="ClaimsInstance">
      <Propiedades>
        <Propiedad Nombre="AuthenticationMode" Tipo="System.String">PassThrough</Propiedad>
        <Propiedad Nombre="DatabaseAccessProvider" Tipo="System.String">SqlServer</Propiedad>
        <Propiedad Nombre="Origen de datos de RdbConnection" Tipo="System.String">instancia de serveractual real</Propiedad>
        <Propiedad Nombre="Catálogo inicial de RdbConnection" Tipo="System.String">catálogo inicial real</Propiedad>
        <Propiedad Nombre="RdbConnection seguridad integrada" Tipo="System.String">SSPI</Propiedad>
        <Propiedad Nombre="Agrupación de RdbConnection" Tipo="System.String">falso</Propiedad>

        <!-- Estos son los valores de clave: -->
        <Propiedad Nombre="ID de usuario de RdbConnection" Tipo="System.String">unEAL ID de usuario</Propiedad>
        <Propiedad Nombre="RdbConnection contraseña" Tipo="System.String">Contraseña actual</Propiedad>
        <Propiedad Nombre="RdbConnection Trusted_Connection" Tipo="System.String">falso</Propiedad>

      </Propiedades>
    </LobSystemInstance>
  </LobSystemInstances>

No es una mejor práctica, pero es útil para una configuración rápida y sencilla para la prueba. Esto era sorprendentemente difícil de averiguar. Nunca encontré un ejemplo funcional con palabras clave de búsqueda:

  • ADF incrustado ID de usuario y contraseña
  • incrustar el id de usuario y contraseña en adf
  • incrustar el id de usuario y contraseña en bdc de adf
  • cartilla de bdc de SharePoint
  • SharePoint incrustar id de usuario y contraseña en adf

</final>

Suscribirse a mi blog.