セキュリティで保護されたストレージ アカウントを Azure Functions で使用する方法

この記事では、セキュリティで保護されたストレージ アカウントに関数アプリを接続する方法について説明します。 インバウンド アクセスとアウトバウンド アクセスの制限がある関数アプリを作成する方法の詳細なチュートリアルについては、仮想ネットワークとの統合チュートリアルを参照してください。 Azure Functions とネットワークの詳細については、「Azure Functions のネットワーク オプション」を参照してください。

お使いのストレージ アカウントを仮想ネットワークに制限する

関数アプリを作成するときは、新しいストレージ アカウントを作成するか、既存のストレージ アカウントにリンクします。 現時点では、既存のセキュリティで保護されたストレージ アカウントを使用した関数アプリの作成をサポートしているのは、Azure portal、ARM テンプレート デプロイBicep デプロイだけです。

Note

ストレージ アカウントのセキュリティ保護は、専用 (App Service) プランElastic Premium プランのすべてのレベル、および Flex 従量課金プランでサポートされています。
従量課金プランは仮想ネットワークをサポートしていません。

ストレージ アカウントに関するすべての制限の一覧については、「ストレージ アカウントの要件」を参照してください。

重要

Flex 従量課金プランは現在、プレビュー段階です。

関数アプリの作成時のセキュリティで保護されたストレージ

仮想ネットワークの背後でセキュリティ保護された新しいストレージ アカウントと共に、関数アプリを作成できます。 次のリンクは、Azure portal またはデプロイ テンプレートを使用してこれらのリソースを作成する方法を示しています。

Premium プランでの関数アプリの作成」の手順を実行します。 仮想ネットワーク チュートリアルのこのセクションでは、プライベート エンドポイント経由でストレージに接続する関数アプリを作成する方法について説明します。

Note

Azure portal で関数アプリを作成する際には、[ストレージ] タブで既存のセキュリティ保護されたストレージ アカウントを選択することもできます。ただし、関数アプリがストレージ アカウントのセキュリティ保護に使用される仮想ネットワークを通して接続を行えるように、関数アプリで適切なネットワークを構成する必要があります。 ネットワークを構成するアクセス許可がない場合、またはネットワークの準備が完全には完了していない場合は、[ネットワーク] タブで [作成後にネットワークを構成する] を選択します。新しい関数アプリのネットワークは、ポータルの [設定]>[ネットワーク] で構成できます。

既存の関数アプリのセキュリティで保護されたストレージ

既存の関数アプリがある場合は、そのアプリで使用されているストレージ アカウントでネットワークを直接構成できます。 このプロセスによって、ネットワークの構成中とアプリの再起動中にアプリが停止することになります。

ダウンタイムを最小限に抑えるために、代わりに既存のストレージ アカウントを新しいセキュリティ保護されたストレージ アカウントにスワップアウトできます。

1. 仮想ネットワーク統合を有効にする

前提条件として、関数アプリの仮想ネットワーク統合を有効にする必要があります。

  1. サービス エンドポイントまたはプライベート エンドポイントが有効になっていないストレージ アカウントを持つ関数アプリを選択します。

  2. 関数アプリの仮想ネットワーク統合を有効にします

2. セキュリティで保護されたストレージ アカウントを作成する

関数アプリ用のセキュリティで保護されたストレージ アカウントを設定します。

  1. 2 番目のストレージ アカウントを作成します。 これは、関数アプリが代わりに使用するセキュリティで保護されたストレージ アカウントになります。 Functions でまだ使用されていない既存のストレージ アカウントを使用することもできます。

  2. このストレージ アカウントの接続文字列をコピーします。 この文字列は後で必要になります。

  3. ストレージ アカウントにファイル共有を作成します。 既存のストレージ アカウント内のファイル共有と同じ名前を使用するようにします。 そうしない場合、後でアプリ設定を構成するときに、新しいファイル共有の名前をコピーする必要があります。

  4. 次のいずれかの方法で新しいストレージ アカウントをセキュリティで保護します。

    • プライベート エンドポイントを作成する。 プライベート エンドポイント接続を設定するとき、fileblob サブリソース用のプライベート エンドポイントを作成します。 Durable Functions では、プライベート エンドポイントを介してアクセス可能な queuetable のサブリソースも作成する必要があります。 カスタムまたはオンプレミスの DNS サーバーを使用している場合は、新しいプライベート エンドポイントに解決されるように DNS サーバーを構成します。

    • 特定のサブネットへのトラフィックを制限します。 許可されているサブネットの 1 つが、お使いの関数アプリがネットワーク統合されているものであることを確認します。 そのサブネットに Microsoft.Storage へのサービス エンドポイントがあることを再度確認します。

  5. ファイルと BLOB のコンテンツを、関数アプリで使用されている現在のストレージ アカウントから、新しくセキュリティ保護されたストレージ アカウントとファイル共有にコピーします。 AzCopyAzure Storage Explorer は一般的な方法です。 Azure Storage Explorer を使用する場合は、お使いのクライアント IP アドレスが、ストレージ アカウントのファイアウォールに受け入れられるよう許可しなければならないことがあります。

これで、関数アプリを、新しくセキュリティで保護されたストレージ アカウントと通信できるよう構成する準備ができました。

3. アプリケーションの構成のルーティングを有効にする

Note

これらの構成手順が必要なのは、エラスティック Premium および Dedicated (App Service) ホスティング プランにおいてだけです。 Flex 従量課金プランでは、ネットワークを構成するためのサイト設定は必要ありません。

次は、関数アプリのトラフィックを、仮想ネットワークを通過するようルーティングする必要があります。

  1. アプリケーション ルーティングを有効にして、アプリのトラフィックを仮想ネットワークにルーティングします。

    • お使いの関数アプリの [ネットワーク] タブに移動します。 [送信トラフィックの構成] で、仮想ネットワーク統合に関連付けられているサブネットを選択します。

    • 新しいページで、[アプリケーション ルーティング][送信インターネット トラフィック] チェックボックスをオンにします。

  2. コンテンツ共有ルーティングを有効にして、関数アプリが仮想ネットワーク経由で新しいストレージ アカウントと通信できるようにします。

    • 同じページで、[構成ルーティング][コンテンツ ストレージ] チェック ボックスをオンにします。

4. アプリケーション設定を更新する

最後に、セキュリティで保護された新しいストレージ アカウントをポイントするようにアプリケーション設定を更新する必要があります。

  1. 関数アプリの [構成] の下にある [アプリケーション設定] を次のように更新します。

    設定名 解説
    AzureWebJobsStorage
    WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
    ストレージ接続文字列 どちらの設定にも、前に保存した、セキュリティで保護された新しいストレージ アカウントの接続文字列が含まれています。
    WEBSITE_CONTENTSHARE ファイル共有 プロジェクト配置ファイルが存在する、セキュリティで保護されたストレージ アカウントに作成されたファイル共有の名前。
  2. [保存] を選択して、アプリケーション設定を保存します。 アプリの設定を変更すると、アプリが再起動されます。

関数アプリが再起動すると、セキュリティで保護されたストレージ アカウントに接続されるようになります。

次のステップ