پرایمر مبانی امنیت شیرپوینت / اجتناب از بروز اشتباه متداول

تکمیلی 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.

اصول:

هدف از این مرور, چهار جنبه اساسی برای امنیت وجود دارد: کاربران / گروه ها, اشیاء مجموعه قابل تامین, سطح اجازه و ارث.

کاربران و گروه ها شکستن به پایین:

  • کاربران شخصی: کشیده از اکتیو دایرکتوری و یا به طور مستقیم در شیرپوینت.
  • گروه های دسته جمعی: 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" به یک شیء خاص مجموعه قابل تامین.

اشیاء مجموعه قابل تامین شکستن به حداقل:

  • سایت
  • کتابخانه های سند
  • اقلام در لیست ها و کتابخانه های سند
  • پوشه ها
  • مختلف BDC تنظیمات.

مجموعه قابل تامین اشیاء دیگر, اما شما می توانید از تصویر.

سطوح اجازه: بسته نرم افزاری از دانه / low level access rights that include such things as create/read/delete entries in lists.

وراثت: 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.

کاربران و گروه های مربوط به اشیاء مجموعه قابل تامین از طریق سطوح اجازه و ارث.

مهم ترین قوانین امنیتی به درک, همیشه 🙂 :

  1. گروه ها به سادگی مجموعه ای از کاربران.
  2. گروه ها در مجموعه سایت های جهانی (i.e. چنین چیزی به عنوان یک گروه در یک سطح سایت تعریف شده وجود ندارد).
  3. نام گروه تحمل نیست, گروه انجام نمی, و خود را, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. شما ممکن است سطوح مجوز متفاوت به همان گروه برای هر شیء مجموعه قابل تامین اختصاص.
  6. وب سیاست کاربرد مغلوب ساختن پیشی جستن از این همه (پایین را ببینید).

مدیران امنیت از دست رفته را در دریایی از گروه و لیست کاربر همیشه می توانید در مورد این بدیهیات تکیه می کنند برای مدیریت و تنظیمات امنیتی خود را درک.

مشکلات متداول:

  • نام گروه به دروغ این مفهوم را میرسانند اجازه: خارج از کادر, 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" گروه نمی تواند در همه, اما فقط به عنوان خوانده شده (مثلا). This would not be a good idea, بدیهی است که, از آنجایی که این امر می تواند بسیار گیج کننده است.
  • گروه ها در سطح سایت تعریف نشده. 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" و اختصاص سطوح اجازه معقول برای هر یک و مقدار حداقل مورد نیاز برای کاربرانی که به انجام کار خود را.

مفید دیگر منابع:

اگر شما ساخته شده است آن را در این دور:

Please let me know your thoughts via the comments or email me. If you know other good references, لطفا همین کار را!

برچسب ها:

دسترسی سریع و آسان: ایجاد داده های مشاهده قسمت وب (DVWP)

There is a wealth of great information on the 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" series to address it.

Follow these steps to create a data view web part (DVWP). They are based on an "Announcements" web part, but apply to most lists.

  1. Create an Announcements web part and add it to a site.
  2. Open the site in SharePoint Designer.
  3. Open the site’s default.aspx.
  4. Select the Announcements web part and right-click.
  5. From the context menu, select "Convert to XSLT Data View".

SharePoint Designer notifies you that this site is now customized from its site definition. That’s not necessarily bad, but there are important implications (performance, upgrade, others) which are beyond the scope of this little "Quick and Easy" ورود. To get more information on this subject, I recommend both books اینجا as well as your favorite Internet search.

