SharePoint sikkerhet grunnleggende Primer / Unngå vanlige feller

OPPDATERINGEN 12/18/07: Se Paul Liebrand artikkelen for noen tekniske konsekvenser av å fjerne eller endre standardnavn for gruppen (se hans kommentar nedenfor i tillegg).

Oversikt:

Sikkerheten i SharePoint er enkelt å konfigurere og administrere. Men, Det har vist seg for å være vanskelig for enkelte første gang administratorer å virkelig vikle hendene rundt det.. Ikke bare det, Jeg har sett noen administratorer kommer til en perfekt forståelse mandag bare å ha mistet den fredag fordi de ikke har å gjøre noe konfigurasjonen i tiden. (Jeg innrømmer å ha dette problemet selv). Dette blogginnlegget forhåpentligvis gir en nyttig SharePoint sikkerhet primer og peker mot noen anbefalte fremgangsmåter for sikkerhet-konfigurasjon.

Viktig merknad:

Denne beskrivelsen er basert på esken sikkerheten i SharePoint. Min personlige erfaring er orientert rundt MOSS så det kan være noen MOSS bestemte ting her, men jeg tror det er nøyaktig for WSS. Jeg håper at noen ser eventuelle feil eller forsømmelser vil påpeke at i kommentarer eller email meg. Jeg skal gjøre rettelser post hast.

Grunnleggende:

I forbindelse med denne oversikten, Det er fire grunnleggende aspekter sikkerhet: brukere/grupper, sikrede objekter, tillatelsesnivåer og arv.

Brukere og grupper bryte ned til:

  • Individuelle brukere: Trukket fra active directory eller opprettet direkte i SharePoint.
  • Grupper: Tilordnet direkte fra active directory eller opprettet i SharePoint. Grupper er en samling brukere. Grupper er global i en områdesamling. De bundet aldri"" til et bestemt sikret objekt.

Sikrede objekter bryte ned til minst:

  • Nettsteder
  • Dokumentbiblioteker
  • Individuelle elementer i lister og dokumentbiblioteker
  • Mapper
  • Ulike BDC-innstillinger.

Det andre sikrede objekter, men du får bildet.

Tillatelsesnivåer: En bunt av detaljert / lav tilgangsrettigheter som inkluderer slike ting som opprette/lese/slette oppføringer i lister.

Arv: Standard arver enheter sikkerhetsinnstillinger fra deres inneholdende objekt. Sekundære områder arver tillatelser fra det overordnede området. Dokumentbiblioteker arver fra deres nettsted. Så videre og så videre.

Brukere og grupper knyttet til sikrede objekter via tillatelsesnivåer og arv.

De viktigste sikkerhetsreglene å forstå, Noen gang 🙂 :

  1. Grupper er bare samlinger av brukere.
  2. Grupper er global i en områdesamling (dvs.. Det finnes ikke noe slikt som en gruppe som er definert på et områdenivå).
  3. Gruppenavn ikke motstå, grupper ikke, i og av seg selv, har et bestemt nivå av sikkerhet.
  4. Grupper har sikkerhet i forbindelse med et bestemt sikret objekt.
  5. Du kan tilordne forskjellige tillatelsesnivåer i samme gruppe for alle sikrede objekter.
  6. Web programpolicyer trumfe alt dette (se nedenfor).

Sikkerhetsadministrator mistet i et hav av gruppe- og oppføringer kan alltid stole på disse aksiomer å administrere og forstå deres sikkerhetskonfigurasjon.

