SharePoint 安全基礎知識入門 / 避免常見的陷阱

更新 12/18/07: 請參閱刪除或修改預設的組名的一些技術的後果 Paul Liebrand 文章 (也見他下面的評論).

概述:

SharePoint 安全是易於配置和管理. 不過, 它已被證明是真的包裝他們的手在它附近一些第一次管理員難以. 不只如此, 我見過一些管理員來到一個完美的理解,在週一只把它丟了週五因為他們沒有做任何配置在這段時間. (我承認我自己有這個問題). 這篇博客希望提供一個有用的 SharePoint 安全引子和指向一些安全配置的最佳實踐.

重要說明:

這種描述基於開箱即用 SharePoint 安全. 我個人的經驗被面向各地苔蘚,所以可能會有一些苔蘚的具體東西在這裡, 但我相信它是準確的 WSS. 我希望看到的任何錯誤或遺漏的任何人都將點,在評論中或 電子郵件通知我. 我會改正後匆忙.

基礎知識:

為施行本概述, 有四個基本方面的安全: 使用者/使用者組, 安全物件, 權限等級和繼承.

使用者和組 打破降到:

  • 個人使用者: 拉扯了從活動目錄或直接在 SharePoint 中創建.
  • 團體: 從 active directory 直接映射或在創建 SharePoint. 組是使用者的集合. 組是全球化的網站集合中. 他們永遠不會"綁" 安全物件的特定物件.

安全物件 打破降到最少:

  • 網站
  • 文件庫
  • 清單和文件庫中的個別項
  • 資料夾
  • BDC 的各種設置.

那裡其他的安全物件, 但你得到的圖片.

權限等級: 捆綁的顆粒 / 在清單中包含諸如創建/讀取/項目剪除的低級別的存取權限.

繼承: 預設情況下從其包含的物件實體繼承安全設置. 子網站從其父項繼承許可權. 繼承他們網站的文件庫. 等等等等等等.

與使用者和組物件有關的安全物件的權限等級和繼承通過.

最重要的安全規則,來理解, 曾經🙂 :

  1. 組是簡單的使用者的集合.
  2. 組是全球網站集內 (e 小節. 沒有這種東西在網站級別上定義的一個組).
  3. 不耐的組名稱, 團體卻不, 在和自己的, 有任何特定的安全水準.
  4. 組在某一特定的安全物件的上下文中具有安全.
  5. 你可以到每個安全物件的同一組分配不同的權限等級.
  6. Web 應用程式策略勝過這一切 (請參閱下面的).

安全管理員組和使用者清單的海洋中失去了總可以依靠這些公理來管理和瞭解他們的安全配置.

常見的陷阱:

  • 組名稱錯誤地暗示的許可權: 外框, SharePoint 定義一組組名字暗示了固有的安全級別. 考慮"參與者"組. 一個熟悉 SharePoint 安全性可能會看看那名字,假設,那組的任何成員可以"作出貢獻" 對任何網站/清單/庫在門戶中. 這可能是真的,但並不是因為該集團的名字恰巧是"討論參與者". 這是唯一真正開箱即用,因為該集團提供了權限等級,使它們能在根網站添加/編輯/刪除內容. 通過繼承, "派遣" 集團也可能在每個分網站添加/編輯/刪除內容. 一個可以"打破" 繼承鏈和更改一個子網站的權限等級的成員的所謂的"參與者" 組不能在所有作出貢獻, 但只能讀取 (舉個例子). 這不會是一個好主意, 很明顯, 因為它將是非常令人困惑.
  • 組不在網站級別定義. 它很容易被混淆的使用者介面. Microsoft 提供了方便的連結到使用者/組管理通過每個網站的"人和組" 連結. 很容易相信,當我在網站"xyzzy" 我創建一個組通過 xyzzy 的人和團體聯繫起來,我只是在 xyzzy 創建只存在一組. 這不是個案. 我實際上已經創造了一群為整個網站集.
  • 組成員身份不會由網站不同 (e 小節. 到處都使用組是相同): 考慮"擁有者組" 和兩個網站, "HR" 和"物流". 它會正常想兩個獨立的個體將會擁有這些網站 — HR 擁有者和物流擁有者. 使用者介面輕鬆安全管理員責難這種情況下. 如果我不知道更好, 我可能會訪問的人和群體通過人力資源網站連結, 選擇"業主" 組並向該組添加我的 HR 主人. 一個月後, 物流上線. 訪問從物流網站中的使用者和使用者組, 添加"業主拉起" 集團. 我看到那裡 HR 擁有者和刪除她, 我在消除她從擁有者在物流網站的思考. 事實上, 我在消除她從全球的擁有者組. 接著而來的歡樂.
  • 故障到基於特定角色的名稱組: "核准者" 組是一個完美的例子. 什麼可以這組批准成員? 他們在那裡能批准它? 我真的想人物流部門能夠批准人事相關檔嗎? 當然不是. 始終命名組基於其在組織內的角色. 這將減少風險的組分配特定的安全物件所需的權限等級. 基於其預期角色名稱組. 在前面的 HR/物流場景, 我應該創建兩個新組: "HR 業主" 與"物流業主" 和分配每個合理的權限等級和那些使用者做他們的工作所必需的最低金額.