Confirm that you did it correctly:

  1. Close and re-open the web browser (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" from the menu.
  3. The tool panel opens to the right.
  4. The panel has changed from its usual set options to this:
تصویر

“می توانید لیستی طرح مالکیت ستون از لیست شیرپوینت” — توضیحات / کار-arounds ها

این هفته, we finally reproduced a problem that had been reported by a remote user: When she tried to export the contents of a list to excel, things would seem to start working, but then Excel would pop up an error: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

I searched the Internets and saw some speculation but nothing 100% definitive. Hence, this post.

The problem: Exporting a view to excel that contains a date (date = the data type of the column).

What worked for us: Convert the date to a "single line of text". سپس, convert it back to a date.

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.

This bug has thrown a huge shadow over the date data type in the client’s mind, so we’re going to be seeking out a definitive answer from Microsoft and hopefully I’ll post and update here in the next short period of time with their official answer and hotfix information.

Other references:

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

<پایان>

مشترک شدن در وبلاگ من.

برچسب ها: ,

سریع و ساده: ارسال یک ایمیل با لینک تعبیه شده از طراح گردش کار شیرپوینت

یک یا دو بار در ماه, کسی سوال انجمن: "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

نسخه جدید: شیرپوینت ضمیمهها طراح گردش کار (رشته توابع دستکاری)

تکمیلی: اینجا را ببینید برای افکار من در تجاری کردن این پروژه: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

I’ve been busy working on my Codeplex project which is presently focused on providing string manipulation extensions to workflows created via SharePoint Designer.

See here for details:

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

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

نسخه 1.0 includes the following new features:

تابع شرح (اگر همان عملکرد خالص)
تعداد نوشته های() Returns the number "entries" in a string as per a specified delimiter.

مثلا: Num-entries in a string "a,ب,ج" 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(شروع)
زیر رشته(شروع,length) String.Substring(شروع,length)
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(نهاد نهاد, هدف[] 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 تد Pattison که من شرکت دور در سرور 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, ADDRESS4, شهر, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      شهرستان, دولت, پستی, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, گوشی تلفن همراه, EXTENSION, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (nolock)
                مکانی که در آن
                  (SETID <> سهم ') و
                  (کاهش(CARRIER_ID) >= پایین(@ MinId،)) و
                  (کاهش(CARRIER_ID) <= پایین(@ MaxId)) و
                  (کاهش(DESCR) LIKE پایین تر(@ 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 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. from marketing, several directors representing HR, Logistics, Manufacturing, Capital Projects, Quality, Purchasing, Corporate development and other departments (some of whom were not even directly involved in the current phase). That’s a mighty wide audience.

In my prior life, 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 (which is somehow turned on its head اینجا 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.

Like anything, it’s not perfect, but it’s a damned good place to be.

برای عشق [پر کردن در ترین فرد خود را دوست داشتنی / بالاتر بودن], don’t change the ‘Title’ ستون سایت.

در انجمن شیرپوینت, گاهی اوقات کسی که در مورد "تغییر برچسب عنوان می پرسد" و یا "از بین بردن عنوان را از لیست".

خط پایین: آیا آن را انجام دهد!

متاسفانه, رابط کاربر اجازه می دهد تا یک تغییر یک طرفه از برچسب ستون که به عنوان نشان داده شده است:

تصویر

عنوان یک ستون همراه با آیتم "می باشد" نوع محتوا. بسیاری, بسیاری, بسیاری از 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.

من چند ایده دیگر که در لیست کارهای من همه چیز را به پژوهش هستند:

  • تماس با مایکروسافت.
  • آیا چیزی با مدل شی, شاید در رابطه با یکی از ویژگی های.
  • شکل شمای پایگاه داده و به روز رسانی دستی SQL. (شما باید مایکروسافت قبل از انجام این کار هر چند تماس بگیرید; آن به احتمال زیاد قرارداد پشتیبانی خود را از درجه اعتبار ساقط).

اگر کسی می داند که چگونه به حل این, لطفا نظرتان را تایپ کنید.

بروز اواخر بعد از ظهر, 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
مکانی که در آن (شناسایی &پیداکنید;= @ MinID) و (شناسایی &LT;= @ MaxId)
</ویژگی>

بهتر می تواند به نمایندگی از این راه:

<ویژگی نام="RdbCommandText" نوع="System.String">
<![CDATA[
انتخاب dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement از dbo.MCRS_SETTLEMENT
مکانی که در آن (شناسایی >= @ MinID) و (شناسایی <= @ 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 this template (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), I created an ADF that connects to a particular SQL server instance and logs in with a specific user id and password and shown in this snippet:

  <LobSystemInstances>
    <LobSystemInstance نام="ClaimsInstance">
      <خواص>
        <ویژگی نام="AuthenticationMode" نوع="System.String">PassThrough</ویژگی>
        <ویژگی نام="DatabaseAccessProvider" نوع="System.String">SqlServer</ویژگی>
        <ویژگی نام="RdbConnection Data Source" نوع="System.String">actual server\actual instance</ویژگی>
        <ویژگی نام="RdbConnection Initial Catalog" نوع="System.String">actual initial catalog</ویژگی>
        <ویژگی نام="RdbConnection Integrated Security" نوع="System.String">SSPI</ویژگی>
        <ویژگی نام="RdbConnection Pooling" نوع="System.String">غلط</ویژگی>

        <!-- These are the key values: -->
        <ویژگی نام="RdbConnection User ID" نوع="System.String">actual User ID</ویژگی>
        <ویژگی نام="RdbConnection Password" نوع="System.String">actual Password</ویژگی>
        <ویژگی نام="RdbConnection Trusted_Connection" نوع="System.String">غلط</ویژگی>

      </خواص>
    </LobSystemInstance>
  </LobSystemInstances>

It is not a best practice, 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 userid and password
  • embed user id and password in adf
  • embed user id and password in adf bdc
  • sharepoint bdc primer
  • sharepoint embed user id and password in adf

</پایان>

مشترک شدن در وبلاگ من.