Posted at

【MS FLOW】Microsoft flowでアクセス権が絞られたファイルに対して書き込みを行う力技(非推奨)

課題も多いので、非推奨の扱いで…


前提

こんな階層の組織を前提とする


  • Aさん(偉い人)


    • Bさん(平)

    • Cさん(平)

    • Dさん(平)



そして、全員が実行できる「勤怠管理フロー」が存在するのだが、勤怠管理簿を改ざんされるのは困るので、アクセス権を絞っている


  • 「勤怠管理簿.xlsx」


    • Aさん:読み取り書き込み可能

    • Bさん~Dさん:参照すら不能



つまり、Bさん~Dさんがフローを実行しても、ファイルに書き込みができない


対処案A:フロー内でMicrosoft Graph APIを呼び出し書き込み権限を付与する

Microsoft Graph APIを呼び出して以下の処理をフローに組み込む


  • ファイルに書き込む直前に、フロー実行者に書き込み権限を与える

  • 書き込み終わったら、権限を削除する

実際にやってみると、以下の問題がある


  • 権限は正常に付与できているのに、(稀に)ファイルを開けないケースがあった


    • 権限付与後に一定時間スリープとかすれば良いのかも知れない(未検証)



  • Graph APIを呼び出すまでの下準備がめんどくさい(Azure Active Directory)

  • フローの可読性が悪く、なんのフローを回しているのか理解不能になる


対処案B:フローを分け、必ず、管理者で読み書きするように一手間加える

フローを以下の2つに分ける


  • 勤怠管理フロー


    • Aさん~Bさん実行可能

    • HTTPのアクションから、↓の書き込みフローを呼び出す



  • 勤怠管理簿書き込みフロー


    • Aさん実行可能

    • 「HTTP要求の受信時」をトリガーにし、起点となるURLを払い出しておく



フローはスッキリするし、Graph APIを呼び出す煩わしさはなくなるものの、下記の課題がある


  • 勤怠管理簿の更新者は常にAさん


    • そりゃあ、アクセス権ないんだから仕方ないけど、扱うファイルの内容によっては、監査上、問題になる可能性も



  • 勤怠管理簿書き込みフローは、URLなどがわかってしまえば、外部から呼び出しも可能


    • URLや渡すJSONの仕様が分かっていれば、Postmanなどからサクッと叩けちゃう

    • そのため、呼び出しに認証をかけるなどの工夫が必要

    • 結局、書き込みフローの見通しが悪くなる(とはいえ、全部1つのフローで回すよりはマシ)




まとめ

ベストプラクティスは存在しないものの、アクセス権限が付与されていないファイルへの読み書きは、良いか悪いかは別にして一応実現可能