SharePoint Security Fundamentals Primer / Undgå fælles faldgruber

OPDATERING 12/18/07: Se Paul Liebrand artikel for nogle tekniske konsekvenser af fjerne eller ændre standardnavnene på gruppe (se hans bemærkning nedenfor samt).

Oversigt:

SharePoint sikkerhed er let at konfigurere og administrere. Dog, Det har vist sig for at være svært for nogle første gang administratorer virkelig ombryde deres hænder omkring det.. Ikke kun det, Jeg har set nogle administratorer kommer til en perfekt forståelse på mandag kun at have mistet det af fredag, fordi de ikke behøvede at gøre enhver konfiguration i den mellemliggende tid. (Jeg indrømmer at have dette problem selv). Denne blogoptegnelse forhåbentlig giver en nyttig SharePoint sikkerhed primer og peger i retning af nogle sikkerhed konfiguration af bedste praksis.

Vigtig bemærkning:

Denne beskrivelse er baseret på ud af boksen SharePoint sikkerhed. Min personlige erfaring er orienteret omkring mos, så der kan være nogle MOSS specifikke ting her, men det forekommer mig nøjagtig for WSS. Jeg håber, at nogen ser fejl eller udeladelser vil påpege at, i kommentarer eller e-mail mig. Jeg vil foretage rettelser post hast.

Fundamentals:

Med henblik på denne oversigt, der er fire grundlæggende aspekter til sikkerhed: brugere/grupper, securable objekter, tilladelsesniveauer og arv.

Brugere og grupper bryde ned til:

  • Individuelle brugere: Trukket fra active directory eller skabt direkte i SharePoint.
  • Grupper: Tilknyttede direkte fra active directory eller oprettet i SharePoint. Grupper er en samling af brugere. Grupper er globale i en gruppe af websteder. De er aldrig "bundet" til et bestemt objekt.

Securable objekter bryde ned til mindst:

  • Websteder
  • Dokumentbiblioteker
  • Individuelle elementer på lister og dokumentbiblioteker
  • Mapper
  • Forskellige BDC-indstillingerne.

Der andre securable objekter, men du får billedet.

Tilladelsesniveauer: Et bundt af kornet / lavt niveau adgangsrettigheder, der omfatter sådanne ting som oprette/læse/slette poster i lister.

Arv: Objekter arver som standard sikkerhedsindstillinger fra deres indeholdende objekt. Underordnede websteder nedarver tilladelse fra deres forældre. Dokumentbiblioteker arver fra deres hjemmeside. Så videre og så videre.

Brugere og grupper vedrører securable objekter via tilladelsesniveauer og arv.

De vigtigste sikkerhedsregler for at forstå, nogensinde 🙂 :

  1. Grupper er simpelthen samlinger af brugere.
  2. Grupper er globale inden for en gruppe af websteder (dvs. der er ikke sådan noget som en gruppe, der er defineret på et webstedsniveau).
  3. Gruppenavnet ikke modstå, grupper ikke, i og for sig selv, har nogen bestemt sikkerhedsniveau.
  4. Grupper har sikkerhed i forbindelse med et bestemt objekt.
  5. Du kan tildele forskellige tilladelsesniveauer til den samme gruppe for hvert objekt.
  6. Web application politikker trumfe alt dette (Se nedenfor).

Sikkerhedsadministratorer tabt i et hav af gruppen og bruger lister kan altid stole på disse aksiomer at håndtere og forstå deres sikkerhedskonfiguration.

