機能説明
本ドキュメントでは、ナレッジベース内のドキュメント、ファイル、フォルダーに対する権限変更操作について説明します。内容は以下のとおりです。- 権限の追加 — ユーザーにファイル / フォルダーへのアクセス権限を付与します
- 権限の削除 — ユーザーのファイル / フォルダーへのアクセス権限を削除します
- 権限の変更 — ユーザーのファイル / フォルダーに対する権限ロールを変更します
- 権限継承モードの設定 — ファイル / フォルダーが親ノードの権限を継承するかどうかを制御します
- 権限継承モードの取得 — 現在のファイル / フォルダーの権限継承モードを照会します
コアコンセプト:すべての権限操作はファイルの dentryUuid(ファイル一意識別子)に基づいて実行され、操作者は対象ファイルの権限管理能力を備えている必要があります。
権限説明
以下では、さまざまなユーザータイプと権限ロールについて、および各ロールに対応する能力について説明します。権限ロール(roleId)
権限を変更する際は、権限ロールを指定する必要があります。権限ユーザータイプ(members.type)
機能実装:権限の追加
APIPOST /v2.0/storage/spaces/dentries/{dentryUuid}/permissions を呼び出して、指定したユーザーにファイル / フォルダーへのアクセス権限を付与します。
API については 権限の追加 ドキュメントを参照してください。呼び出し方法はサーバー API の呼び出し方ドキュメントを参照してください。
渡す必要があるパラメータ:
dentryUuid(Path):対象ファイル / フォルダーの一意識別子。ファイル検索 API で取得します。unionId(Query):操作者の unionId。ユーザー詳細の照会 API を呼び出して取得できます。roleId(Body):付与する権限ロール(例:EDITOR)。members(Body):権限を付与するユーザーリスト。各ユーザーにはtype(ユーザータイプ)とid(ユーザー ID)を指定する必要があります。
機能実装:権限の変更
APIPUT /v2.0/storage/spaces/dentries/{dentryUuid}/permissions を呼び出して、指定したユーザーの権限ロールを新しいロールに変更します。
権限を下げる際の重要な制限:ユーザーの現在の権限が親ノードから継承されており、親ノードから継承された権限ロールが今回設定しようとする目標ロールよりも高い場合、変更は反映されません。
- 例:親ディレクトリで特定のユーザーに EDITOR 権限を付与している場合、サブフォルダー上でそのユーザーを READER に変更しようとしても失敗します。継承された EDITOR 権限が引き続き有効だからです。
- 解決策:先に対象のファイル / フォルダーに対して 権限継承モードの設定 API を呼び出し、継承モードを BREAK(打ち切り)に設定して親ノード権限の伝播を遮断してから、権限を変更してください。
API については 権限の変更 ドキュメントを参照してください。呼び出し方法はサーバー API の呼び出し方ドキュメントを参照してください。
渡す必要があるパラメータ:
dentryUuid(Path):対象ファイル / フォルダーの一意識別子。ファイル検索 API で取得します。unionId(Query):操作者の unionId。ユーザー詳細の照会 API を呼び出して取得できます。roleId(Body):変更後の目標権限ロール(例:EDITOR から READER へ変更)。members(Body):権限を変更するユーザーリスト。
機能実装:権限の削除
APIPOST /v2.0/storage/spaces/dentries/{dentryUuid}/permissions/remove を呼び出して、指定したユーザーのファイル / フォルダーへのアクセス権限を削除します。
API については 権限の削除 ドキュメントを参照してください。呼び出し方法はサーバー API の呼び出し方ドキュメントを参照してください。
渡す必要があるパラメータ:
dentryUuid(Path):対象ファイル / フォルダーの一意識別子。ファイル検索 API で取得します。unionId(Query):操作者の unionId。ユーザー詳細の照会 API を呼び出して取得できます。roleId(Body):削除する権限ロール(ユーザーが現在実際に保持しているロールと一致している必要があります)。members(Body):権限を削除するユーザーリスト。
機能実装:権限継承モードの設定
APIPUT /v2.0/storage/spaces/dentries/{dentryUuid}/permissions/inheritances を呼び出して、ファイル / フォルダーが親ノードの権限を継承するかどうかを制御します。
2 種類の継承モード:
- PASS_ON(伝達):現在のノードがすべての親ノードの権限を継承し、同一ユーザーの権限は最大値が採用されます(デフォルトモード)。
- BREAK(打ち切り):現在のノードで権限の伝達を打ち切り、親ノードの権限を継承しません。個別に独立した権限を設定する必要があるシーンに適しています。
説明
BREAKモードでは、OWNERおよびMANAGERロールの継承を打ち切ることはできません。- API については 権限継承モードの設定 ドキュメントを参照してください。呼び出し方法はサーバー API の呼び出し方ドキュメントを参照してください。
渡す必要があるパラメータ:
dentryUuid(Path):対象ファイル / フォルダーの一意識別子。ファイル検索 API で取得します。unionId(Query):操作者の unionId。ユーザー詳細の照会 API を呼び出して取得できます。inheritance(Body):継承モード PASS_ON または BREAK。
機能実装:権限継承モードの取得
APIGET /v2.0/storage/spaces/dentries/{dentryUuid}/permissions/inheritances を呼び出して、現在のファイル / フォルダーの権限継承モードを照会します。
説明
- API は
inheritanceフィールドを返します。値は PASS_ON(伝達)または BREAK(打ち切り)です。 - API については 権限継承モードの取得 ドキュメントを参照してください。呼び出し方法はサーバー API の呼び出し方ドキュメントを参照してください。
渡す必要があるパラメータ:
dentryUuid(Path):対象ファイル / フォルダーの一意識別子。ファイル検索 API で取得します。unionId(Query):操作者の unionId。ユーザー詳細の照会 API を呼び出して取得できます。
典型的なシーンと操作手順
シーン 1:特定ユーザーにファイル編集権限を追加する
- ファイル検索 API を使用して、対象ファイルの
dentryUuidを取得します。 - ユーザー詳細の照会 API を使用して、対象ユーザーの
userIdと操作者のunionIdを取得します。 - 権限の追加 API を呼び出します。
roleId = "EDITOR"、members[0].type = "USER"、members[0].id = 対象ユーザー userIdを指定します。
シーン 2:特定ユーザーの権限を編集者から閲覧のみに降格する
- ファイル検索 API を使用して、対象ファイルの
dentryUuidを取得します。 - ユーザー詳細の照会 API を使用して、対象ユーザーの
userIdを取得します。 - 権限の変更 API を呼び出します。
roleId = "READER"を指定し、membersに対象ユーザーを指定します。
シーン 3:特定ユーザーのファイルに対するすべての権限を削除する
- ファイル検索 API を使用して、対象ファイルの
dentryUuidを取得します。 - ユーザー詳細の照会 API を使用して、対象ユーザーの
userIdを取得します。 - 権限の削除 API を呼び出します。
roleIdには該当ユーザーが現在保持している権限ロールを指定し、membersに対象ユーザーを指定します。
シーン 4:特定のサブフォルダーに独立した権限を設定する(親ディレクトリから継承しない)
- ファイル検索 API を使用して、サブフォルダーの
dentryUuidを取得します。 - 権限継承モードの設定 API を呼び出し、
inheritance = "BREAK"で権限継承を打ち切ります。 - さらに 権限の追加 API を呼び出し、該当フォルダーに必要な権限ユーザーとロールを個別に設定します。
注意事項
- 操作者(
unionId)は対象ファイルの権限管理能力を備えている必要があります。そうでない場合、権限不足のエラーが返されます。 - 権限を削除する際、
roleIdはユーザーが現在実際に保持している権限ロールと一致している必要があります。一致しない場合、操作は無効になります。 - OWNER および MANAGER ロールの権限は、BREAK モードによる継承の打ち切りには対応していません。
membersリストは 1 回につき最大 30 ユーザーまで指定できます。超過する場合は分割して呼び出してください。- 現在、すべての権限 API は社内アプリのみ対応しており、サードパーティアプリは未対応です。