一体いつからBoxのフォルダアクセス権を絞れないと錯覚していた?
Boxアドベントカレンダー2023の23日を担当します。だーはらです。
Boxの管理者をしているとユーザーから以下の問い合わせを受けることが年に100万回くらいあるのではないでしょうか。
Boxの部署フォルダに管理職のみにアクセス権を絞ったフォルダを作成してください
/0(すべてのファイル)に自由にフォルダ・ファイルを配置可能な構成なら自由にコラボレートしたら済む話なのですが、昨今のEnterpriseのコンテンツ管理構成では統制型フォルダ設計にしているケースが大半ではないでしょうか。
つまり、部署フォルダ・部署グループ等を作成することで、部署のメンバーはそのフォルダの中身すべてに対してアクセス権が付与されている状態です。
しかしながら、いにしえの時代からファイルサーバを使い続けているWindowsの仕様に魂を縛られた人たちはすぐに「権限を絞りたい」と言い出すのです。
ひと思いにコロニーを落としてしまうのも1つの手なのですが、もうすこし穏便に解決できないか本記事で検討してみようと思います。
実現方法の検討
ざっくり以下2つのパターンで、管理職のみ参加するフォルダを作成することができます。
パターン1:個人用フォルダなどの配下でフォルダを作成してもらい、必要なメンバをコラボレートしてもらう
パターン2:Box管理者側で専用のフォルダを作成し、管理職のみコラボレートしてあげる
パターン1のメリットは、ユーザに管理を任せられることです。Box管理者側で何か操作をする必要がありません。ただし、以下の課題が生じます。
フォルダの管理をしている人が異動(あるいは退職)して、フォルダの管理ができなくなる
フォルダを管理しきれず、コラボレートされていない管理職がいたり、管理職ではなくなった人が残置されていたりする
上記はどちらとも長期維持の観点での課題です。短期的かつ利用者が納得しているのであればそこまで問題はありません。
パターン2のメリットは、IDPと連携して(ABAC等により)該当の部署用の管理職グループが作れるのであれば、パターン1で問題となったコラボレーターの管理に関する課題がクリアされる点です。
また、Box管理者側でフォルダを管理するため、フォルダ管理者の異動や退職に関する課題もクリアされます。
そうして出来上がるフォルダ構成がこちらです。
![](https://assets.st-note.com/img/1702708178647-0Oq6GCJHRg.png)
「XXX部署フォルダ」とは全く別の階層で管理職限定フォルダを作成します。なぜならBoxはフォルダへのアクセス権をフォルダ下位で絞ることができません。部署フォルダとは別に管理職用フォルダを作るしかないのです。
納得して利用してもらえるのならよいのですが、おそらく
組織フォルダの「中に」管理職フォルダを作ってほしい。
といった追加要望を受け付けることになるでしょう。
本当に実現できないのか?
本当はこうしてほしかったのでしょう。
![](https://assets.st-note.com/img/1702709080694-gDVfcbX9FK.png)
Boxで同じ階層のフォルダのアクセス権を片方だけ絞るということは本当にできないのか?
なんとかして同じフォルダ階層に違うアクセス権のフォルダを作ることはできないのか…
実は、できます。Can View Pathをつかえば。
![](https://assets.st-note.com/img/1702716714396-EycOboU36B.png?width=1200)
上の説明にあるこちらの文章に着目してください。
招待されたユーザーが招待に関連付けられているフォルダへの親パス全体を見ることができるかどうかを示します。
フォルダをコラボレートするときに、そのフォルダだけではなく親フォルダまでさかのぼって全てのパスを表示させてコラボレートさせることができます。
このとき、同一階層にある他のフォルダは「親フォルダ」ではないため表示されることはありません。
もう少し具体的に説明すると・・・
「XXX部署フォルダ」をコラボレートしたとき、コラボレーターがアクセス可能になるのは下の絵のオレンジ色の範囲です。
この状態では「XXX部署フォルダ(全員)」と「XXX部署フォルダ(管理職限定)」のどちらもアクセス権が付与されてしまいます。
![](https://assets.st-note.com/img/1702717964142-S0OSEcNvBv.png?width=1200)
そこで、「XXX部署フォルダ(全員)」に対してCanViewPathオプションにTrueを指定して管理職を含めた該当部署の全員をコラボレートします。コラボレートされた人が見える範囲は下の青色の範囲です。「XXX部署フォルダ(管理職限定)」は親フォルダではないため、フォルダが存在していることすらわかりません。
![](https://assets.st-note.com/img/1702718176492-1Vl5Qzh7pZ.png?width=1200)
同様に「XXX部署フォルダ(管理職限定)」に対してもCanViewPathオプションにTrueを指定してコラボレートします。コラボレート対象には管理職ユーザーや、管理職のみ所属しているグループを指定します。コラボレートされた人が見える範囲は下の緑色の範囲です。
![](https://assets.st-note.com/img/1702718598645-m2Nl58ajbi.png?width=1200)
上2つのCanViewPathによるコラボレーションを組み合わせた結果、同じフォルダ階層に異なるアクセス範囲を持つフォルダを作ることができます。
![](https://assets.st-note.com/img/1702720399080-Nl1wUa8Fvb.png?width=1200)
CanViewPathを有効にしたコラボレーションの方法
ではCanViewPathを有効にしてコラボレーションを…どこでやるのでしょう?
![](https://assets.st-note.com/img/1702719170325-355YK27Z5X.png)
実はWebUIによる共有画面に、CanViewPathを有効化する設定はありません。このCanViewPathの機能はAPIによるコラボレーションからのみ実行可能です。
ドキュメントのcurlリファレンスを引用しつつ解説すると、リクエストのBodyで送付するJSONのitemやroleと同じレベルに「"can_view_path": "true",」を追記するだけです。
curl -i -X POST "https://api.box.com/2.0/collaborations" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"item": {
"type": "file",
"id": "11446498"
},
"accessible_by": {
"type": "user",
"login": "user@example.com"
},
"can_view_path": "true",
"role": "editor"
}'
BoxCLIにもCanViewPathオプションは用意されています。
![](https://assets.st-note.com/img/1702719748362-tGAMe12mUW.png?width=1200)
BoxCLIでは、通常のコラボレーションコマンドに「--can-view-path 」をつけるだけです。
box collaborations:create 22222 folder --role editor --user-id 33333 --can-view-path
上のようにCanViewPathはAPIからのみ実行可能ですが、そこまで難しくありません。
ただし、注意しなければならないポイントが3つあります。
1.招待されたユーザーの [すべてのファイル] ページの読み込みに必要な時間が有意に増加することに注意してください。
can_view_pathが有効になっているコラボレーションの数を1ユーザーあたり1,000に制限することをお勧めします。
2.can_view_pathがtrueに設定されているコラボレータを招待できるのは、所有者と共同所有者のみです。
3.can_view_pathは、フォルダのコラボレーションのみに使用できます。
これらを理解してCanViewPathを活用することで、ちょっとだけBoxのフォルダ階層を柔軟に作ることができます。
これで万事解決かというと、実はそうでもなく…組織変更への対処や、管理職不在となってしまったフォルダのクロージングなど、まだまだ課題はあります。こまったらBoxのリセラーさんやCSMさんに聞いてみましょう!
ちなみにBoxのユーザーコミュニティで相談することもできます。ぜひぜひコミュニティに参加してください。
以上。