SharePoint säkerhet Fundamentals Primer / Undvika vanliga fallgropar

UPPDATERING 12/18/07: Se Paul Liebrand artikel för några tekniska konsekvenser av att ta bort eller ändra gruppnamn standard (se hans kommentar nedan samt).

Översikt:

SharePoint-säkerhet är lätt att konfigurera och hantera. Men, Det har visat sig vara svårt för vissa första gången administratörer att verkligen Linda sina händer runt den. Inte bara det, Jag har sett några administratörer komma till en perfekt förståelse på måndag bara för att ha förlorat det genom fredag eftersom de behövde inte göra någon konfiguration i den mellanliggande tiden. (Jag erkänna att jag har detta problem jag själv). Denna bloggpost förhoppningsvis ger en användbar SharePoint security primer och pekar mot några metodtips för konfiguration.

Viktigt att notera:

Denna beskrivning är baserad på ur lådan SharePoint security. Min personliga erfarenhet är orienterade kring mossa så det kan vara lite mossa specifika saker här, men jag tror det är exakt för WSS. Jag hoppas att någon ser eventuella fel eller utelämnanden kommer att påpeka det i kommentarer eller maila mig. Jag ska göra korrigeringar post brådska.

Grunderna:

Vid tillämpningen av denna översikt, Det finns fyra grundläggande aspekter på säkerhet: användare/grupper, objekt, behörighetsnivåer och arv.

Användare och grupper bryta ner till:

  • Enskilda användare: Drog från active directory eller skapade direkt i SharePoint.
  • Grupper: Mappade direkt från active directory eller skapade i SharePoint. Grupper är en samling av användare. Grupper är globala i en webbplatssamling. De är aldrig "bundna" till specifika objekt.

Objekt bryta ner till minst:

  • Platser
  • Dokumentbibliotek
  • Enskilda objekt i listor och dokumentbibliotek
  • Mappar
  • Olika BDC-inställningar.

Det andra objekt, men du får bilden.

Behörighetsnivåer: En bunt av granulat / låg nivå åtkomsträttigheter som inkluderar sådana saker som skapa/läsa/ta bort poster i listor.

Arv: Som standard ärver enheter säkerhetsinställningar från deras som innehåller objekt. Underwebbplatser ärver behörighet från deras överordnade. Dokumentbibliotek ärver från deras webbplats. Och så vidare.

Användare och grupper relaterar till objekt via behörighetsnivåer och arv.

De viktigaste säkerhetsreglerna att förstå, Någonsin 🙂 :

  1. Grupper är helt enkelt samlingar av användare.
  2. Grupper är globala inom en webbplatssamling (dvs. Det finns inget sådant som en grupp som definierats på en webbplatsnivå).
  3. Gruppens namn inte motstå, grupper inte, i och för sig, har någon särskild nivå av säkerhet.
  4. Grupper har säkerhet inom ramen för ett specifikt objekt.
  5. Du kan tilldela olika behörighetsnivåer till samma grupp för varje objekt.
  6. Web ansökan politik trumf allt detta (se nedan).

Säkerhetsadministratörer vilse i ett hav av användare och användargrupper listor kan alltid lita på dessa axiom att hantera och förstå deras säkerhetskonfiguration.