Fælles faldgruber:

  • Gruppenavne indebærer fejlagtigt tilladelse: Ud af boksen, SharePoint definerer et sæt af grupper hvis navne indebærer en iboende sikkerhedsniveau. Overveje gruppen "Bidragyder". En uvant med SharePoint sikkerhed kan godt kigge på dette navn og antage, at ethvert medlem af denne gruppe kan "bidrage" til ethvert websted/liste/bibliotek i portalen. Det kan være sandt, men ikke fordi gruppens navn sker for at være "bidragyder". Dette er kun rigtigt ud af kassen fordi gruppen har fået et tilladelsesniveau, der sætter dem i stand til at tilføje/redigere/slette indhold på rodwebstedet. Gennem arv, "bidragydere" Gruppen kan også tilføje/redigere/slette indholdet på hvert underordnet websted. Man kan "bryde" arven kæden og ændre tilladelsesniveauet for et underordnet websted sådan at medlemmer af den såkaldte "bidragyder" Gruppen kan ikke bidrage på alle, men kun læse (for eksempel). Dette ville ikke være en god idé, naturligvis, da det ville være meget forvirrende.
  • Grupper er ikke defineret på et webstedsniveau. Det er nemt at blive forvirret af brugergrænsefladen. Microsoft giver et praktisk link til bruger eller gruppe forvaltning via hver site "mennesker og grupper" link. Det er nemt at tro, at når jeg er på webstedet "xyzzy" jeg oprette en gruppe gennem xyzzy's folk og grupper link, jeg har lige oprettet en gruppe, som kun findes på xyzzy. Det er ikke tilfældet. Jeg har faktisk lavet en gruppe til hele gruppen af websteder.
  • Grupper medlemskab er ikke afhængig af hjemmeside (dvs. Det er den samme overalt benyttes gruppen): Overveje gruppen "ejer" og to websteder, "HR" og "Logistik". Det ville være normalt at tænke, at to separate enkeltpersoner ville eje disse websteder — en HR ejer og en logistik ejer. Brugergrænsefladen gør det nemt for en sikkerhedsadministrator at fejlhåndtere dette scenario. Hvis jeg ikke vidste bedre, Jeg kan få adgang til personer og grupper links via webstedet HR, Vælg "ejere" gruppe og tilføje min HR ejer til denne gruppe. En måned senere, Logistik kommer på linje. Jeg adgang til personer og grupper fra webstedet logistik, tilføje pull up "ejere" gruppe. Jeg ser HR ejeren der og fjerne hende, tænker at jeg fjerner hende fra ejere på webstedet logistik. Faktisk, Jeg fjerner hende fra gruppen globale ejere. Munterhed ensues.
  • Undlade at navnet grupper baseret på specifikke rolle: "Godkendere" Gruppen er et perfekt eksempel. Hvad kan medlemmer af denne gruppe Godkend? Hvor kan de godkende det? Vil jeg virkelig folk logistikafdeling at godkende HR dokumenter? Naturligvis ikke. Altid navn grupper baseret på deres rolle i organisationen. Dette vil reducere den risiko, at gruppen er tildelt en upassende tilladelsesniveauet for et bestemt objekt. Navnet grupper baseret på deres tiltænkte rolle. I det forrige HR/logistik scenarie, Jeg skal have lavet to nye grupper: "HR ejere" og "logistik ejere" og tildele fornuftige tilladelsesniveauer for hver og det minimumsbeløb, der kræves til disse brugere at gøre deres job.

Andre nyttige referencer:

Hvis du har gjort det så langt:

Lad mig vide dine tanker via kommentarer eller email mig. Hvis du kender andre gode referencer, venligst gøre det samme!

Technorati Tags:

Hurtig og nem: Oprette webdelen datavisning (DVWP)

Der er et væld af gode oplysninger på WSS 3.0 Webdelen datavisning (DVWP) på nettet fra flere kilder. Dog, Jeg fandt det at være overraskende svært at finde oplysninger på dette meget grundlæggende skridt. Her er en anden artikel i "hurtig og nem" serie til at løse det.

Følg disse trin for at oprette webdelen datavisning (DVWP). De er baseret på en "meddelelser" webdelen, men gælder for de fleste lister.

  1. Oprette en annonceringer webdelen og føje den til et websted.
  2. Åbne webstedet i SharePoint Designer.
  3. Åbn webstedets default.aspx.
  4. Vælg webdelen annonceringer og højreklik på.
  5. Af kontekstmenuen, Vælg "Konverter til XSLT datavisning".

SharePoint Designer giver dig besked at dette site er nu tilpasset fra dens webstedsdefinition. Det er ikke nødvendigvis dårligt, men der er stor betydning (ydeevne, opgradering, andre) der er uden for rammerne af denne lille "hurtig og nem" indrejse. Få flere oplysninger om dette emne, Jeg anbefaler begge bøger Her samt dine foretrukne Internet-søgning.

Bekræfte, at du gjorde det korrekt:

  1. Lukke og genåbne web gennemser (at undgå ved et uheld re-udstationering det oprindelige "Tilføj en ny webdel").
  2. Vælg den webdel pil henlægge-nede og vælge "Rediger delt webdel" fra menuen.
  3. Panelet værktøj åbner til højre.
  4. Panelet har ændret fra sin sædvanlige angive indstillinger til det:
