SharePoint асноў бяспекі Першая / Пазбегнуць распаўсюджаных памылак

АБНАЎЛЕННЕ 12/18/07: Глядзіце артыкул Пола Liebrand для некаторых тэхнічных наступстваў выдаліць яго, ці змены назвы групы па змаўчанні (гл. яго каментар ніжэй, а).

Агляд:

SharePoint security is easy to configure and manage. Аднак, it has proven to be difficult for some first-time administrators to really wrap their hands around it. Not only that, I have seen some administrators come to a perfect understanding on Monday only to have lost it by Friday because they didn’t have to do any configuration in the intervening time. (Я прызнаюся, што гэтую праблему самастойна). This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Важнае заўвага:

This description is based on out of the box SharePoint security. My personal experience is oriented around MOSS so there may be some MOSS specific stuff here, but I believe it’s accurate for WSS. I hope that anyone seeing any errors or omissions will point that out in comments or напішыце мне. I’ll make corrections post haste.

Асновы:

For the purposes of this overview, there are four fundamental aspects to security: users/groups, securable objects, permission levels and inheritance.

Users and Groups break down to:

  • Individual users: Pulled from active directory or created directly in SharePoint.
  • Groups: Mapped directly from active directory or created in SharePoint. Groups are a collection of users. Groups are global in a site collection. They are never "tied" to a specific securable object.

Securable objects break down to at least:

  • Sites
  • Бібліятэкі дакументаў
  • Individual items in lists and document libraries
  • Folders
  • Various BDC settings.

There other securable objects, but you get the picture.

Permission levels: A bundle of granular / low level access rights that include such things as create/read/delete entries in lists.

Inheritance: By default entities inherit security settings from their containing object. Sub-sites inherit permission from their parent. Document libraries inherit from their site. So on and so forth.

Users and groups relate to securable objects via permission levels and inheritance.

The Most Important Security Rules To Understand, Ever 🙂 :

  1. Groups are simply collections of users.
  2. Groups are global within a site collection (I.E. there is no such thing as a group defined at a site level).
  3. Group name not withstanding, groups do not, in and of themselves, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. You may assign different permission levels to the same group for every securable object.
  6. Web application policies trump all of this (гл. ніжэй).

Адміністратары бяспекі губляюцца ў моры груп і карыстальнікаў, спісы могуць заўсёды спадзявацца на гэтыя аксіёмы, каб кіраваць і разумець іх налады бяспекі.

Найбольш распаўсюджаныя памылкі:

  • Імёны груп ілжыва прадугледжвае дазвол: З скрынкі, SharePoint defines a set of groups whose names imply an inherent level of security. Consider the group "Contributor". One unfamiliar with SharePoint security may well look at that name and assume that any member of that group can "contribute" to any site/list/library in the portal. That may be true but not because the group’s name happens to be "contributor". This is only true out of the box because the group has been provided a permission level that enables them to add/edit/delete content at the root site. Through inheritance, the "contributors" group may also add/edit/delete content at every sub-site. One can "break" the inheritance chain and change the permission level of a sub-site such that members of the so-called "Contributor" group cannot contribute at all, but only read (напрыклад). This would not be a good idea, відавочна, since it would be very confusing.
  • Groups are not defined at a site level. It’s easy to be confused by the user interface. Microsoft provides a convenient link to user/group management via every site’s "People and Groups" спасылка. It’s easy to believe that when I’m at site "xyzzy" and I create a group through xyzzy’s People and Groups link that I’ve just created a group that only exists at xyzzy. That is not the case. I’ve actually created a group for the whole site collection.
  • Групы сяброўства не залежыць ад сайта (I.E. яна ўсюды аднолькавая група выкарыстоўваецца): Consider the group "Owner" і ў двух месцах, "HR" and "Logistics". It would be normal to think that two separate individuals would own those sites — an HR owner and a Logistics owner. The user interface makes it easy for a security administrator to mishandle this scenario. If I didn’t know better, Я мог бы звяртацца да груп людзей і спасылкі праз сайт HR, select the "Owners" group and add my HR owner to that group. A month later, Logistics comes on line. I access People and Groups from the Logistics site, add pull up the "Owners" group. I see the HR owner there and remove her, thinking that I’m removing her from Owners at the Logistics site. На самай справе, I’m removing her from the global Owners group. Hilarity ensues.
  • Будучы не ў стане назваць групы, заснаваныя на канкрэтнай ролі: The "Approvers" group is a perfect example. What can members of this group approve? Where can they approve it? Do I really want people Logistics department to be able to approve HR documents? Of course not. Always name groups based on their role within the organization. This will reduce the risk that the group is assigned an inappropriate permission level for a particular securable object. Name groups based on their intended role. In the previous HR/Logistics scenario, Я бы стварыў дзве новыя групы: "HR Owners" and "Logistics Owners" і прызначыць разумныя ўзроўні дазволаў для кожнага і мінімальную суму, неабходную для тых карыстальнікаў, каб зрабіць іх працу.

