PowerPlatform からのメール送信による情報流出を制限する

#はじめに
Power Platform においては、適切なデータ損失防止 (DLP) ポリシーを設計することで、組織内にある重要なビジネスデータを外部サービスと接続させず、安全にPower Platform を展開することができます。

テナントの既定環境においては、どのようなアプリを作成されるかわからないため、適切なデータ損失防止 (DLP) ポリシーのビジネスデータグループには、Office 365 関連のコネクタのみとすることが望ましいと考えています。
（少なくともコンシューマ向けのコネクタなどはビジネスに入れるべきではないですよね）

この Office 365 関連のコネクタに関しては、統合済み Azure AD の認証により安全なコネクタしかないと思っていたのですが、１つだけ気を付けなければいけないものがありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/efb59c46-0d82-b94a-36fe-2428605b16ab.png)
Office 365 Outlook のメールのコネクタです。

このコネクタを使ってしまえば、メール経由で本文や添付ファイルで外部にじゃんじゃんデータを流出してしまうことが可能となります。

性善説に立ってしまえば、情報流出するような利用者はいないと想定して野放しでも良いのですが、社員数が多い組織となった場合、内部統制上そのような抜け穴は許されません。
今回の投稿は、Exchange Online のメールフロールール（いわゆるトランスポートルール）を使って、Power Platform からのメール送信を抑止する内容となっています。

#参考にしたサイト
[コネクタのメール流出制御(Microsoft Docs)](https://docs.microsoft.com/ja-jp/power-platform/admin/block-forwarded-email-from-power-automate)

#環境
- Office 365 開発者プログラム (E5)
- Power Apps for Office 365
- Power Automate for Office 365

#まずは Power Apps からメールを送信してみる
超簡単なアプリを作ってみます。（メールアドレスはダミーです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/5db7a017-447b-d1c5-14ab-2491f67bf0a2.png)
テキストボックスに宛先、タイトル、本文を入れて、ボタン押下でメールを送付するだけのアプリです。

当たり前ですが、これでメールを送付すれば相手にメールが届くことになります。

#メールのヘッダを確認してみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/4d119dc3-bde1-ea8f-0f1f-9ddf8b734626.png)
当記事の冒頭に記載した「参考にしたサイト」にある通り、Power Platform から送信されたメールは、「x-ms-mail-application:」ヘッダーに特定の文字列が挿入されます。
今回は Power Apps からメールを送信したので「Microsoft Power Apps」という文字列が挿入されます。（Power Automate の場合は Microsoft Power Automate となる）

このヘッダ情報を使ってメールをブロックしてみます。

#Exchange Online のトランスポートルールを作成する
（完成形）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/88b49abf-9abf-6163-8fb5-4d00a5bfd657.png)


（条件の指定）
1. 「受信者の場所が...組織外の場合」を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/d0cf715e-2bd4-f83f-8402-55c8f29dca18.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/a9a6de9a-6b69-3c26-3094-404f578d216a.png)

2. 「メッセージヘッダーに次の項目が含まれる...」を作成
[メッセージ ヘッダー...] ＞ [これらの単語を含む] 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/a1662007-0155-099a-4173-ab7a8e66e9f2.png)
「ヘッダー名の指定」で "x-ms-mail-application" を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/ebeb0853-a64b-396e-b514-eae55b7a0b9a.png)

3. 「メッセージヘッダーに次の項目が含まれる...」を作成（２つ目）
２．と同じ手順で、"x-ms-mail-operation-type" ヘッダーに対して、次の２つのパターン設定する
'Send' 
'Forward'

（実行する処理）
4.「説明を示してメッセージを拒否する」を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/f521fd7b-e45c-7bee-4660-e342f30cc22d.png)

任意の拒否メッセージを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/32c57a5a-09a6-75e2-5e1f-90a0d7a4967f.png)

これでルールの作成は完了です。
※フローの反映には少し時間を要します

#組織外へメールを送付してみる。
先ほどのアプリでもう一度メールを送信します。（メールアドレスはダミーです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/5db7a017-447b-d1c5-14ab-2491f67bf0a2.png)

すぐにブロックされた旨のメールを受信しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/c3cd9411-5a1e-fa55-ead3-dab148951858.png)

#組織内にメールを送付してみる。
問題なくメールを受信できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/f272dd39-6390-073a-3eb3-6250de73429b.png)

#除外条件について
前述の手順を適用すれば、Power Apps に関しては一律組織外へのメール送付を制限することができます。
ただし、組織によっては「特定のドメインに関してはグループ会社となるため制限の除外にしたい」や「特定のアプリやフローは対象外とする」、「管理者ユーザからのメール自動送信は除外したい」などという例外が発生するかと思います。

今回は、特定のアプリからはメール送信を制限しない例外を作成してみます。

#例外の設定方法
1.対象となるアプリIDを控える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/97c578ab-dad9-c3c6-8225-32b277954768.png)

2.「ただし次の場合を除く」にヘッダーの例外条件を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/152b4ca3-75a0-fb2c-e89f-367a96de5a2b.png)

3."x-ms-mail-application-id" を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/552398c8-1fb7-8c3e-f30b-182080738c21.png)

4.１．で控えたアプリIDを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/ec50cfa5-391c-5849-01b9-ad2b64e2355a.png)

#組織外へメールを送付してみる
先ほどブロックされた条件のメールが、例外扱いで正常に送信できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438156/6af7e657-39bb-503d-7c6e-803b1ba29899.png)

#まとめ
Exchange Online のトランスポートルールを活用することにより、Power Platform から送信されるメールを特定することができ、且つ業務やアプリの要件に合わせて除外設定も可能であることを説明しました。この設定なら、簡単にメール送信による流出を防ぐことができますよね。

ただし、アプリやフロー単位で除外設定を行うということは、組織内で外部メールを送信する要件のアプリが増えてきた場合、運用に耐えられないということにもなりかねません。

その場合は他のヘッダー情報を活用することで対処がある程度楽になると考えられます。
例えば、"x-ms-mail-environment-id" など、環境を指定しているidが存在していますので、環境単位での制限・除外設定をルールとして組むというやり方もあります。

メールでの情報流出を制限したい場合は、この手順を活用してみてください☺