Vanliga fallgropar:

  • Namn innebär falskeligen tillstånd: Ur lådan, SharePoint definierar en uppsättning grupper vars namn antyda en inneboende säkerhetsnivå. Anser gruppen "Bidragsgivare". En obekant med SharePoint security kanske titta på det namnet och antar att varje medlem i gruppen kan "bidra" till någon webbplats/lista/bibliotek i portalen. Det kan vara sant men inte för att gruppens namn råkar vara "bidragsgivare". Detta gäller endast ur lådan eftersom gruppen har lämnats en behörighetsnivå som ger dem möjlighet att lägga till/redigera/radera innehållet på rotwebbplatsen. Genom arv, "bidragsgivarna" gruppen kan också lägga till/redigera/radera innehållet på varje underwebbplats. Man kan "bryta" i arvskedjan och ändrar behörighetsnivån för en underwebbplats så att medlemmar av den så kallade "bidragsgivaren" grupp inte kan bidra på alla, men bara läsa (till exempel). Detta skulle inte vara en bra idé, uppenbarligen, eftersom det skulle vara mycket förvirrande.
  • Grupperna definieras inte på en webbplatsnivå. Det är lätt att förväxla med användargränssnittet. Microsoft tillhandahåller en bra länk till användare/grupp förvaltning via varje webbplats "människor och grupper" länk. Det är lätt att tro att när jag är på plats "xyzzy" och jag skapa en grupp via xyzzy's människor och grupper länk som jag har just skapat en grupp som bara finns på xyzzy. Så är inte fallet. Jag har faktiskt skapat en grupp för hela webbplatssamlingen.
  • Grupper medlemskap varierar inte webbplats (dvs. Det är samma överallt gruppen används): Anser gruppen "ägare" och två platser, "HR" och "Logistik". Det skulle vara normalt att tror att två separata individer skulle äga dessa webbplatser — en HR och en logistik ägare. Användargränssnittet gör det enkelt för en säkerhetsadministratör misshandla detta scenario. Om jag inte visste bättre, Jag kan komma åt de personer och grupper länkar via webbplatsen HR, Välj "ägarna" grupp och lägga till min HR ägare till gruppen. En månad senare, Logistik kommer på rad. Jag åt personer och grupper från webbplatsen logistik, Lägg till dra upp "ägarna" grupp. Jag se HR ägare det och ta bort henne, tänker att jag är att ta bort henne från ägarna på webbplatsen logistik. I själva verket, Jag är att ta bort henne från den globala gruppen ägare. Munterhet följer.
  • Underlåta att namnet grupper baserat på specifika roll: "Godkännare" gruppen är ett perfekt exempel. Vad kan medlemmar i denna grupp Godkänn? Där kan de godkänner det? Vill jag verkligen människor logistikavdelning för att kunna godkänna HR dokument? Naturligtvis inte. Alltid namn grupper baserat på deras roll inom organisationen. Detta minskar risken att gruppen tilldelats en olämplig behörighetsnivå för ett visst objekt. Namn grupper baserat på deras avsedda roll. I det föregående scenariot som HR/logistik, Jag borde ha skapat två nya grupper: "HR ägare" och logistik ägare"" och tilldela förnuftiga behörighetsnivåer för varje och det minsta belopp som krävs för dessa användare att göra sitt jobb.

Andra användbara referenser:

Om du har gjort så här långt:

Låt mig veta dina tankar via kommentarerna eller maila mig. Om du vet andra goda referenser, gör samma!

Technorati Tags:

Snabb och enkel: Skapa en datavywebbdel (DVWP)

Det finns en uppsjö av bra information på WSS 3.0 Datavywebbdelen (DVWP) på webben från flera källor. Men, Jag fann det vara förvånansvärt svårt att hitta information om detta första mycket grundläggande steg. Här är en annan artikel i "snabb och lätt" serien ta det.

Följ dessa steg för att skapa en datavywebbdel (DVWP). De bygger på en "meddelanden" webbdelen, men gäller de flesta listor.

  1. Skapa en webbdel för meddelanden och lägga till en webbplats.
  2. Öppna webbplatsen i SharePoint Designer.
  3. Öppna webbplatsens default.aspx.
  4. Markera meddelanden webbdelen och högerklicka på.
  5. På snabbmenyn, Välj "Konvertera till XSLT Data View".

SharePoint Designer meddelar dig att denna webbplats är nu anpassat från dess webbplatsdefinitionen. Det är inte nödvändigtvis dåligt, men det finns viktiga konsekvenser (prestanda, uppgradera, andra) som är utanför ramen för denna lilla "snabb och lätt" posten. Att få mer information om detta ämne, Jag rekommenderar båda böckerna Här och din favorit Internetsökning.

Bekräfta att du gjorde det rätt:

  1. Stänga och åter öppna webbläsaren (att undvika misstag Återläggning det ursprungliga "Lägg till en ny webbdel").
  2. Markera webbdelens pilen listrutan och välj "Ändra delad webbdel" från menyn.
  3. Panelen verktyg öppnas till höger.
  4. Panelen har ändrats från sin vanliga ange alternativ till detta:
bild

“Går inte att hämta egenskapen lista schemat kolumn från SharePoint-listan” — Beskrivning/genvägar