Felles fallgruver:

  • Gruppenavn antyder feilaktig tillatelse: Esken, SharePoint definerer et sett av grupper med navn innebærer et iboende sikkerhetsnivå. Vurdere gruppen "Bidragsyter". En ukjent med sikkerheten i SharePoint kan også se på navnet og anta at medlemmer av gruppen kan "bidra" noen området/liste/biblioteket i portal. Det kan være sant, men ikke fordi gruppen navnet skulle "bidragsyter". Dette gjelder bare ut av boksen fordi gruppen er gitt et tillatelsesnivå som lar dem legge til/redigere/slette innholdet i rotområdet. Gjennom arv, "bidragsytere" gruppen kan også legge til/redigere/slette innhold på hver sub-området. Man kan "break" arven kjeden og endre tilgangsnivået for et delområde slik at medlemmer av den såkalte "bidragsyteren" gruppen kan ikke bidra hele, men bare lest (for eksempel). Dette ville ikke være en god idé, åpenbart, siden det ville være veldig forvirrende.
  • Gruppene defineres ikke på et områdenivå. Det er lett å bli forvirret av brukergrensesnittet. Microsoft skaffer en enkel kobling til bruker/gruppe administrasjon via hvert område "mennesker og grupper" kobling. Det er lett å tro at når jeg er på nettstedet "xyzzy" og jeg lage en gruppe gjennom xyzzy's mennesker og grupper link som jeg har nettopp opprettet en gruppe som finnes bare på xyzzy. Det er ikke tilfelle. Jeg har faktisk laget en gruppe for hele områdesamlingen.
  • Grupper medlemskap varierer ikke av nettstedet (dvs.. Det er den samme overalt gruppen brukes): Vurdere gruppen "eier" og to områder, "HR" og «Logistikk». Det ville være normalt å tenke at to separate individer ville eier disse nettstedene — HR eier og en logistikk eier. Brukergrensesnittet gjør det enkelt for en sikkerhetsadministrator mishandle dette scenariet. Hvis jeg ikke visste bedre, Jeg kan få tilgang til personer og grupper koblinger via webområdet HR, Velg "eiere" og legge min HR eier til denne gruppen. En måned senere, Logistikk kommer på linje. Jeg tilgang til personer eller grupper fra webområdet logistikk, legge til trekke opp "eiere" gruppe. Jeg ser HR eier det og fjerne henne, tenker at jeg tar henne fra eiere på området logistikk. faktisk, Jeg tar henne fra den globale eiergruppen. Hilarity følger.
  • Sviktende å Navnegrupper basert på bestemt rolle: "Godkjennere" gruppen er et perfekt eksempel. Hva kan medlemmer av denne gruppen Godkjenn? Hvor kan de godkjenne det? Jeg virkelig ønsker folk logistikk avdeling skal kunne godkjenne HR? Selvfølgelig ikke. Alltid Navnegrupper basert på deres rolle i organisasjonen. Dette vil redusere risikoen at gruppen er tilordnet et upassende tillatelsesnivå for et bestemt sikret objekt. Navnegrupper basert på deres tiltenkte rolle. I det forrige eksemplet HR/logistikk, Jeg burde ha laget to nye grupper: "HR eiere" og "logistikk eiere" og tilordne fornuftig tillatelsesnivåer for hver og minimumsbeløpet som kreves for brukere å gjøre jobben sin.

Andre nyttige referanser:

Hvis du har gjort det så langt:

Behage utleie meg vite dine tanker via kommentarer eller email meg. Hvis du vet andre gode referanser, gjør det samme!

Technorati Merkelapper:

Rask og enkel: Opprette en webdel for datavisning (DVWP)

Det er et vell av god informasjon på WSS 3.0 Webdel for datavisning (DVWP) på nettet fra flere kilder. Men, Jeg fant det å være overraskende vanskelig å finne informasjon på denne første grunnleggende trinn. Her er en annen artikkel i "rask og enkel" serie å ta det.

Følg denne fremgangsmåten for å opprette en webdelen for datavisning (DVWP). De er basert på en "annonseringer" webdelen, men gjelder for de fleste lister.

  1. Opprette en webdel for kunngjøringer og legge den til et område.
  2. Åpne webområdet i SharePoint Designer.
  3. Åpne nettstedets default.aspx.
  4. Velg webdelen for kunngjøringer og høyreklikk.
  5. På hurtigmenyen, Velg "Konverter til XSLT datavisning".

SharePoint Designer varsler deg om at dette området er nå tilpasset fra områdedefinisjonen. Det er ikke nødvendigvis dårlig, men det er viktige implikasjoner (ytelse, oppgradering, andre) som er utenfor omfanget av denne lille "rask og lett" oppføring. Mer informasjon om dette emnet, Anbefaler jeg både bøker her og din favoritt Internett-Søk.

Bekreft at du gjorde det riktig:

  1. Lukk og åpne webleseren på nytt (å unngå uhell re-oppslaget opprinnelige "Legg til en ny webdel").
  2. Velg webdelen pilen rullegardinmenyen og velg "endre delt webdel" menyen.
  3. I Verktøy-panelet åpnes til høyre.
  4. Panelet er endret fra sin vanlige alternativer til dette:
bilde