Іншыя карысныя спасылкі:

If you’ve made it this far:

Please let me know your thoughts via the comments or email me. If you know other good references, please do the same!

Technorati Тэгі:

Хутка і лёгка: Стварэнне вэб-частка прадстаўлення даных (DVWP)

Існуе мноства карыснай інфармацыі на WSS 3.0 Дадзеныя вэб-частка (DVWP) on the web from several sources. Аднак, I found it to be surprisingly difficult to find information on this first very basic step. Here is another article in the "quick and easy" Серыя для яе вырашэння.

Выканайце наступныя крокі, каб стварыць вэб-частка прадстаўлення даных (DVWP). They are based on an "Announcements" Вэб-частка, але ставяцца да большасці спісаў.

  1. Стварэнне вэб-часткі аб'явы і дадаць яго на сайт.
  2. Адкрыйце сайт у SharePoint Designer.
  3. Адкрыйце default.aspx сайта.
  4. Select the Announcements web part and right-click.
  5. З кантэкстнага меню, select "Convert to XSLT Data View".

SharePoint Designer паведамляе вам, што гэты сайт у цяперашні час настроены са свайго сайта вызначэнні. Гэта не абавязкова дрэнна, але існуюць сур'ёзныя наступствы (прадукцыйнасць, мадэрнізаваць, іншыя) which are beyond the scope of this little "Quick and Easy" ўступленне. To get more information on this subject, Я рэкамендую абедзве кнігі тут , А таксама вашыя любімыя інтэрнэт-пошуку.

Пацвердзіце, што вы зрабілі гэта правільна:

  1. Зачыніць і паўторна адкрыць вэб-браўзэр (to avoid accidentally re-posting the original "add a new web part").
  2. Select the web part’s arrow drop-down and choose "Modify Shared Web Part" з меню.
  3. Панэлі інструментаў адкрывае права.
  4. Панэль змяніўся ад свайго звычайнага набору варыянтаў гэтай:
малюнак

“Не атрымалася атрымаць спіс слупкоў ўласцівасці схемы з спісу SharePoint” — апісанне / абыходныя

На гэтым тыдні, мы, нарэшце, прайграныя праблемы, якія былі зарэгістраваныя аддаленым карыстальнікам: Калі яна паспрабавала экспартаваць змесціва спісу ў Excel, рэчы, здавалася б, пачаць працаваць, але тады Excel будзе ўсплывальнае памылцы: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

Я шукаў у Інтэрнэце і бачыў некаторыя спекуляцыі, але нічога 100% definitive. Hence, гэты пост.

Праблема: Экспарт мэтай Excel, якая змяшчае дату (дата = тып дадзеных слупка).

Тое, што працавала для нас: Convert the date to a "single line of text". Затым, пераўтварыць яго назад у дату.

That solved it. It was nice to see that the conversion worked, на самай справе. It was quite nervous that converting things this way would fail, but it did not.

Гэтая памылка кінута вялізны цень на тып даты на ўвазе кліента, таму мы збіраемся пошуках канчатковага адказу ад Microsoft і, спадзяюся, я выкладу тут і абнавіць у наступным кароткі перыяд часу з іх афіцыйнага адказу і выпраўленне інфармацыі.

Іншыя спасылкі:

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

<канец>

Падпісацца на мой блог.