Denna vecka, vi slutligen återges ett problem som hade rapporterats av en fjärranvändare: När hon försökte exportera innehållet i en lista till excel, saker verkar börja arbeta, men sedan Excel skulle dyka upp ett fel: "Kan inte få kolumnegenskapen listan schema från SharePoint-listan". Hon var igång office 2003, Windows XP och ansluter till MOSS.

Jag sökte på Internet och såg vissa spekulationer men ingenting 100% slutgiltiga. Därav, Det här inlägget.

Problemet: Exportera en vy till excel som innehåller ett datum (datum = datatypen för kolumnen).

Vad som fungerade för oss: Konvertera datum till en "enskild rad med text". Sedan, konvertera den till ett datum.

Som löste det. Det var trevligt att se att omvandlingen arbetat, faktiskt. Det var ganska nervös att konvertera saker detta sätt skulle misslyckas, men det gjorde inte.

Detta fel har kastat en stor skugga över datatypen Datum i klientens sinne, så vi kommer att söka ut ett definitivt svar från Microsoft och förhoppningsvis jag kommer post och uppdatera här under nästa kort period av tid med deras officiella svar och snabbkorrigeringen information.

Andra referenser:

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

<slutet>

Prenumerera på min blogg.

Technorati Tags: ,

Snabb och enkel: Skicka ett e-postmeddelande med inbäddade hyperlänk från SharePoint Designer arbetsflöde

En eller två gånger månad, någon inlägg en forum-fråga: "Hur jag inkludera hyperlänkar till URLS som är klickbara från ett e-postmeddelande med SharePoint Designer?"

Presenteras utan ytterligare kommentarer: (väl, faktiskt finns det ytterligare kommentar efter bilden):

bild

Becky Isserman följer upp med en bra förklaring om hur du bäddar in en länk till ett objekt i e-: 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

Ny release: SharePoint Designer arbetsflöde Extensions (manipulering strängfunktioner)

UPPDATERING: Se här för mina tankar om kommersialisera detta projekt: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Jag har varit upptagen i min Codeplex-projektet som närvarande fokuserar på att tillhandahålla strängen manipulation tillägg till arbetsflöden som skapats via SharePoint Designer.

För mer information se här:

Projekt hem: http://www.codeplex.com/spdwfextensions

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

Version 1.0 innehåller följande nya funktioner:

Funktionen Beskrivning (om inte samma som .net funktion)
NUM-transaktioner() Returnerar tal "poster" i en sträng enligt angivna avgränsare.

Till exempel: NUM-transaktioner i en sträng "en,b,c" med avgränsare"," = 3.

Posten() Returnerar den n: te token i en sträng enligt angivna avgränsare.
Längd String.length
Ersätt() String.Replace()
Innehåller() String.contains()
Returnerar ordet "true" eller ordet "false".
Delsträng(Starta) String.substring(Starta)
Delsträng(Starta,längd) String.substring(Starta,längd)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returnerar ordet "true" eller ordet "false".
EndsWith() String.EndsWith()
Returnerar ordet "true" eller ordet "false".

Ett BDC körningsfel förklaras

Jag orsakat en BDC fel denna vecka som visat sig på användargränssnittet och i den 12 bikupa Stock vid körning.

Första, Detta visades i användargränssnittet:

Kunde inte hitta fält för att infoga alla identifierare värdena för att korrekt utföra en SpecificFinder MethodInstance med namn … Kontrollera att indataparametrarna har typbeskrivare (TypeDescriptor) associerade med varje identifierare som definierats för denna entitet.

Här är en skärmdump:

clip_image001

Jag kan också orsaka detta meddelande att visas i den 12 bikupa stock på kommer (använder min patenterade high-tech-don't-try-this-at-home "mystiska fel" metoden):

11/14/2007 09:24:41.27 W3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x hög undantag i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Identifierarvärde ”, av typ ”, är ogiltig. Förväntade identifierarvärde av typen System.String. på Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhet enhet, Objekt[] userValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Visa desiredView) på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jag sökte runt och hittade några leads i den MSDN-forumet för, men de var inte nog för mig att förstå vad jag gjorde fel. Jag såg en webbsändning av Ted Pattison som min företaget har squirreled bort på en server och kom att inse mitt problem.

