Primeira demão de fundamentos de segurança do SharePoint / Evitar as armadilhas comuns

ATUALIZAÇÃO 12/18/07: Consulte o artigo de Paul Liebrand para algumas consequências técnicas de remover ou modificar os nomes de grupo padrão (Consulte também o seu comentário abaixo).

Visão geral:

Segurança do SharePoint é fácil de configurar e gerenciar. No entanto, Ele provou para ser difícil para alguns administradores pela primeira vez para realmente envolver suas mãos em torno dela. Não só isso, Eu vi alguns administradores chegar a um entendimento perfeito na segunda-feira só para tê-la perdido até sexta-feira porque não tinham que fazer alguma configuração no tempo intermediárias. (Eu admito que tem este problema me). Esta entrada de blog espero que fornece uma útil cartilha de segurança do SharePoint e aponta para algumas práticas recomendadas de configuração de segurança.

Nota importante:

Esta descrição baseia-se fora da caixa de segurança do SharePoint. Minha experiência pessoal é orientada em torno de MOSS, então pode haver algumas coisas específicas do MOSS, Mas creio que é preciso para WSS. Espero que ninguém ver quaisquer erros ou omissões indic que nos comentários ou correio eletrónico a mim. Eu vou fazer correções post pressa.

Fundamentos:

Para efeitos desta visão geral, há quatro aspectos fundamentais para a segurança: usuários/grupos, objetos de segurança, herança e níveis de permissão.

Usuários e grupos quebrar para baixo para:

  • Usuários individuais: Puxado de active directory ou criado diretamente no SharePoint.
  • Grupos: Mapeada diretamente do active directory ou criado no SharePoint. Grupos são uma coleção de usuários. Grupos são globais em um conjunto de sites. Eles nunca "atados" a um objeto específico.

Objetos de segurança quebrar para baixo pelo menos:

  • Sites
  • Bibliotecas de documentos
  • Itens individuais em listas e bibliotecas de documentos
  • Pastas
  • Várias configurações de BDC.

Há outros objetos protegíveis, mas você começa a foto.

Níveis de permissão: Um pacote de granulado / direitos de acesso de baixo nível que incluem coisas como criar/ler/apagar entradas nas listas.

Herança: Por padrão entidades herdam as configurações de segurança de seu objeto contendo. Subsites herdam a permissão de seu pai. Bibliotecas de documentos herdam de seu site. Assim por diante e assim por diante.

Usuários e grupos se relacionam a objetos protegidos através de níveis de permissão e herança.

As regras de segurança mais importantes para compreender, Ever 🙂 :

  1. Grupos são simplesmente a coleções de usuários.
  2. Grupos são globais dentro de um conjunto de sites (ou seja. não há nenhuma coisa como um grupo definido a nível local).
  3. Nome do grupo não obstante, grupos não, em e de si, ter qualquer nível específico de segurança.
  4. Grupos têm segurança no contexto de um objeto protegível específico.
  5. Você pode atribuir diferentes níveis de permissão para o mesmo grupo para cada objeto de segurança.
  6. Diretivas de aplicativo Web superam tudo isso (Veja abaixo).

Os administradores de segurança perdidos em um mar de Listagens de grupo e usuário podem sempre contar com estes axiomas para gerenciar e entender a sua configuração de segurança.