Хутка і проста: Адправіць ліст з убудаванымі гіперспасылкі канструктар рабочых працэсаў SharePoint

Раз ці два месяцы, Хтосьці публікуе форуме пытанне: "How do I include hyperlinks to URL’s that are clickable from a SharePoint Designer email?"

Прадстаўлены без далейшых каментароў: (добра, На самай справе ёсць ад далейшых каментароў па вобразу):

малюнак

Бэкі Isserman варта з карыснае тлумачэнне аб тым, як ўстаўляць спасылку на пункт у электроннай пошце: 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 Тэгі: , ,

Новы рэліз: SharePoint Designer Workflow пашырэння (Функцыі працы з радкамі)

АБНАЎЛЕННЕ: Глядзіце тут для маіх думак на камерцыялізацыі гэтага праекта: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Я быў заняты працай над маім Codeplex праект, які ў цяперашні час накіраваны на забеспячэнне пашырэння маніпуляцый са радкамі, працоўныя працэсы, створаныя з дапамогай SharePoint Designer,.

Падрабязнасці см. тут:

Праект дома: http://www.codeplex.com/spdwfextensions

Адпусціце: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Версія 1.0 ўключае ў сябе наступныя новыя магчымасці:

Функцыя Апісанне (калі не такія ж, як. Чыстыя функцыі)
Num-запісы() Returns the number "entries" in a string as per a specified delimiter.

Напрыклад: Num-entries in a string "a,B,З" with delimiter "," = 3.

Ўступленне() Returns the nth token in a string as per a specified delimiter.
Даўжыня String.Length
Замяняць() String.Replace()
Змяшчае() String.Contains()
Returns the word "true" or the word "false".
Падрадок(пачатак) String.substring(пачатак)
Падрадок(пачатак,даўжыня) String.substring(пачатак,даўжыня)
ToUpper() String.ToUpper()
ToLower() String.tolower()
StartsWith() String.StartsWith()
Returns the word "true" or the word "false".
EndsWith() String.EndsWith()
Returns the word "true" or the word "false".

Памылка выканання BDC патлумачыў

Я выклікала BDC памылку на гэтым тыдні, што выявілася ў карыстацкім інтэрфейсе і ў 12 вулей часопіса падчас выканання.

Першы, Гэта з'явілася ў інтэрфейсе карыстальніка:

Не атрымалася знайсці палёў ўставіць ўсе значэння ідэнтыфікатара правільна выканаць SpecificFinder MethodInstance з імем … Пераканайцеся, уведзеных параметраў TypeDescriptors, звязаны з кожнай ідэнтыфікатар, вызначаны для дадзенага аб'екта.

Вось здымак экрана:

clip_image001

Я мог бы таксама Дадзенае паведамленне з'яўляецца ў 12 вулей часопіс па жаданні (using my patented high-tech-don’t-try-this-at-home "mysterious errors" метад):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Значэнне ідэнтыфікатара ”, Тыпу ”, з'яўляецца несапраўдным. Expected Identifier value of Type ‘System.String’. на Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Аб'ект[] subIdentifierValues, LobSystemInstance LobSystemInstance) на Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entity асобы, Аб'ект[] userValues, LobSystemInstance LobSystemInstance) на Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Паглядзець desiredView) на Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() на Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Я шукаў вакол і знайшоў некаторыя драты ў MSDN форум, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Тэд Паттисон што мая кампанія squirreled была далёка на сервер і зразумеў, мая праблема.

На мой ADF, Я падключэннем да базы дадзеных SQL, як паказана:

            <Уласнасць Імя="RdbCommandText" Тып="System.String">
              <![CDATA[
                ВЫБАР
                      , CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, Network_id, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      КРАІНЫ, ADDRESS1, ADDRESS2, Address3, Адрас 4, ГОРАД, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      Акругах, ДЗЯРЖАЎНЫ, ПАШТОВЫ, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, ТЭЛЕФОН, Распаўсюджванне, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (NOLOCK)
                ДЗЕ
                  (SETID <> "Доля") і
                  (знізіць(CARRIER_ID) >= Ніжняя(@ MiniD)) і
                  (знізіць(CARRIER_ID) <= Ніжняя(@ MaxId)) і
                  (знізіць(DESCR) Падобныя ніжэйшых(@ InputDescr))
                ]]>
            </Уласнасць>