其他有用的參考:

如果你讓它這個遠:

請讓我知道你的想法通過評論或給我發電子郵件. 如果你知道其他有益的參考, 請這樣做!

Technorati 標籤:

快速而方便地: 創建資料檢視 Web 組件 (DVWP)

有豐富的 WSS 的偉大資訊 3.0 資料檢視 Web 組件 (DVWP) 從幾個來源網上. 不過, 我發現它是出奇地難以找到非常基本的第一步的資訊. 這裡是另一篇文章中的"快速和容易" 要解決這系列.

按照這些步驟來創建一個資料檢視 web 部件 (DVWP). 它們基於"公告" web 部件, 但適用于大多數清單.

  1. 創建通知 web 部件並將其添加到網站.
  2. 在 SharePoint 設計器中打開網站.
  3. 打開該網站的 default.aspx.
  4. 選擇通知 web 部件,然後按右鍵.
  5. 從內容功能表中, 選擇"轉換到 XSLT 資料檢視".

SharePoint 設計器將通知您此網站現在從其網站定義自訂. 這未必是壞事, 但也有重要的影響 (性能, 升級, 其他人) 超出了這個小小"快速和容易的範圍有哪些" 條目. 要獲取關於此主題的詳細資訊, 我推薦兩本書 在這裡 以及您最喜愛的互聯網搜索.

確認你是正確:

  1. 關閉並重新打開 web 瀏覽器 (為了避免意外地重新發佈原始的"添加新的 web 部件").
  2. 選擇 web 部件的下拉箭頭,然後選擇"修改共用 Web 組件" 從功能表中.
  3. 工具面板打開向右.
  4. 小組已經從其慣常的 set 選項更改成這:
圖像

“不能從 SharePoint 清單中獲取清單架構列屬性” — 描述-變通

這一周, 我們最後轉載的問題,報告了由遠端使用者: 當她試圖匯出為 excel 清單的內容, 事情似乎開始工作, 但然後 Excel 會彈出一個錯誤: "不能從 SharePoint 清單獲取清單架構列屬性". 她跑了辦公室 2003, windows XP 和連接到苔蘚.

搜索互聯網,並看見一些投機但沒有內容 100% 確定. 因此, 這篇文章.

問題: 匯出視圖以 excel,包含日期 (日期 = 列的資料類型).

什麼為我們工作: 轉換到"單行文本"日期. 然後, 將其轉換回日期.

這解決了這個問題. 很高興看到轉換工作, 實際上. 這是很緊張,這種方式轉換的事情會失敗, 但它卻沒有.

此 bug 已引發了巨大的陰影對用戶端的頭腦中的日期資料類型, 所以我們要找出一個明確的答案,從 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

<結束>

訂閱我的博客.

Technorati 標籤: ,

快速和簡單: 嵌入超連結通過電子郵件發送從 SharePoint 設計師工作流

每月一次或兩次, 有人張貼論壇問題: "如何包括指向是從 SharePoint 設計器電子郵件可點擊的 URL 的超連結?"

提交不進一步評論: (很好, 其實有進一步的評論意見後圖像):

圖像

貝基 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

新的發行版本: SharePoint 設計師工作流擴展 (字串操作函數)

更新: 在這裡看到的商業化這一專案的思考: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

我一直忙著我的 Codeplex 專案,目前重點是提供字串操作擴展到通過 SharePoint 設計器創建的工作流.

詳細資訊,請參閱在這裡:

專案主頁: http://www.codeplex.com/spdwfextensions

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

版本 1.0 包括以下新功能:

函數 說明 (如果不相同.net 函數,)
Num 條目() 返回數位的"條目" 根據指定的分隔符號分隔的字串中.

舉個例子: 在一個字串中的 Num 條目",b,c" 帶分隔符號"," = 3.

條目() 根據指定的分隔符號分隔的字串中返回的第 n 個標記.
長度 String.Length
替換() String.Replace()
包含() String.Contains()
返回"true 一詞" 或者"false"一詞.
子字串(啟動) String.Substring(啟動)
子字串(啟動,長度) String.Substring(啟動,長度)
ToUpper() String.ToUpper()
String.tolower() String.ToLower()
StartsWith() String.StartsWith()
返回"true 一詞" 或者"false"一詞.
EndsWith() String.EndsWith()
返回"true 一詞" 或者"false"一詞.

解釋的 BDC 執行階段錯誤

我引起體現使用者介面上,並在一個 BDC 錯誤這一周 12 配置單元日誌 在運行時.

第一次, 這似乎在使用者介面中:

找不到要插入的所有識別碼值正確執行,具有名稱的 SpecificFinder MethodInstance 欄位 … 確保輸入的參數都有與為此實體定義每個識別碼關聯的 TypeDescriptors.

這裡是一個螢幕擷取畫面:

clip_image001