Armadilhas comuns:

  • Nomes de grupo implicam falsamente a permissão: Fora da caixa, SharePoint define um conjunto de grupos cujos nomes implicam um nível inerente de segurança. Considerar o grupo "Colaborador". Um desconhecido com segurança SharePoint pode bem Olha esse nome e assumir que qualquer membro desse grupo pode "contribuir" para qualquer site/lista/biblioteca no portal. Isso pode ser verdade, mas não porque o nome do grupo é "colaborador". Isto só é verdade fora da caixa, porque o grupo proporcionou um nível de permissão que permite que eles para adicionar/editar/excluir conteúdo no site da raiz. Por meio de herança, os colaboradores"" grupo também pode adicionar/editar/excluir conteúdo em cada subsite. "Infiltrações" a cadeia de herança e alterar o nível de permissão de um subsite tal que os membros do chamado "contribuinte" Grupo não pode contribuir em todos os, mas apenas ler (por exemplo). Isso não seria uma boa idéia, Obviamente, uma vez que seria muito confuso.
  • Grupos não são definidos no nível de um site. É fácil de ser confundido com a interface do usuário. A Microsoft fornece um link conveniente para gerenciamento de usuário/grupo através "pessoas e grupos do site, todas as" link. É fácil acreditar que quando eu estou no site "xyzzy" e criar um grupo através pessoas do xyzzy e grupos link que acabou de criar um grupo que só existe no xyzzy. Isso não é o caso. Na verdade, eu criei um grupo para a coleção de todo o site.
  • Associação de grupos não variam por local (ou seja. é o mesmo em todos os lugares que o grupo é usado): Considere o grupo "proprietário" e dois sites, "HR" e "Logística". Seria normal pensar que dois indivíduos separados possuiria esses sites — um proprietário de HR e uma logística. A interface do usuário torna mais fácil para um administrador de segurança danificar este cenário. Se não te conhecesse, Pode acessar os links de pessoas e grupos através do site do HR, Selecione os proprietários"" Grupo e adicionar meu dono HR ao grupo. Um mês depois, Logística vem na linha. Ter acesso a pessoas e grupos a partir do site da logística, Adicionar a puxar para cima os proprietários"" Grupo. Eu vejo o proprietário HR lá e removê-la, pensando que estou tirando ela de proprietários na área de logística. Na verdade, Estou tirando ela do grupo global de proprietários. Hilaridade segue.
  • Na falta de nome grupos com base em funções específicas: Os aprovadores"" o grupo é um exemplo perfeito. O que pode a membros de aprovar este grupo? Onde eles possam aprová-lo? Eu realmente quero departamento de logística de pessoas para ser capaz de aprovar documentos RH? Claro que não. Sempre grupos de nome com base em seu papel dentro da organização. Isso reduzirá o risco de que o grupo é atribuído um nível de permissão inadequado para um determinado objeto protegível. Grupos de nome com base na sua função pretendida. No cenário anterior HR/logística, Eu deveria ter criado dois novos grupos de: "Proprietários de HR" "proprietários de logística e" e atribuir níveis de permissão sensata para cada um e a quantidade mínima necessária para os usuários a fazer o seu trabalho.

Outras referências úteis:

Se você fez isso agora:

Por favor, deixe-me saber a sua opinião através dos comentários ou me enviar e-mail. Se você sabe outras boas referências, por favor, faça o mesmo!

Technorati Tags:

Rápido e fácil: Criar uma Web Part de exibição de dados (DVWP)

Há uma riqueza de informações sobre o WSS a grande 3.0 Web Part de exibição de dados (DVWP) na web de várias fontes. No entanto, Eu achei que fosse surpreendentemente difícil de encontrar informações sobre este primeiro passo básico. Aqui está um outro artigo no "rápido e fácil" série de enfrentá-lo.

Siga estas etapas para criar uma web part de exibição de dados (DVWP). Eles são baseados em uma "anúncios" Web part, mas se aplicam a maioria das listas.

  1. Criar uma web part de anúncios e adicioná-lo a um site.
  2. Abra o site no SharePoint Designer.
  3. Abrir default. aspx do site.
  4. Selecione a web part de anúncios e com o botão direito.
  5. No menu de contexto, Selecione "converter para XSLExibição de dados de T".

SharePoint Designer avisa que este site agora é personalizado a partir de sua definição de site. Isso não é necessariamente ruim, mas há implicações importantes (desempenho, atualização, outros) que estão além do escopo deste pequeno "rápido e fácil" entrada. Para obter mais informações sobre este assunto, Eu recomendo os dois livros here assim como a pesquisa de Internet favorita.

Confirmar que você fez isso corretamente:

  1. Feche e reabra o navegador da web (para evitar que acidentalmente re-postagem original "adicionar uma nova web part").
  2. Selecione seta a web part drop-down e escolha "Modificar Web Part compartilhada" no menu.
  3. O painel de ferramenta se abre para a direita.
  4. O painel foi alterado de seus habituais definir opções para esta:
imagem

“Não é possível obter a propriedade de coluna do esquema de lista da lista do SharePoint” — Descrição/equivaleria a