billede

“Kan ikke få egenskaben for listeskemakolonnen fra SharePoint-listen” — Beskrivelse/arbejde-arounds

Denne uge, vi endelig gengivet et problem, der var blevet indberettet af en fjernbruger: Da hun forsøgte at eksportere indholdet af en liste til excel, ting synes at begynde at arbejde, men derefter Excel vil affyre oppe en fejl: "Can't get egenskaben for listeskemakolonnen fra SharePoint-listen". Hun kørte office 2003, Windows XP og etablerer forbindelse til MOSS.

Jeg søgte Internets og så nogle spekulationer men intet 100% endelige. Dermed, Dette indlæg.

Problemet: Eksporterer en visning til excel, indeholder en dato (dato = datatypen for kolonnen).

Hvad der virkede for os: Konvertere en dato til en "enkelt linje i teksten". Derefter, konvertere den tilbage til en dato.

Der løste det. Det var rart at se, at konverteringen arbejdet, faktisk. Det var helt nervøs for at konvertere ting på denne måde ville mislykkes, men det gjorde ikke.

Denne fejl har kastet en enorm skygge over dato-datatypen i kundens sind, så vil vi være opsøger et endeligt svar fra Microsoft og forhåbentlig jeg vil post og opdatere her i det næste kort periode med deres officielle svar og hotfix oplysninger.

Andre referencer:

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

<slutningen>

Abonner på min blog.

Technorati Tags: ,

Hurtig og enkel: Send en mail med integrerede hyperlink fra SharePoint Designer arbejdsprocessen

En gang eller to gange om måneden, nogen stillinger et forum spørgsmål: "Hvordan jeg medtage hyperlinks til URLs, der er klikbare fra et SharePoint Designer e-mail?"

Præsenteret uden yderligere kommentarer: (godt, faktisk er der yderligere kommentar efter billedet):

billede

Becky Isserman følger op med en god forklaring på hvordan man kan integrere en link til et element i e-mailen: 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

Nyudgivelse: SharePoint Designer arbejdsprocessen udvidelser (string manipulation funktioner)

OPDATERING: Se her for mine tanker om kommercialisering dette projekt: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Jeg har været travlt med at arbejde på min Codeplex projekt, der er i øjeblikket fokuseret på at levere string manipulation udvidelser til arbejdsprocesser oprettes via SharePoint Designer.

Se her for detaljer:

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

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

Version 1.0 indeholder følgende nye funktioner:

Funktion Beskrivelse (Hvis ikke samme som .net funktion)
NUM-poster() Returnerer de antal "poster" i en streng som pr en anførte afgrænsning.

For eksempel: NUM-poster i en streng "en,b,c" med afgrænser"," = 3.

Indrejse() Returnerer den n'te token i en streng som pr en anførte afgrænsning.
Længde String.Length
Erstat() String.Replace()
Indeholder() String.Contains()
Returnerer ordet "true" eller ordet "falsk".
Understreng(Start) String.Substring(Start)
Understreng(Start,længde) String.Substring(Start,længde)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returnerer ordet "true" eller ordet "falsk".
EndsWith() String.EndsWith()
Returnerer ordet "true" eller ordet "falsk".

En BDC-runtime error forklaret

Jeg lod en BDC-fejl i denne uge, der manifesterede sig på brugergrænsefladen og i den 12 hive log på kørselstidspunktet.

Første, denne dukkede op i brugergrænsefladen:

Der blev ikke fundet felter til at indsætte alle de id-værdier for at udføre en SpecificFinder MethodInstance med navnet korrekt … Sikre, at inputparametre har knyttet hver defineret for denne enhed id TypeDescriptors til.

Her er et skærmbillede:

clip_image001

