Power AutomateのHTTPアクションを使って別サービスにデータ送信する際、相手のサービスが特定のIPアドレス以外拒否するように制限されている事がありますよね。
そんな時は相手のシステムにアクセスを許可してもらうために、Power Automate側の「送信元IP」を確認する必要があります。
送信元IPはPower Automateのドキュメント「制限と構成」の「コネクタ」セクションにリージョン毎に記載されていますので、ここで地域が日本のものを探す事で確定できそうですが、ふと目を移すと次のような注意事項が...
フローによる一部の呼び出しは、ロジック アプリ ドキュメントに記載された IP アドレスから発信される場合があります。 このような呼び出し例としては、HTTP や HTTP + OpenAPI などがあります。
ふむ。通常は「コネクタ」のセクションにあるIPアドレス一覧が使われるものの、一部のコネクタはLogic AppsのIPアドレスから送信されるっぽい。
ぱっと見た感じ、今回利用する「HTTPアクション」はLogic Appsが送信元となるようですが「一部の呼び出し」とか書き方がちょっと曖昧なのが気になるので、実際に動かして送信元IPを確認してみることにします。
送信元確認のためのフローを作成する
まず最初にwebhook.siteにアクセスして、テスト用のWebhookURLを取得します。
※「Webhook.site」はWebhookのデバッグなどに使われる便利サイトです。Webhook.siteについては、SendGridさんのブログに詳細な説明がありますので、詳しくはそちらをご覧ください。)
次にPower AutomateのTOPページにログインし、左メニューの「①作成」をクリックして「空白から開始」ページを開き、「②インスタントフロー」をクリックします。
「インスタントフローを作成」ウインドウが表示されるので、「このフローをトリガーする方法を選択します」から「①HTTP要求の受信時」を選択し「②作成」ボタンをクリックします。
「新しいステップ」をクリックして「HTTP」アクションを探してフロー上に配置し、「①方法(メソッド)」に「POST」を「②URI」にwebhook.siteで取得したテスト用のURLを入力します。
最後に保存をクリックして、フローを確定させます。
今回はブラウザーからこのフローを動かしたいので、フローの保存後に再度「HTTP要求の受信時」アクションを開いて、ウインドウ下部の「詳細オプションを表示する」をクリックして開き、「②method」に「GET」を指定します。その上で①URLをコピーして控えておきます。
フローの編集画面に戻るので、フローがONになっている事を確認します。(フローがOFFの場合はメニュー上部の「オンにする」をクリックして、フローをONの状態にします。)
実際に試してみる
「HTTP要求の受信時」でコピーしたURLをブラウザーのアドレスバーに入力し、実行してみます。
ブラウザーには何も返していませんので空白の表示となりますが、Webhook.siteの方にはフローの結果としてHTTPによるPOSTが行われているはずです。
実際にwebhook.siteを確認してみると、確かにPower Automateで実行されたHTTPリクエストが届いている事が確認できました。
結果の送信元IPは**「13.71.158.3」**。これは想定通りPower AutomateのドキュメントではなくLogic Appsドキュメント内の「送信 IP アドレス」セクションに記載の送信IPアドレス(東日本リージョン)です。
やはりこの「HTTP」アクションは、Logic AppsのIPアドレスから送信されるようです。
(※2020/9/2時点のドキュメントによる確認。送信元IPは都度変更されていくと思われますので、正式なIPについては最新のドキュメントをご確認ください。)
まとめ
Power AutomateはもともとLogic Appsが元になっているそうなので、ベースとなる「フローからの呼び出し」はLogic Appsから直接行い、フロー内の「コネクタ」からの呼び出しはPower Automateから行われている、という事かなと想定はしましたが、ドキュメントを読んだだけでは確信が持てなかったので、実際に確認してみました。
Power AutomateとLogic Appsの関係性、内部的な処理の想定がついていれば検証せずとも自明な事かも知れませんので、サービスの成り立ちなども含めて、もう少し深く掘り下げて学ぶ必要がありそうです。