Power Apps Portals 上で利用者により正しい設定が行われていない場合、意図しない情報が外部から参照される可能性が見つかり、外部セキュリティ機関のUpGuardにより米国時間2021年8月23日に発表されたため、該当するかの確認方法、可能性のある方向けに各種設定の確認や見直しの実施方法を掲載しています。

※コメント欄やお問い合わせフォームから本件について連絡されてもお返事しかねますので、正式な回答は日本マイクロソフトおよびサポート窓口にお問い合わせください。

背景

Power Apps Portals にはポータルサイト上で Microsoft Dataverse のデータを公開できる機能があり、開発者でなくても簡単にデータをリスト表示させられるようになっています。Power Apps Portal はキャンバスアプリでもモデル駆動型アプリでもなく、別の種類のアプリです。Power Apps ポータルが何かについてはこちらをご覧ください。

Power Apps ポータルの作成者画面

モデル駆動型アプリとキャンバスアプリを利用する際は、セキュリティロール機能などを利用し、利用者のデータへのアクセス制御を細かく設定でき、アクセス権限がなければデータへアクセスすることはできず、外部公開すること自体、設定上できません。

Power Apps ポータルに限り、外部アクセスを有効にすることができ、認証されたユーザーか、認証されていないユーザー(いわゆる、ゲストユーザー)がアクセスできるように構成できます。ポータルアプリの場合はセキュリティロールの代わりにウェブロールとテーブル権限という機能が搭載されており、同じく細かくアクセス制御ができます。

機能の1つとして「テーブル権限を有効化」という設定項目があるのですが、その名の通り、これを有効化すると公開するリストに対してテーブル権限機能を有効化します。有効化されていない場合は誰でもリストへアクセスできるようになっており、有効化されている場合はテーブル権限設定を行わないと誰もポータルサイト上からはアクセスできません。

今まで大きな問題とならなかった理由として、このリストへのアクセスを行うためには、もう一つのセキュリティとして「ページ権限」があります。これはその名の通り、ページに対してアクセス制御を行う機能で、ほとんどの場合はこちらも有効になっています。

今回ニュースで取り上げられたのが、OData フィード機能です。これは、ポータルをウェブサイトではなく、APIサービスとして外部にデータ公開し、データ連携などの用途で利用したい場合に便利な機能です。この OData フィード機能を有効化すると、クリック操作だけでノーコードで以下のURLでアクセスできるAPIサービスが作れます。

https://ポータル名.powerappsportals.com/_odata/システムテーブル名

この機能は既定で無効となっているため、明示的に有効化しなければ利用できず、Microsoft Docs でも注意事項として記述しています。

Microsoft Docs の抜粋

ここで問題なのが、上記でお話した「テーブル権限設定を有効化」が有効化されていない場合、且つ、OData フィード機能を有効化している場合は、URLを知っていればデータへアクセスできるという点です。

現在は Power Apps ポータルを利用する際に既定でテーブル権限は有効になっています。更に、2021年8月15日以降に作成されたPower Apps ポータルでは、OData フィード機能を有効化した場合にはテーブル権限を無効にできないように仕様変更が行われました。

自分の Power Apps が対象かどうかの判断方法

  • 該当するお客様は メールによる通知とMicrosoft 365 管理センターのメッセージID MC277597 を受信しています。
  • Power Apps キャンバスアプリ、モデル駆動型アプリ、Microsoft Dataverse などの Power Apps Portals 以外のアプリや機能は影響を受けません
  • Power Apps Portals は Microsoft 365 及び Office 365 のライセンスでは利用できません
  • Power Apps Portals は既定では有効ではありません
  • Power Apps Portals のみ影響を受けます
  • Power Apps Portals を利用している方は、次のセクションをお読みください。
  • こちらの記事は正しい内容ではありませんので、鵜吞みにされることはおすすめしません。

Power Apps ポータルの設定確認方法

  1. ブラウザーのInPrivateモードで、 https://ポータル名.powerappsportals.com/_odata/ へアクセスしてみてください。このURLで表示された一覧は、データが公開されている可能性があります。
  2. ポータルチェッカーを実行します。これを実行すると一発で匿名でのアクセスが可能かがわかります。
  3. ポータルチェッカーの実行結果で匿名アクセス可能なリストが見つかった場合には以下の手順でテーブルのアクセス許可を有効にします。
    1. ポータル管理アプリを開きます。
      左側のウィンドウで、必要に応じて リスト または 基本フォーム を選択します。
    2. ポータル チェッカー ルールに記載されているレコードを検索します。
    3. リストまたは基本フォームの「テーブルのアクセス許可を有効にする」プロパティを更新します。

最後に

今回公開されたいくつかの記事は「クラウドホスト型BI」と言ったり、「Power Apps の初期設定である」と適当なことを言ってしまうほど、正確性に欠ける記事でアクセス数稼ぎなのでは?と疑えるようなタイトルがありましたが、今回の問題は不適切な設定のまま利用した場合のデータ漏洩の可能性であり、脆弱性ではありません。

UpGuard社はプロフェッショナルなセキュリティ企業として、この問題点について特定し、分析を行われ、UpGuard 社の報告でも、設定によるものであり、機能やドキュメントにも掲載されている旨は書かれていました。

記事につられて Power Apps は安全じゃないと思われた方へぜひこの投稿をご共有ください!

※コメント欄やお問い合わせフォームから本件について連絡されてもお返事しかねますので、正式な回答は日本マイクロソフトおよびサポート窓口にお問い合わせください。