Nesta semana, Nós finalmente reproduzido um problema que tinha sido relatado por um usuário remoto: Quando ela tentou exportar o conteúdo de uma lista para o excel, as coisas parecem começar a trabalhar, mas, em seguida, o Excel iria aparecer um erro: "Não pode ter a propriedade de coluna do esquema de lista da lista do SharePoint". Ela estava correndo de escritório 2003, Windows XP e conectar a MOSS.

Eu procurei a internete e vi algumas especulações, mas nada 100% definitivo. Portanto, Este post.

O problema: Exportando uma vista para excel que contém uma data (Data = o tipo de dados da coluna).

O que funcionou para nós: Converter a data para "uma única linha de texto". Em seguida, convertê-lo para uma data.

Isso resolveu. Foi um prazer ver que a conversão funcionou, na verdade. Foi bastante nervoso que converter as coisas dessa forma poderia falhar, Mas não foi assim.

Esse bug foi lançada uma sombra enorme sobre o tipo de dados data na mente do cliente, Então, vamos procurar uma resposta definitiva da Microsoft, e espero que vou postar e atualizar aqui no próximo período curto de tempo com suas informações de correcção e de resposta oficiais.

Outras referências:

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

<fim>

Subscreva ao meu blog.

Technorati Tags: ,

Rápido e simples: Envie um e-mail com hiperlink incorporado a partir de fluxo de trabalho do SharePoint Designer

Uma ou duas vezes mês, alguém postar uma pergunta do Fórum: "Como para incluir hiperlinks URL que são clicável de um email do SharePoint Designer?"

Sem mais comentários: (bem, na verdade, há ainda uma observação após a imagem):

imagem

Becky Isserman segue-se com uma explicação útil sobre como incorporar um link a um item no email: 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

Novo lançamento: Extensões de fluxo de trabalho do SharePoint Designer (funções de manipulação de String)

ATUALIZAÇÃO: Veja aqui para meus pensamentos em comercializar este projeto: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Estive ocupado trabalhando no meu projeto do Codeplex, que atualmente está focado em fornecer string extensões de manipulação para fluxos de trabalho criados por meio do SharePoint Designer.

Veja aqui para detalhes:

Projeto home: http://www.codeplex.com/spdwfextensions

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

Versão 1.0 inclui os seguintes novos recursos:

Função Descrição (Se não mesmo como função do .net)
Num-entradas() Retorna as números "entradas" em uma seqüência de acordo com um delimitador especificado.

Por exemplo: Num-entradas em uma seqüência de caracteres "a,b,c" com delimitador"," = 3.

Entrada() Retorna o enésimo token em uma seqüência de acordo com um delimitador especificado.
Comprimento Length
Substituir() Replace()
Contém() String. Contains()
Retorna a palavra "verdadeiro" ou a palavra "falso".
Substring(Início) Substring(Início)
Substring(Início,comprimento) Substring(Início,comprimento)
ToUpper() String. ToUpper()
ToLower() String. ToLower()
StartsWith() StartsWith()
Retorna a palavra "verdadeiro" ou a palavra "falso".
EndsWith() EndsWith()
Retorna a palavra "verdadeiro" ou a palavra "falso".

Um erro de execução BDC explicado

Eu causou um erro BDC nesta semana que se manifestou na interface do usuário e no 12 log de colméia em tempo de execução.

Primeira, isso apareceu na interface do usuário:

Não foi possível localizar campos para inserir todos os valores de identificador para executar corretamente uma SpecificFinder MethodInstance com nome … Certifique-se de que parâmetros de entrada tem TypeDescriptors associado com cada identificador definido para esta entidade.

Aqui está uma captura de tela:

clip_image001

