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

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

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

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

Note

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

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

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

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

次のチュートリアルを完了して、セキュリティで保護されたストレージ アカウントで新しい関数アプリを作成します: プライベート エンドポイントを使用して Azure Functions と仮想ネットワークを統合する

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

既存の関数アプリがある場合、アプリで現在使用されているストレージ アカウントを直接セキュリティで保護することはできません。 代わりに、既存のストレージ アカウントを、セキュリティで保護された新しいストレージ アカウントに入れ替える必要があります。

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. アプリケーションの構成のルーティングを有効にする

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

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

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

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

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

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

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

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

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

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

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

次のステップ