SharePoint 권한을 CSOM 개체 관점에서 봅니다.

10257 단어 SharePointCSOMC#
SharePoint 콘텐츠는 크게 나누면 사이트, 목록, 항목의 세 가지 유형으로 나뉩니다.
그런 다음 해당 콘텐츠에는 사용자 또는 그룹별로 권한이 할당됩니다.

이 게시물에서는 사이트 권한을 예로 들어 SharePoint 권한과 CSOM 개체를 연결하여 CSOM 개체에 대한 이해를 높이는 것을 목표로 합니다.

환경


  • .NET Framework 4.6.1
  • Microsoft.SharePointOnline.CSOM 16.1.19515.12000
  • SharePointPnPCoreOnline 3.16.1912

  • 샘플 코드


  • SecurableObjectSample.cs
  • WebSample.cs

  • 사이트 권한



    사이트 콘텐츠 > 사이트 설정 > 사이트 권한을 열면 다음과 유사한 화면이 표시됩니다. 사이트 권한 화면에 표시되는 내용을 CSOM 개체로 바꾸면 다음과 같습니다.

  • RoleAssignmentCollection … 사이트 권한이 할당된 사용자(그룹) 목록
  • RoleAssignment … 사이트 권한이 할당된 사용자(그룹) 단위
  • Principal … 사용자 (그룹)
  • RoleDefinitionBindingCollection ... 사용자 (그룹)에 할당 된 사용 권한 수준 목록
  • RoleDefinition … 권한 수준 단위

  • 권한 수준



    사이트 권한 화면의 권한 탭에서 사용 권한 수준을 클릭하면 다음과 유사한 화면이 표시됩니다. 사용 권한 수준 화면에 표시되는 내용을 CSOM 개체로 바꾸면 다음과 같습니다.


  • RoleDefinitionCollection … 권한 수준 목록
  • RoleDefinition … 권한 수준 단위
  • RoleType ... 권한 수준 유형 (기본 권한 수준을 제외하고 없음)
  • BasePermissions ... 권한 수준에 포함 된 권한 목록 (PermissionKind의 논리 OR 연산 결과)
  • PermissionKind … 권한 레벨에 포함할 권한 단위

  • CSOM에서 사이트 권한 출력



    SharePoint 콘텐츠에 할당된 권한 정보를 출력하는 샘플 코드입니다.
    SecurableObject 클래스를 상속하는 사이트(Web), 목록(List), 항목(ListItem) 클래스에서 유용할 수 있습니다.
    securableObject.EnsureProperties(
        // オブジェクトの権限を読み込む
        w => w.RoleAssignments.Include(
            r => r.Member.Title,
            r => r.Member.PrincipalType,
            // 対象オブジェクトの権限を与えられたユーザー or SPグループのアクセス許可レベルを読み込む
            r => r.RoleDefinitionBindings.Include(
                d => d.BasePermissions,
                d => d.Name,
                d => d.RoleTypeKind)));
    
    // 対象オブジェクトの権限を出力
    foreach (var roleAssignment in securableObject.RoleAssignments)
    {
        foreach (var roleDefinition in roleAssignment.RoleDefinitionBindings)
        {
            Console.WriteLine($"{roleAssignment.Member.Title} " +
                              $"| {roleAssignment.Member.PrincipalType} " +
                              $"| {roleDefinition.RoleTypeKind} " +
                              $"| {roleDefinition.BasePermissions.GetHashCode()} " +
                              $"| {roleDefinition.Name}");
        }
    }
    
    // 出力結果
    // ContosoCommunication 所有者 | SharePointGroup | Administrator | 2147483646 | フル コントロール
    // ContosoCommunication 所有者 | SharePointGroup | WebDesigner | 1012866479 | デザイン
    // ContosoCommunication 閲覧者 | SharePointGroup | Reader | 138613009 | 閲覧
    // ContosoCommunication メンバー | SharePointGroup | Editor | 1011031199 | 編集
    // user 100 | User | None | 1011029151 | 投稿コピー
    

    CSOM에서 사이트 사용 권한 수준 출력



    사이트의 액세스 권한 레벨을 출력하는 샘플 코드입니다.
    사용 권한 수준은 상위 사이트에서 정의됩니다. 참조만 하면 어떠한 사이트(Web) 클래스의 객체로부터 취득할 수 있습니다.
    web.EnsureProperties(
        // サイトのアクセス許可レベルを読み込む
        w => w.RoleDefinitions.Include(
            r => r.RoleTypeKind,
            r => r.BasePermissions,
            r => r.Name,
            r => r.Description));
    
    // サイトのアクセス許可レベルを出力
    foreach (var roleDefinition in web.RoleDefinitions)
    {
        Console.WriteLine($"{roleDefinition.RoleTypeKind} " +
                          $"| {roleDefinition.BasePermissions.GetHashCode()} " +
                          $"| {roleDefinition.Name} |" +
                          $"| {roleDefinition.Description}");
    }
    
    // 出力結果
    // Administrator | 2147483646 | フル コントロール || 完全な制御が可能です。
    // WebDesigner | 1012866479 | デザイン || 表示、追加、更新、削除、承認、カスタマイズができます。
    // Editor | 1011031199 | 編集 || リストを追加、編集、削除できます。リスト アイテムとドキュメントを表示、追加、更新、削除できます。
    // Contributor | 1011029151 | 投稿 || リスト アイテムとドキュメントを表示、追加、更新、および削除できます。
    // Reader | 138613009 | 閲覧 || ページとリスト アイテム の表示、およびドキュメントのダウンロードができます。
    // Guest | 134287408 | 制限付きアクセス || 権限を与えられている場合は、特定のリスト、ドキュメント ライブラリ、リスト アイテム、フォルダー、またはドキュメントを表示できます。
    // None | 1011029151 | 投稿コピー ||
    

    참조



    SharePoint 사용 권한 수준 정보 | Microsoft Docs

    좋은 웹페이지 즐겨찾기