我也可能導致該消息出現在 12 配置單元日誌中的,將 (使用我的專利的 high-tech-don't-try-this-at-home "神秘的錯誤" 方法):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0在 BusinessDataWebPart.OnPreRender x0B8C SharePoint 門戶伺服器業務資料 6q4x 高異常: System.InvalidOperationException: 識別碼值 ”, 類型的 ”, 是不正確. 預期的識別碼值的類型 '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 論壇, 但是他們並沒有足以讓我明白自己在做什麼錯. 我看過網路的廣播 泰德帕蒂森 那我 公司 伺服器和來實現我的問題上存了.

在我的 ADF, 我連接到 SQL 資料庫,如圖所示:

            <屬性 名稱="RdbCommandText" 類型="System.String">
              <![CDATA[
                選擇 SETID, CARRIER_ID, EFFDT, 描述, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      國家, 位址 1, 位址 2, 位址 3, ADDRESS4, 城市, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      縣, 狀態, 郵政, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, 電話, 擴展, 傳真, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG 從 dbo.PS_CARRIER_ID_VW 與 (nolock)
                在哪裡
                  (SETID <> 份額) 和
                  (較低(CARRIER_ID) >= 低(@MinId)) 和
                  (較低(CARRIER_ID) <= 低(@MaxId)) 和
                  (較低(描述) 喜歡低(@InputDescr))
                ]]>
            </屬性>

我提供了該 SQL 從一個 DBA 人,據我所瞭解,它是 特別 他們只是為我創建視圖. 有唯一的鍵是 CARRIER_ID.

這裡是我介紹的 bug:

      <識別碼>
        <識別碼 名稱="CARRIER_ID" TypeName="System.String" />
        <識別碼 名稱="描述" TypeName="System.String" /> 
</識別碼>

地方線沿線, 我曾設法迷惑自己的意思 <識別碼> 添加描述,即使它不是實際上的識別碼. 我從識別碼設置,就可以了描述! 它所有的工作.

我希望這可以為某人節省一些痛苦🙂

Technorati 標籤: , , ,

你不能打敗 SharePoint 的覆蓋範圍

在最後兩天, 我已經參加了兩次會議,在此期間,我們提出了 SharePoint 專案的結果. 首席資訊官和他的團隊加入第一次會議. 這是標準並不特別值得注意. IT 部門是明顯是涉及在企業範圍內部署的任何技術專案. 第二次會議擴大到包括 V.P. 從市場行銷, 幾個董事代表 HR, 物流, 製造業, 資本專案, 品質, 購買, 企業的發展和其他部門 (其中一些人不在目前階段甚至直接涉及). 這就是強大廣泛的受眾.

在我以前的生活, 我主要從事的 ERP 和 CRM 專案. 他們都有一個相當廣泛的解決方案域但不是與 SharePoint 一樣寬. 要充分實現, SharePoint 專案合法和一定達到融入組織的每一個角落. 多少其他企業解決方案都有那種到達? 不是很多.

SharePoint 顯然是巨大的機遇,對於我們有幸能在這空間. 它提供了一個很大的技術機會 (其中以某種方式開啟了它的頭 在這裡 根據"技術你必須掌握"). 但更好, SharePoint 我們暴露在廣泛和寬範圍的業務流程,通過這些服務. 多少的 CRM 專家工作與製造方面的公司? 多少的 ERP 顧問工作與人力資源人才採集? SharePoint 超過他們兩個.

像什麼, 它並不完美, 但它是享受這個美好的地方.

愛 [填寫您最愛的人/高正], 不要更改標題’ 網站欄.

關於 SharePoint 論壇, 有人偶爾會問起"更改標題的標籤" 關於"從或刪除標題清單".

底線: 不這樣做!

不幸的是, 使用者介面允許單向的列標籤,如圖所示的變化:

圖像

標題是"項關聯的列" 內容類型. 很多, 很多, 許多 CT 的使用此列,如果您在此處更改它, 它的漣漪出無處不在. 有是一個好機會,你不是有意這樣的事情發生. 你也許是對自己的思維, "我有一個自訂查找清單和 ' 標題’ 只是沒道理作為列名稱, 所以我要將其更改為狀態碼’ 然後添加一個描述列。" 但如果你堅持這種想法和重命名 ' 標題’ 向狀態碼, 每個清單標題 (包括文件庫) 對"狀態碼的更改" 和你大概 不想讓這種情況發生.

真正的問題是這是一個單向的變化. 知道的 UI"" 標題"" 是一個保留的字. 所以, 如果你試著更改"狀態碼" 返回到"標題", 它會阻止你和你現在 把自己塗成一個角落 使用永不干燥的油漆🙂

如果您已經更改了它所以會發生什麼? 我還沒見過我們所有想要的答案, 這是一種簡單和容易的方法,以標籤更改為標題. 馬上, 最好的建議是要將其更改為類似于"Doc/專案標題". 這就是足夠一般的標籤,不可能為您的使用者太刺耳.

我有幾個其他的想法,都在研究的事情我待辦事項清單:

  • 與 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 標記在其"自然裡面" 表單. 所以, 這尷尬的建築:

<屬性 名稱="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 簡介

功能示例: 連接到 SQL 資料庫與嵌入的使用者 id 和密碼的 BDC ADF

我需要到 SQL 資料庫通過 BDC 接通苔蘚. 為測試/POC 目的, 我想要在 ADF 中嵌入的 SQL 帳戶使用者 id 和密碼. 從開始 此範本 (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), 我創建了 ADF,連接到特定的 SQL server 實例,並使用一個特定的使用者 id 和密碼登錄和代碼片斷所示:

  <LobSystemInstances>
    <LobSystemInstance 名稱="ClaimsInstance">
      <屬性>
        <屬性 名稱="AuthenticationMode" 類型="System.String">直通</屬性>
        <屬性 名稱="DatabaseAccessProvider" 類型="System.String">SqlServer</屬性>
        <屬性 名稱="RdbConnection 資料來源" 類型="System.String">實際 serveractual 實例</屬性>
        <屬性 名稱="RdbConnection 初始目錄" 類型="System.String">實際的初始目錄</屬性>
        <屬性 名稱="RdbConnection 集成安全性" 類型="System.String">SSPI</屬性>
        <屬性 名稱="RdbConnection 池" 類型="System.String">false</屬性>

        <!-- 這些都是索引碼: -->
        <屬性 名稱="RdbConnection 使用者 ID" 類型="System.String">暗訪的使用者 ID</屬性>
        <屬性 名稱="RdbConnection 密碼" 類型="System.String">實際的密碼</屬性>
        <屬性 名稱="RdbConnection Trusted_Connection" 類型="System.String">false</屬性>

      </屬性>
    </LobSystemInstance>
  </LobSystemInstances>

它不是一種最佳做法, 但它是有用的快速和簡單的配置來測試. 這是出奇地難以弄清楚. 我從來沒有發現一個帶有搜索關鍵字的功能示例:

  • adf 嵌入的使用者 id 和密碼
  • 在 adf 中嵌入的使用者 id 和密碼
  • 在 adf bdc 中嵌入的使用者 id 和密碼
  • sharepoint bdc 底漆
  • sharepoint 在 adf 中嵌入的使用者 id 和密碼

</結束>

訂閱我的博客.