“Kan ikke hente listen XML-egenskapen for kolonnen fra SharePoint-listen” — Beskrivelse/arbeide-i nærheten

Denne uken, Vi endelig gjengitt et problem som hadde blitt rapportert av en ekstern bruker: Da hun prøvde å eksportere innholdet i en liste til excel, ting synes å begynne å jobbe, men deretter Excel ville popmusikk opp en feil: "Kan ikke få kolonneegenskapen listen skjema fra SharePoint-listen". Hun kjører office 2003, Windows XP og kobler til MOSS.

Jeg søkte Internets og så spekulert men ingenting 100% definitive. Dermed, Dette innlegget.

Problemet: Eksportere utsikt til excel som inneholder en dato (dato = datatypen for kolonnen).

Hva arbeidet for oss: Konvertere datoen til et "enkelt linje med tekst". Deretter, konvertere den til en dato.

Det løste det. Det var hyggelig å se at konverteringen fungerte, faktisk. Det var ganske nervøs at konvertering ting på denne måten ville mislykkes, men det gjorde ikke.

Denne feilen har kastet en stor skygge over datatypen Dato i kundens sinn, så vi skal oppsøke en definitiv svaret fra Microsoft og forhåpentligvis jeg skal legge inn og oppdatere her i den neste kort perioden med deres offisielle svar og hurtigreparasjonen.

Andre referanser:

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

<slutten>

Abonner på bloggen min.

Technorati Merkelapper: ,

Rask og enkel: Send en epost med innebygde hyperkoblingen fra SharePoint Designer arbeidsflyt

En eller to ganger måneden, noen legger ut et spørsmål på forumet: "Hvordan inkluderer jeg hyperkoblinger til URL-er som er klikkbare fra en e-post for SharePoint Designer?"

Presentert uten ytterligere kommentar: (Vel, faktisk er det ytterligere kommentar etter bildet):

bilde

Becky Isserman følger opp med en nyttig forklaring på hvordan du bygger inn en kobling til et element i e-posten: 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

Technorati Merkelapper: , ,

Ny versjon: SharePoint Designer arbeidsflyten utvidelser (streng manipulasjon funksjoner)

OPPDATERINGEN: Se her for mine tanker om å kommersialisere dette prosjektet: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Jeg har vært opptatt jobber med min Codeplex prosjektet som er for tiden fokusert på å gi streng manipulasjon utvidelser til arbeidsflytoperasjoner opprettet via SharePoint Designer.

Se her for detaljer:

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

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

Versjon 1.0 inneholder følgende nye funksjoner:

Funksjonen Beskrivelse (Hvis ikke samme som .net-funksjon)
NUM-poster() Returnerer antallet "postene" i en streng som angitt skilletegn.

For eksempel: NUM-oppføringer i en streng "en,b,c" med skilletegnet"," = 3.

Oppføring() Returnerer den n'te tokenet i en streng som angitt skilletegn.
Lengde String.Length
Erstatt() String.Replace()
Inneholder() String.Contains()
Returnerer ordet "true" eller ordet "false".
Delstreng(Start) String.Substring(Start)
Delstreng(Start,lengde) String.Substring(Start,lengde)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returnerer ordet "true" eller ordet "false".
EndsWith() String.EndsWith()
Returnerer ordet "true" eller ordet "false".

En BDC-kjøretidsfeil forklart

Jeg fikk en BDC-feil denne uken som viste seg på brukergrensesnitt og i den 12 strukturen Logg under kjøring.

Første, Dette dukket opp i brukergrensesnittet:

Finner ikke felt for innsetting av alle identifikatorverdiene for riktig kjøring av SpecificFinder MethodInstance med navnet … Kontroller at inndataparametere har TypeDescriptors knyttet til alle identifikatorer som er definert for denne enheten.

Her er et skjermbilde:

clip_image001

