はじめに
ごきげんよう、百合宮桜(Miyu)です(*'▽')
Power Apps の使い方を教えていると、よくこんな相談を受けます。
- 入力と管理を1つのアプリに入れたい
- しかし管理の機能は利用できる人を制限したい(入力機能はアプリユーザー全員利用可)
- だから管理画面にアクセスするための ID とパスワードでログインする仕組みを作りたい
- Power Apps Premium は使えないので、Microsoft 365 のライセンスだけで!
技術的には実装可能です。でも絶対にやってはいけません。本稿ではその理由と代替策を説明します。
ログインってどういう仕組み?
ユーザーに ID と パスワードを入力してもらい、その ID とパスワードの組合せをデータベースで照合します。その結果、照合できればログイン成功、できなければログインが失敗するという仕組みです。
やってはいけない理由
Microsoft 365 のライセンスだけで Power Apps を利用いただく場合、利用できるデータベースは SharePoint Lists か Excel のいずれかになります。本稿ではこの2つのいずれかを利用する前提で、やってはいけない理由を説明します。
1. ID・パスワードを安全に管理できない
SharePoint Lists と Excel は ID やパスワードを保存するためのデータベースではありません。
そのため ID やパスワードといった重要な情報でも
- 暗号化されない
- 平文(誰もがそのまま読める状態)のまま
という状態で保存されます。
そのうえ、これらのデータベースは行やユーザーごとに厳密なアクセス制御をおこなうことが難しいです。そのため、データベースにアクセス権がある人はすべてのデータを編集 / 閲覧できる状態になりがちです。
もし、アプリで利用している ID・パスワードを他のサイト(例 Amazon や楽天トラベルなど)でも使いまわしていた場合、その情報を使って不正ログインされる危険性があります。
自分のアカウントで他者が勝手に買い物をしたり、旅行を予約したら……? その結果、勝手に自分のお金が使われていたら……? と考えるとリスクが大きいことを認識頂けると思います((((;゚Д゚))))
2. データの持ち出しが簡単
Excel はファイルそのものですし、SharePoint Lists も Excel や CSV にエクスポートしファイル化できます。そのため、データベースにアクセスできる人なら 誰でも これらのデータを外部に持ち出し、不正アクセスや情報漏洩に加担できてしまいます。
犯人が誰であれ、アプリを作った人も 重大なセキュリティリスクを見逃した として一定の責任を問われる可能性があります。せっかく頑張って作ったのに悲しすぎる結末です……(´・ω・`)
3. トラブルの原因になりやすい
SharePoint Lists や Excel は行やユーザーごとにアクセス権を制御するのが難しいです。そのため、他者のデータも編集・削除できる可能性があります。
したがって 故意に
- 他者の ID やパスワードを変更する
- 他者のデータを削除する
というトラブルが発生かもしれません。
その場合
- 原因の調査
- 復旧対応
- アプリユーザーへの説明
- 再発防止策の検討
といった対応が必要になります。
業務の効率化や残業削減を目指してアプリを作ったにも関わらず、これらのトラブルによって業務負荷を増やしてしまっては本末転倒です(´;ω;`)ウゥゥ
代替策
どうしてもログイン機能を作りたい!!という方のために、代表的な代替策を簡単に書いておきます。以下の点に注意しつつ読んでください。
- これらの代替策はあなたのアプリにとって最善とは限りません
- 1つだけ対策すれば良いというものでもありません
- 場合によっては複数の対策を行った方が良いこともあります
- 最善は要件によって変わります
もっと詳しく知りたいよって方やログイン機能を諦めたいけど周囲を説得できないという方は BizOptimars の DX55 もしくは伴走支援にご相談ください。
ボスが元気に答えてくれます。
1 のリスクを低減したい場合
以下のような特徴を兼ね備える 単一 のデータをログインに使うのがおすすめです。
- アプリユーザー1人につき1つずつ割り当てられている
- 他サイト(例 Amazon や楽天トラベルなど)で利用しない
私がぱっと思いつくのは社員番号や社用のメールアドレスですね。
ID とパスワードのように複数を組み合わせると、情報漏洩時のリスクがあがりますのでお気をつけてください。
2 のリスクを低減したい場合
SharePoint Lists や Excel にデータを保存する場合、アプリの開発者ができる対策はほぼありません。しいて言うなら 1 の対策であげたような漏洩させる価値がない情報でログイン機能を実装することで、持出意欲を減退 させることくらいです。
データの保存先を Dataverse に変更できる場合は、行レベルのセキュリティやセキュリティロールなど Dataverse 独自の機能によって
- 自分のデータは閲覧 / 編集できる
- 他者のデータは閲覧も、編集もできない
という状態を実現することができます。
このリスクを低減させたい場合は Power Apps Premium と Dataverse の活用をぜひご検討ください。
3 のリスクを低減したい場合
SharePoint Lists や Excel にデータを保存する場合は、データの編集・削除の履歴を保存する仕組みを作り、ルールを徹底しましょう。これによってデータの履歴を保存せず、直接変更や削除をした場合はルール違反とすることで、原因の調査やアプリユーザーへの説明が容易になりますし、ルールが明確になることで違反行為を行いにくくなります。
しかし、このような仕組みを作っても、SharePoint Lists や Excel はその性質上、直接変更や削除を行う可能性をゼロにできません。このような可能性をゼロにしたい場合は Dataverse の活用をご検討ください。
おわりに
今回は Power Apps でログイン画面を作ってはいけない理由を説明しました。
ログインという仕組みは身近なので、つい作ってみたくなりますが、安心安全に運用するにはプロの技が必要な場面も多いです。
できれば作ることを避け、アプリを分けることを検討してみてください。それではごきげんよう(*'▽')