Я быў пры ўмове, што ад SQL DBA чалавек, і я даў зразумець, што гэта спецыяльны view they created just for me. The unique key there is CARRIER_ID.

Вось я прадставіў памылцы:

      <Ідэнтыфікатары>
        <Ідэнтыфікатар Імя="CARRIER_ID" TypeName="System.String" />
        <Ідэнтыфікатар Імя="DESCR" TypeName="System.String" /> 
</Ідэнтыфікатары>

Дзе-то ўздоўж лініі, Мне ўдалося заблытаць сябе над сэнсам <Ідэнтыфікатары> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Усё гэта працавала.

I hope this saves someone some grief 🙂

Technorati Тэгі: , , ,

Вы не можаце перамагчы Reach ў SharePoint

На працягу апошніх двух дзён, I have participated in two meetings during which we presented the results of a SharePoint project. The CIO and his team joined the first meeting. That’s standard and not especially notable. The IT department is obviously involved in an enterprise rollout of any technology project. The second meeting expanded to include a V.P. ад маркетынгу, некалькі дырэктараў, якія прадстаўляюць HR, Лагістыка, Вытворчасць, Капітальным праектах, Якасць, Купля, Карпаратыўнае развіццё і іншых ведамстваў (некаторыя з якіх нават не былі непасрэдна ўцягнутыя ў бягучую фазу). That’s a mighty wide audience.

У маёй ранейшай жыцця, I primarily worked on ERP and CRM projects. They both have a fairly wide solution domain but not as wide as SharePoint. To be fully realized, SharePoint projects legitimately and necessarily reach into every nook and cranny of an organization. How many other enterprise solutions have that kind of reach? Not many.

SharePoint clearly represents an enormous opportunity for those of us fortunate enough to be in this space. It provides a great technical opportunity (якія так ці інакш з ног на галаву тут under "Technologies You Must Master"). But even better, SharePoint exposes us to an extensive and wide range of business processes through these engagements. How many CRM specialists work with the manufacturing side of the company? How many ERP consultants work with human resources on talent acquisition? SharePoint exceeds them both.

Як і ўсе, яна не дасканалая, але гэта па-чартоўску добры месца быць.

Дзеля [запоўніць ваш самы любімы чалавек / вышэйшую істота], don’t change the ‘Title’ слупок сайта.

На SharePoint форумах, someone occasionally asks about "changing the label of Title" or about "removing title from lists".

Вынік: Не рабіце гэтага!

Сумна, Карыстацкі інтэрфейс дазваляе аднабаковым змяненнем, што пазнака слупка, як паказана:

малюнак

Title is a column associated with the "Item" Тып змесціва. Шматлікія, многія, шмат хто ў CT выкарыстоўваць гэтую калонку і, калі вы зменіце яго тут, it ripples out everywhere. There’s a good chance that you didn’t intend for that to happen. You were probably thinking to yourself, "I have a custom lookup list and ‘Title’ проста не мае сэнсу ў якасці імя слупка, so I’m going to change it to ‘Status Code’ and add a description column." But if you follow through on that thought and rename ‘Title’ to ‘Status Code’, кожны спіс тытул (у тым ліку бібліятэк дакументаў) changes to "Status Code" і вы, верагодна, не маюць намеру, каб гэта адбылося.

Сапраўдная праблема ў тым, што гэта з'яўляецца аднабаковым змяненнем. The UI "knows" that "title" is a reserved word. Так, if you try and change "Status Code" back to "Title", ён не дазволіць вам і зараз у вас афарбаваныя сябе ў кут using paint that never dries 🙂

Што здарыцца, калі вы ўжо змянілі яго? I haven’t seen the answer we all want, which is a simple and easy method to change the label back to ‘Title’. Right now, the best advice is to change it to something like "Doc/Item Title". That’s a generic enough label that may not be too jarring for your users.

