キャッシュ認証に Microsoft Entra ID を使用する

Azure Cache for Redis には、キャッシュ インスタンスの認証に使用できる 2 つの方法 (アクセス キーと Microsoft Entra ID) が用意されています

アクセス キー認証はシンプルですが、セキュリティとパスワードの管理に関する一連の課題がつきまといます。 対照的に、この記事では、キャッシュ認証に Microsoft Entra トークンを使用する方法について学習します。

Azure Cache for Redis では、Microsoft Entra ID と統合することで、パスワード不要の認証メカニズムが提供されます。 この統合には、オープン ソース Redis でサポートされているアクセス制御リスト (ACL) を通じて提供されるロールベースのアクセス制御機能も含まれます。

ACL 統合を使用するには、クライアント アプリケーションで、サービス プリンシパルやマネージド ID などの Microsoft Entra エンティティの ID を想定し、キャッシュに接続する必要があります。 この記事では、サービス プリンシパルまたはマネージド ID を使用してキャッシュに接続する方法と、接続に使用されている Microsoft Entra 成果物に基づいて接続に定義済みのアクセス許可を付与する方法について学習します。

可用性のスコープ

レベル Basic、Standard、Premium Enterprise、Enterprise Flash
可用性 はい いいえ

前提条件と制限事項

  • Microsoft Entra ID ベースの認証は、SSL 接続と TLS 1.2 以降でサポートされています。
  • Microsoft Entra ID ベースの認証は、Cloud Services に依存する Azure Cache for Redis インスタンスではサポートされません。
  • Microsoft Entra ID ベースの認証は、Azure Cache for Redis Enterprise の Enterprise レベルではサポートされません。
  • 一部の Redis コマンドはブロックされています。 ブロックされているコマンドの完全な一覧については、「Azure Cache for Redis でサポートされない Redis コマンド」を参照してください。

重要

Microsoft Entra トークンを使用して接続が確立されたら、有効期限が切れる前にクライアント アプリケーションで Microsoft Entra トークンを定期的に更新し、接続の中断を回避するために AUTH コマンドを Redis サーバーに送信する必要があります。 詳しくは、「Microsoft Entra ID を使用するように Redis クライアントを構成する」を参照してください。

キャッシュで Microsoft Entra ID の認証を有効にする

  1. Azure portal で、Microsoft Entra トークン ベースの認証を構成する対象の Azure Cache for Redis インスタンスを選択します。

  2. リソース メニューで [認証] を選択します。

  3. 作業ペインで、[Microsoft Entra の認証を有効にする] を選びます。

  4. [Enable Microsoft Entra 認証] を選択し、有効なユーザー名を入力します。 [保存] を選択した場合は、既定で入力したユーザーに [データ所有者アクセス ポリシー] が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、キャッシュ インスタンスに接続することもできます。

    リソース メニューで [認証] が選択され、[Microsoft Entra 認証を有効にする] がオンになっているスクリーンショット。

  5. 構成を更新するかどうか確認するポップアップ ダイアログ ボックスが表示されて、数分かかることが通知されます。 [はい] を選択します。

    重要

    有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。

Azure CLI で Microsoft Entra ID を使用する方法については、ID のリファレンス ページを参照してください。

キャッシュを使用したデータ アクセス構成

