Azure Functionsをデプロイし、「関数のURLを取得」をクリックすると、似たようなURLが3つ表示されて戸惑ったことはありませんか?

_master や default、そして「ホストキー」「ファンクションキー」という言葉が並んでいますが、これらは一体何が違うのでしょうか。
この記事では、それぞれのキーの役割を明らかにし、どのキーをどのような場面で使うべきかを分かりやすく解説します。
キーの正体:ファンクションキー vs. ホストキー
まず、2種類のキー「ファンクションキー」と「ホストキー」の違いを理解しましょう。これは、ホテルの鍵に例えると非常に分かりやすいです。
🔑 ファンクションキー (Function Key) これは、**特定の部屋(関数)だけを開けられる「ルームキー」**です。例えば、「GetData」という関数専用の鍵であり、同じFunction App内にある他の関数を開けることはできません。
👑 ホストキー (Host Key) これは、その**ホテル(Function App)のすべての部屋を開けられる「マスターキー」**です。どの関数でも呼び出すことができてしまう、より強力な権限を持っています。
3つの選択肢を徹底比較
この基本を踏まえて、3つの選択肢を見ていきましょう。特定の関数は@app.route() というデコレータを見ることで特定の関数を識別します。今回はデコレータ直下のdefで定義されたPython関数(GetData)を実行することを目的とします。
1. default (ファンクション キー)
これが最も安全で、一般的に推奨されるキーです。 特定の関数(作成した関数)へのアクセスのみを許可する「ルームキー」なので、AIエージェントや外部のWebアプリなど、特定のAPIを呼び出したいクライアントに渡すのに最適です。
2. default (ホスト キー)
これも動作しますが、Function App内のすべての関数にアクセスできてしまう「マスターキー」です。今回の目的は GetData を呼び出すことだけなので、必要以上の権限を渡してしまうことになり、セキュリティ的にはあまり望ましくありません。
3. _master (ホスト キー)
これは特殊なホストキーで、絶対に無効にできない**究極の「マスターキー」**です。主に管理目的で使用されるものであり、アプリケーションからの呼び出しにこのキーを使うことは避けるべきです。
💡 最小権限の原則
なぜファンクションキーが推奨されるのか。それはセキュリティの基本である**「最小権限の原則」**に基づいています。これは、「プログラムやユーザーには、その役割を果たすために最低限必要な権限だけを与えるべき」という考え方です。
もし万が一APIキーが漏洩してしまっても、ファンクションキーであれば被害はその特定の関数だけに限定されます。しかし、ホストキーが漏洩すると、すべての関数が悪用される危険性があります。
まとめ
結論として、どのキーを使うべきかは以下の通りです。
| キーの種類 | 推奨度 | 理由 |
| default (ファンクション キー) | ◎ 最も推奨 | 最も安全。 権限が必要最小限に絞られているため。 |
| default (ホスト キー) | ○ 使用可能 | 動作はするが、過剰な権限を与えてしまう。 |
| _master (ホスト キー) | × 非推奨 | 管理用のマスターキーであり、アプリからは絶対に使用しない。 |
迷ったら、**「ファンクションキー」**を選ぶ。これを覚えておけば、安全にAzure Functionsを運用できます。

コメント