Jeg kan også forårsage denne besked skal vises i den 12 hive log på vil (bruge min patenteret high-tech-don't-try-this-at-home "mystiske fejl" metode):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x høj undtagelse i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Id-værdi ”, af Type ”, er ugyldigt. Forventede id-værdi af typen 'System.String'. på Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhed enhed, Objekt[] userValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Se desiredView) på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jeg søgte rundt og fundet nogle fører i den MSDN forum, men de var ikke nok for mig at forstå, hvad jeg gjorde forkert. Jeg iagttog et webcast af Ted Pattison at min virksomheden har squirreled væk på en server og kom til at indse mit problem.

I min ADF, Jeg tilslutning til en SQL-database som vist:

            <Ejendom Navn="RdbCommandText" Type="System.String">
              <![CDATA[
                VÆLG SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      LAND, ADDRESS1, ADRESSE2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, STATEN, POST-, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, UDVIDELSE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG fra dbo.PS_CARRIER_ID_VW med (NOLOCK)
                HVOR
                  (SETID <> 'ANDEL') og
                  (lavere(CARRIER_ID) >= lavere(@MinId)) og
                  (lavere(CARRIER_ID) <= lavere(@MaxId)) og
                  (lavere(DESCR) GERNE lavere(@InputDescr))
                ]]>
            </Ejendom>

Jeg var forudsat at SQL fra en person, DBA og jeg får at forstå, at det er en særlige Se de skabt bare for mig. Den unikke nøgle der er CARRIER_ID.

Her er den fejl jeg introduceret:

      <Identifikatorer>
        <Id Navn="CARRIER_ID" TypeName="System.String" />
        <Id Navn="DESCR" TypeName="System.String" /> 
</Identifikatorer>

Et sted langs linjen, Jeg havde formået at forvirre mig over betydningen af <Identifikatorer> og tilføjet DESCR, selvom det ikke er ligefrem et id. Jeg tog DESCR ud af de identifikatorer og presto! Det hele fungerede.

Jeg håber, at dette sparer nogen nogle sorg 🙂

Technorati Tags: , , ,

Du kan ikke slog Sharepoint's Reach

I de sidste to dage, Jeg har deltaget i to møder som vi præsenteret resultaterne af et SharePoint projekt. CIO og hans hold sluttede sig til det første møde. Der er standard og ikke særligt bemærkelsesværdige. IT-afdelingen er naturligvis involveret i en enterprise udrulningen af enhver teknologi projekt. Det andet møde udvidet til at omfatte en V.P. fra marketing, flere bestyrelsesmedlemmer der repræsenterer HR, Logistik, Fremstilling af, Kapitalprojekter, Kvalitet, Køb, Virksomhedernes udvikling og andre afdelinger (hvoraf nogle var ikke selv direkte involveret i den nuværende fase). Det er en mægtig bredt publikum.

I mit tidligere liv, Jeg arbejdede primært på ERP- og CRM projekter. De begge har en temmelig bred løsning domæne, men ikke så bred som SharePoint. At være fuldt realiseret, SharePoint projekter nå legitimt og nødvendigvis ind i alle kroge og hjørner af en organisation. Hvor mange andre virksomhedsløsninger har der slags nå? Ikke mange.

SharePoint klart repræsenterer en kæmpechance for os heldige nok til at være i dette rum. Det giver en stor teknisk mulighed (der er en eller anden måde vendt på hovedet Her under "Teknologier du skal Master"). Men endnu bedre, SharePoint udsætter os for en omfattende og bred vifte af forretningsprocesser via disse engagementer. Hvor mange CRM specialister arbejder med fremstilling side af virksomheden? Hvor mange ERP konsulenter arbejder med menneskelige ressourcer på talent erhvervelse? SharePoint overstiger dem begge.

Gerne noget, Det er ikke perfekt, men det er en forbandet god sted at være.

Til kærlighed [Udfyld dine mest elskede person/højere bliver], ikke ændre den ' titel’ webstedskolonne.

På den SharePoint-forummer, nogen spørger lejlighedsvis om "Ændre etiketten på titel" eller om "fjernelse titel fra lister".

Bundlinjen: Ikke gøre det.!

Desværre, brugergrænsefladen giver mulighed for en ensidig ændring af at kolonneetiket som vist:

billede

Titlen er en kolonne, der er tilknyttet punktet"" indholdstype. Mange, mange, mange CTS bruger denne kolonne og hvis du ændrer det her, det risler ud overalt. Der er en god chance for at du ikke havde til hensigt at. Du var sandsynligvis tænker for dig selv, "Jeg har en brugerdefineret liste liste og ' titel’ bare giver ikke mening som et kolonnenavn, så jeg har tænkt mig at ændre det til "statuskode’ og tilføje en beskrivelse kolonne." Men hvis du følger på tanken og omdøbe ' titel’ at 'statuskode', hver liste titel (herunder dokumentbiblioteker) ændringer til "statuskode" og du sandsynligvis ikke havde til hensigt at.

Det virkelige problem er, at dette er en en-vejs ændring. UI ved"" "titlen" er et reserveret ord. Så, Hvis du prøver og ændre "statuskode" tilbage til "Titel", det vil forhindre dig og nu du har malet dig selv ind i et hjørne using paint that never dries 🙂

Så hvad sker der hvis du allerede har ændret det? Jeg har ikke set det svar vi ønsker alle, der er en enkel og nem metode til at ændre etiketten tilbage til 'Titel'. Lige nu, det bedste råd er at ændre det til noget lignende "Doc/Varenr titel". Det er en generisk nok etiket, der ikke kan være alt for disharmonisk til dine brugere.

Jeg har nogle andre idéer, som er på min to-do liste af ting at forskning:

  • Kontakt Microsoft.
  • Gøre noget med objektmodellen, måske i forbindelse med en funktion.
  • Finde ud af-databaseskemaet og manuelt opdatere SQL. (Du bør kontakte Microsoft før du gør dette selv; det vil sandsynligvis annullere din supportkontrakt).

Hvis nogen ved hvordan man kan løse dette, Skriv venligst en kommentar.

Opdatere sen eftermiddag, 11/15: Jeg fandt dette link, der beskriver en metode til at skabe en type liste, der ikke har en kolonne: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF og din ven, CDATA

Jeg har bemærket nogle besværlige og unødvendige hånd-kodning af RdbCommandText i nogle eksempler (herunder MSDN dokumentation).

Jeg ønskede at påpege, at tilflyttere til BDC at kommandoer kan pakkes ind i et CDATA-koden i deres "naturlige" form. Så, denne akavet konstruktion:

<Ejendom Navn="RdbCommandText" Type="System.String">
Vælg dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (id &gt;= @MinId) OG (id &lt;= @MaxId)
</Ejendom>

kan blive bedre repræsenteret på denne måde:

<Ejendom Navn="RdbCommandText" Type="System.String">
<![CDATA[
Vælg dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (id >= @MinId) OG (id <= @MaxId)
]]>
</Ejendom>

</slutningen>

BDC-Primer

Intro til BDC

Funktionsdygtige eksempel: BDC ADF der tilsluttes SQL database med integreret bruger-id og adgangskode

Jeg havde brug for ledning op mos til en SQL database via BDC-. Henblik på test/POC, Jeg ønskede at integrere SQL konto brugerid og password i den automatiske Dokumentindføring. Startende med denne skabelon (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jeg oprettede en ADF, der forbinder til en bestemt forekomst af SQL server og logger ind med et bestemt bruger-id og password og vist i denne kodestump:

  <LobSystemInstances>
    <LobSystemInstance Navn="ClaimsInstance">
      <Egenskaber>
        <Ejendom Navn="AuthenticationMode" Type="System.String">PassThrough</Ejendom>
        <Ejendom Navn="DatabaseAccessProvider" Type="System.String">SqlServer</Ejendom>
        <Ejendom Navn="RdbConnection-datakilde" Type="System.String">faktiske serveractual forekomst</Ejendom>
        <Ejendom Navn="RdbConnection første butik" Type="System.String">faktiske indledende katalog</Ejendom>
        <Ejendom Navn="RdbConnection integreret sikkerhed" Type="System.String">SSPI</Ejendom>
        <Ejendom Navn="RdbConnection samle" Type="System.String">falsk</Ejendom>

        <!-- Disse er de vigtigste værdier: -->
        <Ejendom Navn="RdbConnection bruger-ID" Type="System.String">enfaktiske bruger-ID</Ejendom>
        <Ejendom Navn="RdbConnection adgangskode" Type="System.String">selve Password</Ejendom>
        <Ejendom Navn="RdbConnection Trusted_Connection" Type="System.String">falsk</Ejendom>

      </Egenskaber>
    </LobSystemInstance>
  </LobSystemInstances>

Det er ikke en bedste praksis, men det er nyttigt for en hurtig og enkel konfiguration til test. Dette var overraskende svært at finde ud af. Jeg har aldrig fundet en funktionel eksempel med søgeord:

  • ADF indlejret userid og password
  • integrere bruger-id og adgangskode i ADF'en
  • integrere bruger-id og adgangskode i ADF'en bdc
  • SharePoint BDC-primer
  • SharePoint integrere bruger-id og adgangskode i ADF'en

</slutningen>

Abonner på min blog.