I min ADF, Jag ansluter till en SQL databas som visas:

            <Egenskapen Namn="RdbCommandText" Typ="System.String">
              <![CDATA[
                VÄLJ SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      LAND, ADRESS1, ADRESS2, ADDRESS3, ADDRESS4, STADEN, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, STATLIGA, POST-, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, EXTENSION, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG från dbo.PS_CARRIER_ID_VW med (nolock)
                DÄR
                  (SETID <> "DELA") och
                  (lägre(CARRIER_ID) >= lägre(@MinId)) och
                  (lägre(CARRIER_ID) <= lägre(@ MaxId)) och
                  (lägre(DESCR) SOM lägre(@InputDescr))
                ]]>
            </Egenskapen>

Jag lämnades det SQL från en DBA person och jag får att förstå att det är en särskilda Visa de skapade bara för mig. Den unika nyckeln det är CARRIER_ID.

Här är felet jag infört:

      <Kännetecken>
        <Identifierare Namn="CARRIER_ID" TypeName="System.String" />
        <Identifierare Namn="DESCR" TypeName="System.String" /> 
</Kännetecken>

Någonstans längs linjen, Jag hade lyckats förväxla mig själv över menande av <Kännetecken> och lagt till DESCR även om det inte är faktiskt en identifierare. Jag tog DESCR ur den identifierare set och presto! Det hela fungerade.

I hope this saves someone some grief 🙂

Technorati Tags: , , ,

Du kan inte slå SharePoint Reach

Under de senaste två dagarna, Jag har deltagit i två möten där vi presenterade resultaten av ett SharePoint-projekt. CIO och hans team gick det första mötet. Det är standard och inte särskilt anmärkningsvärt. IT-avdelningen är uppenbarligen inblandad i en enterprise utbyggnaden av någon teknik projekt. Det andra mötet utvidgas till att omfatta en V.P. från marknadsföring, flera regissörer som representerar HR, Logistik, Tillverkning, Kapital projekt, Kvalitet, Inköp, Företagsutveckling och andra avdelningar (varav en del var inte ens direkt involverade i den nuvarande fasen). Det är en väldig bred publik.

I mitt tidigare liv, Jag arbetat främst med affärssystem och CRM projekt. De båda har en ganska bred lösning domän men inte så bred som SharePoint. Realiseras fullt ut, SharePoint-projekt nå legitimt och nödvändigtvis in i alla vinklar och vrår i en organisation. Hur många andra företagslösningar har som typ av nå? Inte många.

SharePoint tydligt innebär en enorm möjlighet för oss turen att vara i detta utrymme. Det ger en stor teknisk möjlighet (som är på något sätt vände på huvudet Här under "Teknik måste du behärska"). Men ännu bättre, SharePoint utsätter oss till ett omfattande och brett utbud av affärsprocesser genom dessa åtaganden. Hur många CRM-specialister arbeta med tillverkningssidan av företaget? Hur många ERP konsulter arbetar med mänskliga resurser på talang förvärv? SharePoint överskrider dem båda.

Som allt, Det är inte perfekt, men det är en förbannat bra plats att vara.

For the love of [Fyll i din mest älskade personen/högre som], Ändra inte den "titel’ webbplatskolumn.

På den SharePoint Forum, någon frågar ibland om att "ändra etiketten för avdelning" eller om "borttagning titel från listor".

Nedersta raden: Gör det inte!

Tyvärr, användargränssnittet gör en enkelriktad förändring av denna kolumnetiketten som visas:

bild

Titeln är en kolumn som är associerad med artikeln"" innehållstyp. Många, många, många CTS använder denna kolumn och om du ändrar det här, det ripples ut överallt. Det finns en god chans att du inte hade för avsikt för att det ska ske. Du var nog tänka dig själv, "Jag har en anpassad uppslagslista och" titel’ bara meningsfullt inte som ett namn, så jag ska ändra det till "statuskod’ och lägga till en beskrivning kolumn." Men om du fullfölja den tanken och byta namn på ' titel’ att "statuskoden", varje lista avdelning (inklusive dokumentbibliotek) ändringar av "statuskod" och du förmodligen inte avser för att det ska hända.

Det verkliga problemet är att detta är en enkelriktad förändring. UI vet"" titeln"" är ett reserverat ord. Så, Om du försöker och ändra "statuskod" tillbaka till "Titel", Det hindrar dig och nu du har målat själv i ett hörn using paint that never dries 🙂