Eu também poderia causar essa mensagem apareça no 12 log de colméia será (usando meu high-tech-don't-try-this-at-home patenteado "erros misteriosos" Método):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C dados de negócio do SharePoint Portal Server 6q4x alta exceção em BusinessDataWebPart.OnPreRender: System. InvalidOperationException: O valor do identificador ”, do tipo ”, é inválido. Valor de identificador esperado do tipo 'System. String'. em Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objeto[] subIdentifierValues, LobSystemInstance lobSystemInstance) em Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entidade de entidade, Objeto[] userValues, LobSystemInstance lobSystemInstance) em Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) em Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() em Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Eu procurei e encontrei algumas pistas na Fórum do MSDN, Mas eles não foram suficientes para eu entender o que estava fazendo errado. Eu assisti um webcast por Ted Pattison que meu companhia tem extra disponível em um servidor e veio a perceber o meu problema.

No meu ADF, Estou conectando a um banco de dados SQL como mostrado:

            <Propriedade Nome="RdbCommandText" Tipo="System.">
              <![CDATA[
                SELECIONE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAÍS, ADDRESS1, ENDEREÇO2, 3, ADDRESS4, CIDADE, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      CONDADO DE, ESTADO, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFONE, EXTENSÃO, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW com (NOLOCK)
                ONDE
                  (SETID <> 'COMPARTILHAMENTO') and
                  (baixa(CARRIER_ID) >= baixa(@MinId)) and
                  (baixa(CARRIER_ID) <= baixa(@MaxId)) and
                  (baixa(DESCR) COMO baixa(@InputDescr))
                ]]>
            </Propriedade>

Eu estava desde o SQL de uma pessoa DBA e eu sou dado a entender que é um especiais vista que eles criaram só para mim. A chave exclusiva lá é CARRIER_ID.

Aqui é o inseto que apresentei:

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

Em algum lugar ao longo da linha, Eu tinha conseguido confundir-me sobre o significado de <Identificadores de> e acrescentou DESCR, mesmo que não é na verdade um identificador. Eu tirei DESCR o conjunto de identificadores e presto! Deu tudo.

Espero que isso poupe alguma dor de alguém 🙂

Technorati Tags: , , ,

Você não pode bater o alcance do SharePoint

Durante os últimos dois dias, Já participei de duas reuniões durante as quais apresentamos os resultados de um projeto do SharePoint. O CIO e a sua equipa juntou-se a primeira reunião. Isso é padrão e não especialmente notáveis. O departamento de ti está obviamente envolvido em uma implantação de empresa de qualquer projeto de tecnologia. A segunda reunião expandida para incluir um Valeriano. de marketing, vários diretores representando HR, Logística, De fabricação, Capital de projetos, Qualidade, Comprar, Desenvolvimento corporativo e outros departamentos (alguns dos quais não estavam diretamente envolvidos na fase atual). É um público muito amplo.

Na minha vida anterior, Trabalhei principalmente em projetos ERP e CRM. Ambos têm um domínio de solução bastante ampla, mas não tão amplo como o SharePoint. Para ser plenamente realizados, Projetos do SharePoint legitimamente e necessariamente atingem em cada canto e recanto de uma organização. Quantas outras soluções empresariais têm que tipo de alcançar? Não há muitos.

SharePoint, claramente, representa uma enorme oportunidade para aqueles de nós sorte de estar neste espaço. Ele fornece uma grande oportunidade de técnica (que de alguma forma está ligado a sua cabeça here em "Tecnologias você deve dominar"). Mas ainda melhor, SharePoint nos expõe a uma extensa e ampla gama de processos de negócio através destes compromissos. Quantos especialistas em CRM trabalham com o lado de fabricação da empresa? Quantos consultores ERP trabalham com recursos humanos na aquisição de talentos? SharePoint excede os dois.

Como qualquer coisa, não é perfeito, mas é um danado de bom lugar para ser.

Pelo amor de [Preencha seu mais amado sendo pessoa/superior], Não mude o ' título’ coluna do site.

Sobre o Fóruns de SharePoint, ocasionalmente, alguém pergunta sobre "mudar o rótulo do título" ou sobre "remover título de listas".

Linha inferior: Não faça isso!

Infelizmente, a interface do usuário permite uma mudança unidirecional desse rótulo de coluna como mostrado:

imagem

Título é uma coluna que está associada com o Item"" tipo de conteúdo. Muitos, muitos, muitos CT usa esta coluna e se você alterá-lo aqui, -ondulações por todo lado. Há uma boa chance que você não pretendia que isso acontecesse. Você provavelmente estava pensando para si mesmo, "Eu tenho uma lista de pesquisa personalizada e ' título’ Não faz sentido como um nome de coluna, Então eu vou alterá-lo para ' código de Status’ e adicionar uma coluna de descrição." Mas se você segue com esse pensamento e renomear ' título’ 'Código de Status', título de cada lista. (incluindo bibliotecas de documentos) alterações ao código de Status"" e você provavelmente Não queria que isso acontecesse.

O verdadeiro problema é que se trata de uma mudança de sentido única. "Sabe que a interface do usuário" esse título"" é uma palavra reservada. Assim, Se você tentar alterar o código de Status"" volta para o "Título", Isso impedirá que você e agora você pintou-se em um canto using paint that never dries 🙂

Então o que acontece se você já mudou? Eu não vi a resposta que todos queremos, que é um método simples e fácil mudar o rótulo de volta ao 'Título'. Agora, o melhor conselho é mudá-lo para algo como "Doc/Item título". Isso é um rótulo genérico o suficiente que não pode ser demasiado chocante para os usuários.

Tenho algumas outras idéias que estão na minha lista de coisas para pesquisa:

  • Entre em contato com a Microsoft.
  • Fazer algo com o modelo de objeto, Talvez em conjunto com uma característica.
  • Descobrir o esquema de banco de dados e atualizar manualmente SQL. (Você deve contatar a Microsoft antes de fazer isso, embora; Isso provavelmente irá anular o seu contrato de suporte).

Se alguém sabe como resolver isso, por favor, poste um comentário.

Atualização de fim de tarde, 11/15: Encontrei este link que descreve um método para criar um tipo de lista que não tem um coluna de título: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF e seu amigo, CDATA

Tenho notado um estranho e desnecessário mão-codificação de RdbCommandText em alguns exemplos (incluindo documentação do MSDN).

Eu queria salientar aos recém-chegados para BDC que comandos podem ser empacotados dentro de uma tag CDATA no seu natural"" formulário. Assim, Esta construção estranha:

<Propriedade Nome="RdbCommandText" Tipo="System.">
SELECT dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
ONDE (ID &gt;= @MinId) E (ID &lt;= @MaxId)
</Propriedade>

pode ser melhor representado desta forma:

<Propriedade Nome="RdbCommandText" Tipo="System.">
<![CDATA[
SELECT dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
ONDE (ID >= @MinId) E (ID <= @MaxId)
]]>
</Propriedade>

</fim>

BDC Primer

Introdução à BDC

Exemplo funcional: BDC ADF que se conecta ao banco de dados SQL com incorporado usuário id e senha

Eu precisava para conectar a um banco de dados SQL via BDC MOSS. Para fins de teste/POC, Eu queria incorporar o SQL conta usuário id e senha no ADF. Começando com Este modelo (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Eu criei um ADF que se conecta a uma instância específica do SQL server e registra com um id de usuário específico e senha e mostrado neste trecho:

  <LobSystemInstances>
    <LobSystemInstance Nome="ClaimsInstance">
      <Propriedades>
        <Propriedade Nome="AuthenticationMode" Tipo="System.">PassThrough</Propriedade>
        <Propriedade Nome="DatabaseAccessProvider" Tipo="System.">SqlServer</Propriedade>
        <Propriedade Nome="Fonte de dados RdbConnection" Tipo="System.">instância de serveractual real</Propriedade>
        <Propriedade Nome="Catálogo de RdbConnection inicial" Tipo="System.">catálogo inicial real</Propriedade>
        <Propriedade Nome="RdbConnection integrado de segurança" Tipo="System.">SSPI</Propriedade>
        <Propriedade Nome="RdbConnection pool" Tipo="System.">falso</Propriedade>

        <!-- Estes são os valores chaves: -->
        <Propriedade Nome="ID de usuário RdbConnection" Tipo="System.">umaReal ID de usuário</Propriedade>
        <Propriedade Nome="Senha RdbConnection" Tipo="System.">real senha</Propriedade>
        <Propriedade Nome="RdbConnection Trusted_Connection" Tipo="System.">falso</Propriedade>

      </Propriedades>
    </LobSystemInstance>
  </LobSystemInstances>

Não é uma prática recomendada, Mas é útil para uma configuração rápida e simples para testes. Isso foi surpreendentemente difícil de descobrir. Eu nunca encontrei um exemplo funcional com Pesquisar palavras-chave:

  • ADF incorporado a ID de usuário e senha
  • incorporar a id de usuário e senha no adf
  • incorporar a id de usuário e senha no adf bdc
  • cartilha de bdc do SharePoint
  • SharePoint incorporar a id de usuário e senha no adf

</fim>

Subscreva ao meu blog.