Redis Data Owner の代わりにカスタム アクセス ポリシーを使用する場合は、[リソース] メニューの [データ アクセス構成] に移動します。 詳細については、「アプリケーションのカスタム データ アクセス ポリシーを構成する」を参照してください。

  1. Azure portal で、データ アクセス構成に追加する Azure Cache for Redis インスタンスを選択します。

  2. [リソース] メニューから、[データ アクセスの構成] を選択します。

  3. [追加] を選択し、[New Redis User]\(新しい Redis ユーザー\) を選択します。

  4. [アクセス ポリシー] タブで、テーブルに表示されている使用可能なポリシー ([データ所有者][データ共同作成者][データ閲覧者]) のいずれかを 1 つ選択します。 次に、[Next:Redis Users](次へ:Redis ユーザー) を選択します。

    使用可能なアクセス ポリシーを示すスクリーンショット。

  5. [ユーザーまたはサービス プリンシパル] または [マネージド ID] を選択して、Azure Cache for Redis インスタンスへの割り当て方法を指定します。 [ユーザーまたはサービス プリンシパル] を選択し、"ユーザー" を追加する場合は、最初に Microsoft Entra 認証を有効にする必要があります。

  6. 次に、[メンバーの選択] を選択し、[選択] を選択します。 次に [次へ: 確認および割り当て] を選択します。 新しい Redis ユーザーとして追加するメンバーを示すスクリーンショット。

  7. アップグレードは永続的で、接続が一時的に切断される可能性があることを通知するポップアップがダイアログ ボックスに表示されます。 [はい] を選択します。

    重要

    有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。

Microsoft Entra ID を使用するように Redis クライアントを構成する

ほとんどの Azure Cache for Redis クライアントでは、認証にパスワードとアクセス キーが使用されることを前提としているため、Microsoft Entra ID を使った認証をサポートするためにはクライアント ワークフローを更新する必要がある場合があります。 このセクションでは、Microsoft Entra トークンを使用して Azure Cache for Redis に接続するようにクライアント アプリケーションを構成する方法について学習します。

Microsoft Entra クライアント ワークフロー

  1. Microsoft Authentication Library (MSAL) を使用して、スコープ https://redis.azure.com/.default または acca5fbb-b7e4-4009-81f1-37e38fd66d78/.default の Microsoft Entra トークンを取得するようにクライアント アプリケーションを構成します。

  2. 次の UserPassword を使用するように Redis 接続ロジックを更新します。

    • User = マネージド ID またはサービス プリンシパルのオブジェクト ID
    • Password = MSAL を使用して取得した Microsoft Entra トークン
  3. 以下を使用して、Microsoft Entra トークンの有効期限が切れる前に、確実にクライアントで Redis AUTH コマンドが自動的に実行されるようにします。

    • User = マネージド ID またはサービス プリンシパルのオブジェクト ID
    • Password = 定期的に更新される Microsoft Entra トークン

クライアント ライブラリのサポート

ライブラリ Microsoft.Azure.StackExchangeRedis は、Microsoft Entra ID を使用して Redis クライアント アプリケーションから Azure Cache for Redis への接続を認証できるようにする、StackExchange.Redis の拡張機能です。 この拡張機能は、有効期限が切れる前にトークンを前もって更新し、複数日にわたって持続的な Redis 接続を維持するなど、認証トークンの管理を行います。

このコード サンプルは、Microsoft.Azure.StackExchangeRedis NuGet パッケージを使用し、Microsoft Entra ID を使って Azure Cache for Redis インスタンスに接続する方法を示しています。

次の表には、Microsoft Entra トークンを使用して Azure Cache for Redis インスタンスに接続する方法を示すコード サンプルへのリンクが含まれています。 さまざまなクライアント ライブラリが複数の言語に含まれています。

クライアント ライブラリ Language サンプル コードへのリンク
StackExchange.Redis .NET StackExchange.Redis コード サンプル
redis-py Python redis-py コード サンプル
Jedis Java Jedis コード サンプル
Lettuce Java Lettuce コード サンプル
Redisson Java Redisson コード サンプル
ioredis Node.js ioredis コード サンプル
node-redis Node.js node-redis コード サンプル

Microsoft Entra 認証のベスト プラクティス

  • サービス拒否攻撃からキャッシュを保護するために、プライベート リンクまたはファイアウォール規則を構成する。

  • 接続の中断を回避するために、トークンの有効期限が切れる少なくとも 3 分前までにクライアント アプリケーションから新しい Microsoft Entra トークンが送信されるようにする。

  • Redis サーバー AUTH コマンドを定期的に呼び出す場合は、Redis サーバーに多くの AUTH コマンドが送信されないよう、ジッターを追加して AUTH コマンドのタイミングをずらすことを検討してください。