Så vad händer om du redan ändrat? Jag har inte sett svaret vi alla vill ha, vilket är en enkel och enkel metod att ändra etiketten tillbaka till 'Title'. Nu, det bästa råd är att ändra den till något liknande "Doc/artikel titel". Det är en tillräckligt generisk etikett som inte får alltför skärande för dina användare.

Jag har några andra idéer som är på min att-göra-lista över saker att forskning:

  • Kontakta Microsoft.
  • Göra något med objektmodellen, kanske tillsammans med en funktion.
  • Räkna ut databasschemat och manuellt uppdatera SQL. (Du bör kontakta Microsoft innan du gör detta men; Det kommer sannolikt att makulera supportavtalet).

Om någon vet hur man ska lösa detta, Vänligen skriv en kommentar.

Uppdatera sen eftermiddag, 11/15: Jag hittade denna länk som beskriver en metod för att skapa en typ av lista som inte har en avdelning kolumn: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF och din vän, CDATA

Jag har lagt märke till några besvärliga och onödiga handen-kodning av RdbCommandText i några exempel (inklusive MSDN-dokumentationen).

Jag ville påpeka för nykomlingar till BDC att kommandon kan förpackas i en CDATA-tagg i naturligt"" form. Så, denna besvärliga konstruktion:

<Egenskapen Namn="RdbCommandText" Typ="System.String">
Välj dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement från dbo.MCRS_SETTLEMENT
DÄR (ID &gt;= @ MinId) OCH (ID &LT;= @ MaxId)
</Egenskapen>

kan bättre representeras detta sätt:

<Egenskapen Namn="RdbCommandText" Typ="System.String">
<![CDATA[
Välj dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement från dbo.MCRS_SETTLEMENT
DÄR (ID >= @ MinId) OCH (ID <= @ MaxId)
]]>
</Egenskapen>

</slutet>

BDC Primer

Intro till BDC

Funktionella exempel: BDC ADF som ansluter till SQL-databas med inbäddade användar-id och lösenord

Jag behövde till tråd upp mossa till en SQL-databas via BDC. För testning/POC, Jag ville bädda in SQL-konto förbrukaren id och lösenord i den automatiska Dokumentmataren. Från och med den här mallen (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jag skapade en ADM som ansluter till en viss SQL server-instansen och loggar in med en viss användar-id och lösenord och visas i detta utdrag:

  <LobSystemInstances>
    <LobSystemInstance Namn="ClaimsInstance">
      <Egenskaper>
        <Egenskapen Namn="AuthenticationMode" Typ="System.String">Genomströmning</Egenskapen>
        <Egenskapen Namn="DatabaseAccessProvider" Typ="System.String">SqlServer</Egenskapen>
        <Egenskapen Namn="RdbConnection datakälla" Typ="System.String">faktiska serveractual instans</Egenskapen>
        <Egenskapen Namn="RdbConnection Initial Catalog" Typ="System.String">faktiska initial catalog</Egenskapen>
        <Egenskapen Namn="RdbConnection integrerad säkerhet" Typ="System.String">SSPI</Egenskapen>
        <Egenskapen Namn="RdbConnection sammanslagning" Typ="System.String">falskt</Egenskapen>

        <!-- Dessa är de viktigaste värdena: -->
        <Egenskapen Namn="RdbConnection användar-ID" Typ="System.String">enctual användar-ID</Egenskapen>
        <Egenskapen Namn="RdbConnection lösenord" Typ="System.String">faktiska lösenord</Egenskapen>
        <Egenskapen Namn="RdbConnection Trusted_Connection" Typ="System.String">falskt</Egenskapen>

      </Egenskaper>
    </LobSystemInstance>
  </LobSystemInstances>

Det är inte en bästa praxis, men det är användbart för en snabb och enkel konfiguration för testning. Detta var förvånansvärt svårt att räkna ut. Jag hittade aldrig en funktionell exempel med sökord:

  • ADF inbäddade användar-ID och lösenord
  • bädda in användar-id och lösenord i adf
  • bädda in användar-id och lösenord i adf bdc
  • SharePoint bdc primer
  • SharePoint bädda in användar-id och lösenord i adf

</slutet>

Prenumerera på min blogg.