Jeg kan også føre denne meldingen skal vises i den 12 strukturen loggen vil (bruke min patentert high-tech-don't-try-this-at-home "mystisk feil" metoden):

11/14/2007 09:24:41.27 W3WP.exe (0x080C) 0x0B8C SharePoint Portal Server forretningsdata 6q4x høy unntak i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Identifier-verdien ”, typen ”, er ugyldig. Forventet identifikatorverdi av typen System.String. ved Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) ved Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhet enhet, Objekt[] userValues, LobSystemInstance lobSystemInstance) ved Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vis desiredView) ved Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() ved Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jeg søkte rundt og fant noen avledningene i det MSDN-forumet, men de var ikke nok for meg å forstå hva jeg gjorde galt. Jeg så en webcast av Ted Pattison som min selskapet har vet på en server og kom til å forstå mitt problem.

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

            <Egenskapen navn="RdbCommandText" Type="System.String">
              <![CDATA[
                VELG 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, BYEN, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      FYLKE, TILSTAND, POST, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, UTVIDELSE, FAKS, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG fra dbo.PS_CARRIER_ID_VW med (NOLOCK)
                HVOR
                  (SETID <> "DEL") og
                  (lavere(CARRIER_ID) >= lavere(@MinId)) og
                  (lavere(CARRIER_ID) <= lavere(@MaxId)) og
                  (lavere(DESCR) SOM lavere(@InputDescr))
                ]]>
            </Egenskapen>

Jeg var gitt at SQL fra en DBA person og jeg får til å forstå at det er en spesielle Vis de opprettet bare for meg. Unik nøkkel det er CARRIER_ID.

Her er feilen jeg introdusert:

      <Identifikatorer>
        <Identifikator navn="CARRIER_ID" TypeName="System.String" />
        <Identifikator navn="DESCR" TypeName="System.String" /> 
</Identifikatorer>

Et sted langs linjen, Jeg hadde klart å forvirre meg selv over betydningen av <Identifikatorer> og lagt DESCR selv om det ikke er egentlig en identifikator. Jeg tok DESCR identifikatorer sett og vips! Det hele virket.

Jeg håper dette sparer noen sorg 🙂

Technorati Merkelapper: , , ,

Du kan ikke slå SharePoints rekkevidde

I løpet av de siste to dagene, Jeg har deltatt i to møtene som vi presenterte resultatene av et SharePoint-prosjekt. CIO og hans team ble det første møtet. Det er standard og ikke spesielt kjent. IT-avdelingen er åpenbart involvert i en enterprise utrulling av noen teknologi-prosjekt. Det andre møtet utvidet til å omfatte en V.P. fra markedsføring, flere direktører som representerer HR, Logistikk, Produksjon, Hovedstaden prosjekter, Kvalitet, Kjøpe, Corporate development og andre avdelinger (noen av dem var ikke selv direkte involvert i den gjeldende fasen). Det er et mektig bredt publikum.

I mitt tidligere liv, Jobbet jeg hovedsakelig på ERP og CRM prosjekter. Begge har en ganske bred løsning domene, men ikke så bredt som SharePoint. Fullt ut realisert, SharePoint prosjekter kommer legitimt og nødvendigvis inn hver nook og cranny av en organisasjon. Hvor mange andre bedriftsløsninger har slags nå? Ikke mange.

SharePoint tydelig representerer en enorm mulighet for de av oss heldige nok være her. Det gir en stor teknisk mulighet (som er liksom slått på hodet her under "Teknologier du må mestre"). Men enda bedre, SharePoint eksponerer oss til et omfattende og bredt spekter av forretningsprosesser gjennom disse engasjementer. Hvor mange CRM spesialister i arbeidet med produksjon siden av selskapet? Hvor mange ERP konsulenter arbeidet med menneskelige ressurser på talent oppkjøpet? SharePoint overskrider begge.

Liker noe, Det er ikke perfekt, men det er en forbannet godt sted å være.

For kjærligheten til [Fyll ut ditt mest elsket person/høyere vesen], ikke endre det ' tittel’ områdekolonne.

På den SharePoint-Forum, noen spør ganger om "endre etiketten for tittel" eller om å "fjerne tittel fra lister".

Bunnlinjen: Ikke gjør det.!

Dessverre, brukergrensesnittet lar en enveis endring av denne etiketten som vist:

bilde

Tittelen er en kolonne med den "varen" innholdstype. Mange, mange, mange CTS bruke kolonnen og hvis du endrer det her, det krusninger ut overalt. Det er en god sjanse for at du ikke mente for at skal skje. Du var sannsynligvis tenke til deg selv, "Jeg har en egendefinert oppslagsliste og ' tittel’ bare gir ikke mening som et kolonnenavn, så jeg kommer til å endre den til "statuskode’ og legge til en beskrivelse-kolonnen." Men hvis du følger gjennom på den tanken og gi nytt navn ' tittel’ til "statuskode", hver tittelfeltet (inkludert dokumentbiblioteker) endringer i "statuskode" og du sannsynligvis ikke tenkt for at skal skje.

