Azure Function App には簡易プロキシ機能として Azure Functions Proxies という機能があります。現時点ではプレビュー版なのですが、これを利用することで LogicApps / Microsoft Flow にユーザー認証の機能を簡単に付与できるようになります。
Azure Function Proxies は設定を行うのも、非常に簡単です。ポータルより Azure Functions を開くと下記のような画面になると思いますので、左メニューの中にある「プロキシ(プレビュー)」横にある、+をクリックします。
もしそこで、Function Proxies が有効になっていない、というアラートが出ている場合、Functions の設定で Proxies をオンに設定してください。
+をクリックすると上記のように、プロキシの基本設定を求められますので、必要な設定を入力します。
ここで LogicFlow を呼び出したい場合は、上記のようにバックエンド URL に、Request トリガで生成された URL を指定します。ルートテンプレートは、Proxies で生成される URL に付与するアドレスとなります。
許可されている HTTP メソッドの欄では、GET や POST など、呼び出しに利用されてよいメソッドを選択できます。
なお、呼出し時に認証機能を利用するには、Function App 全体の設定となりますので、今回のように LogicFlow 呼出しに制限を行いたい場合は、それように Function App を新しく作成し、認証設定を行うのが適しています。
プラットフォーム機能の中に「認証/承認」があるので、それをクリックします。
デフォルトではオフになっている、App Service 認証をオンにすると、認証に利用するプロバイダーを設定することができます。上記の例では、Twitter 認証を利用する設定を行っています。Twitter の API キーをシークレットを設定するだけで、呼出し時に Twitter の認証が行われるようになります。
ここまでの設定で、LogicFlow 呼出しに認証機能を付与できてしまいます。試しに Functions Proxies で生成された URL にアクセスすると、下記のように Twitter の認証が求められます。
認証が成功すると、下記のように LogicFlow の実行結果がブラウザ上に表示され、正しく LogicFlow が呼び出されているのが確認できると思います。
このように Functions Proxies を利用すると、簡単に LogicFlow に認証機能を付与できるのですが、何点か注意する箇所があります。
一つは、メソッドの変換は行えないという点です。Proxies 側では、許可するメソッドを指定できますが、そのメソッドでそのままバックエンド URL を呼び出しに行きますので、GET でアクセスしにきたけど POST で LogicFlow を呼び出す、といったことはできません。
またもう一つは、ここまでの設定だけだと、LogicFlow 側の URL には依然としてどこからでもアクセス可能な状態だという事です。これを防ぐためには、LogicApps 側で、Azure データセンターの IP アドレスからのみアクセス許可するよう、IP 設定を追加で行っておくのがよいと思います。IP 制限は LogicApps のみの機能ですので、Microsoft Flow の場合は制限を行うことができません。
そして最後にもう一つ、Functions Proxies を経由するので、追加でコストが発生するという点です。よほどの高頻度でなければあまり気にする必要はないかも知れませんが、実運用を行うのであれば、ここも忘れずにチェックしてみてください。
0 件のコメント:
コメントを投稿