У мяне ёсць некалькі ідэй, якія знаходзяцца на маім спісе спраў рэчаў даследаванняў:

  • Звязацца з Microsoft.
  • Зрабіце што-небудзь з аб'ектнай мадэллю, Можа быць, у спалучэнні з функцыяй.
  • Малюнак з схемы базы дадзеных і ўручную абнавіць SQL. (Вы павінны звязацца з Microsoft, перш чым рабіць гэта, хоць; ён, верагодна, прывесці да анулявання кантракту на падтрымку).

Калі хто ведае, як вырашыць гэтую, калі ласка, напішыце каментар.

Абнавіце вечара, 11/15: Я знайшоў гэтую спасылку, якая апісвае спосаб стварэння тып спісу, які не мае назвы калонкі: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF і ваш сябар, CDATA

Я заўважыў некалькі няёмка і непатрэбным ручной кадоўкі RdbCommandText ў некаторых прыкладах (у тым ліку дакументацыі MSDN).

Я хацеў бы звярнуць увагу пачаткоўцаў на BDC, што каманды могуць быць заключаны ў тэг CDATA ў сваіх "натуральных" form. Так, гэты нязграбны будаўніцтва:

<Уласнасць Імя="RdbCommandText" Тып="System.String">
ВЫБАР dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement ад dbo.MCRS_SETTLEMENT
ДЗЕ (ID &GT;= @ MinID) І (ID &л;= @ MaxId)
</Уласнасць>

можа быць лепш прадстаўлены такім чынам,:

<Уласнасць Імя="RdbCommandText" Тып="System.String">
<![CDATA[
ВЫБАР dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement ад dbo.MCRS_SETTLEMENT
ДЗЕ (ID >= @ MinID) І (ID <= @ MaxId)
]]>
</Уласнасць>

</канец>

Прыклад BDC

Уводзіны ў BDC

Прыклад функцыянальнай: BDC ADF, які падключаецца да базы дадзеных SQL з убудаваным ідэнтыфікатарам карыстальніка і пароль

I needed to wire up MOSS to a SQL database via BDC. For testing/POC purposes, I wanted to embed the SQL account user id and password in the ADF. Starting with гэты шаблон (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Я стварыў ADF, які падключаецца да вызначанага сервера SQL асобнікаў і ўваходзіць у сістэму са пэўны ідэнтыфікатар карыстальніка і пароль і паказана ў гэтым фрагменце:

  <LobSystemInstances>
    <LobSystemInstance Імя="ClaimsInstance">
      <Ўласцівасці>
        <Уласнасць Імя="AuthenticationMode" Тып="System.String">Скразны</Уласнасць>
        <Уласнасць Імя="DatabaseAccessProvider" Тып="System.String">SqlServer</Уласнасць>
        <Уласнасць Імя="Крыніца дадзеных RdbConnection" Тып="System.String">фактычныя сервер  фактычны асобнік</Уласнасць>
        <Уласнасць Імя="RdbConnection Initial Catalog" Тып="System.String">фактычны зыходны каталог</Уласнасць>
        <Уласнасць Імя="Комплексная бяспеку RdbConnection" Тып="System.String">SSPI</Уласнасць>
        <Уласнасць Імя="Аб'яднанне RdbConnection" Тып="System.String">ілжывы</Уласнасць>

        <!-- Гэта ключавыя значэнні: -->
        <Уласнасць Імя="ID карыстальніка RdbConnection" Тып="System.String">actual ID карыстальніка</Уласнасць>
        <Уласнасць Імя="RdbConnection Пароль" Тып="System.String">фактычны пароль</Уласнасць>
        <Уласнасць Імя="RdbConnection Trusted_Connection" Тып="System.String">ілжывы</Уласнасць>

      </Ўласцівасці>
    </LobSystemInstance>
  </LobSystemInstances>

Гэта не лепшая практыка, but it’s useful for a quick and simple configuration for testing. This was surprisingly difficult to figure out. I never found a functional example with search keywords:

  • ADF Embedded ідэнтыфікатар карыстальніка і пароль
  • ўстаўляць ідэнтыфікатар карыстальніка і пароль у АПД
  • ўстаўляць ідэнтыфікатар карыстальніка і пароль у ADF BDC
  • SharePoint BDC грунтоўкі
  • SharePoint Код ID карыстальніка і пароль у АПД

</канец>

Падпісацца на мой блог.