Det virkelige problemet er at dette er en. UI vet"" tittelen"" er et reservert ord. Så, Hvis du prøve og endre "statuskode" tilbake til "Title", det vil hindre deg og nå du har malt deg inn i et hjørne using paint that never dries 🙂

Så hva skjer hvis du allerede forandret den? Jeg har ikke sett svaret vi ønsker, som er en enkel og enkel metode for å endre etiketten til 'Tittel'. akkurat nå, det beste rådet er å endre det til noe som "Doc/vare tittel". Det er en generell nok etikett som ikke kanskje er altfor risting for brukerne.

Jeg har noen andre ideer som er på min gjøremålsliste ting til forskning:

  • Kontakt Microsoft.
  • Gjøre noe med objektmodellen, kanskje sammen med en funksjon.
  • Regne ut databaseskjemaet og manuelt oppdatere SQL. (Du bør kontakte Microsoft før du gjør det selv; det vil trolig kansellere din kontrakt).

Hvis noen vet hvordan å løse, Vennligst legg inn en kommentar.

Oppdatere ettermiddag, 11/15: Jeg fant denne linken som beskriver en metode for å lage en type liste som 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 venn, CDATA

Jeg har lagt merke til noe vanskelig og unødvendig hånd-koding av RdbCommandText i eksempler (inkludert MSDN-dokumentasjonen).

Jeg ønsket å påpeke nykommere til BDC at kommandoer kan innpakket i en CDATA-kode i deres "naturlige" skjemaet. Så, Denne vanskelig konstruksjon:

<Egenskapen navn="RdbCommandText" Type="System.String">
Velg dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (ID &gt;= @MinId) OG (ID &lt;= @MaxId)
</Egenskapen>

kan vises bedre på denne måten:

<Egenskapen navn="RdbCommandText" Type="System.String">
<![CDATA[
Velg dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (ID >= @MinId) OG (ID <= @MaxId)
]]>
</Egenskapen>

</slutten>

BDC Primer

Intro til BDC

Funksjonell eksempel: BDC ADF som kobles til SQL-database med innebygde bruker-id og passord

Jeg trengte å wire opp MOSS til en SQL-database via BDC. For testing/POC formål, Jeg ønsket å bygge SQL regningen bruker id og passord i den automatiske Dokumentmateren. Starter med Denne malen (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jeg opprettet en automatisk dokumentmater som kobler til en bestemt SQL server-forekomst og logger på med en bestemt brukerid og passord og vist i denne kodebiten:

  <LobSystemInstances>
    <LobSystemInstance navn="ClaimsInstance">
      <Egenskaper>
        <Egenskapen navn="AuthenticationMode" Type="System.String">Gjennomgang</Egenskapen>
        <Egenskapen navn="DatabaseAccessProvider" Type="System.String">SqlServer</Egenskapen>
        <Egenskapen navn="RdbConnection-datakilde" Type="System.String">faktisk serveractual forekomst</Egenskapen>
        <Egenskapen navn="RdbConnection første katalog" Type="System.String">faktisk første katalog</Egenskapen>
        <Egenskapen navn="RdbConnection integrert sikkerhet" Type="System.String">SSPI</Egenskapen>
        <Egenskapen navn="RdbConnection Pooling" Type="System.String">USANN</Egenskapen>

        <!-- Disse er sentrale verdier: -->
        <Egenskapen navn="RdbConnection bruker-ID" Type="System.String">enfaktisk bruker-ID</Egenskapen>
        <Egenskapen navn="RdbConnection passord" Type="System.String">faktisk passord</Egenskapen>
        <Egenskapen navn="RdbConnection Trusted_Connection" Type="System.String">USANN</Egenskapen>

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

Det er ikke en beste praksis, men det er nyttig for en rask og enkel konfigurasjon for testing. Dette var overraskende vanskelig å finne ut. Jeg har aldri funnet en funksjonell eksempel med søkeord:

  • ADF innebygd brukerid og passord
  • bygge inn brukernavn og passord i automatisk dokumentmater
  • bygge inn brukernavn og passord i adf bdc
  • SharePoint bdc primer
  • SharePoint bygge inn brukernavn og passord i automatisk dokumentmater

</slutten>

Abonner på bloggen min.