Azure Managed Redis (プレビュー) でのキャッシュ認証に Microsoft Entra を使用する
Azure Managed Redis (プレビュー) には、キャッシュ インスタンスに対する認証に使用できる 2 つの方法 (アクセス キーと Microsoft Entra) が用意されています。
アクセス キー認証はシンプルですが、セキュリティとパスワードの管理に関する一連の課題がつきまといます。 対照的に、この記事では、キャッシュ認証に Microsoft Entra トークンを使用する方法について学習します。
Azure Managed Redis では、Microsoft Entra との統合により、パスワード不要の認証メカニズムが提供されます。 Azure Managed Redis と接続するように構成された Entra ID には、アクセス キーを使う場合と同じアクセス許可が割り当てられます。
この記事では、サービス プリンシパルまたはマネージド ID を使って Redis インスタンスに接続する方法について説明します。
前提条件と制限事項
- Microsoft Entra 認証は、SSL 接続でのみサポートされています。
- 一部の Redis コマンドはブロックされています。 ブロックされているコマンドの完全な一覧については、「Azure Managed Redis でサポートされない Redis コマンド」をご覧ください。
重要
Microsoft Entra トークンを使用して接続が確立された後、クライアント アプリケーションは有効期限が切れる前に Microsoft Entra トークンを定期的に更新する必要があります。 その後、アプリは接続を中断しないように、AUTH
コマンドを Redis サーバーに送信する必要があります。 詳しくは、「Microsoft Entra を使用するように Redis クライアントを構成する」を参照してください。
キャッシュで Microsoft Entra の認証を有効にする
Azure portal で、Microsoft Entra トークンベースの認証を構成する Azure Managed Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[Microsoft Entra 認証] タブを選択します。
[Microsoft Entra 認証を有効にする] を選んで、[ユーザーまたはサービス プリンシパル] または [マネージド ID] ボタンを選びます。 選択すると、入力したユーザーに、アクセス キーを使う場合と同じアクセス許可が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、AMR インスタンスに接続することもできます。
Azure CLI で Microsoft Entra を使用する方法については、ID のリファレンス ページを参照してください。
キャッシュでアクセス キー認証を無効にする
Microsoft Entra を使用すると、キャッシュを安全に接続できます。 Microsoft Entra を使用し、アクセス キーを無効にすることをお勧めします。
Redis インスタンスのアクセス キー認証を無効にすると、アクセス キーまたは Microsoft Entra ID 認証のどちらを使っているかに関係なく、既存のすべてのクライアント接続が終了されます。 推奨される Redis クライアントのベスト プラクティスに従って、Microsoft Entra ベースの接続 (存在する場合) を再接続するための適切な再試行メカニズムを実装することをお勧めします。
アクセス キーを無効にする前に:
Microsoft Entra 認証を有効にする必要があります。
geo レプリケートされたキャッシュの場合は、次の操作を行う必要があります。
- キャッシュのリンクを解除します。
- アクセス キーを無効にする。
- キャッシュを再リンクします。
アクセス キーを使っているキャッシュがあり、アクセス キーを無効にしたい場合は、次の手順のようにします。
Azure portal で、アクセス キーを無効にする Azure Managed Redis インスタンスを選びます。
リソース メニューで [認証] を選択します。
作業ペインで、[アクセス キー] を選択します。
[アクセス キー認証] を無効に構成します。
[はい] を選択して、構成の更新を確定します。
重要
キャッシュの [アクセス キー認証を無効にする] 設定が変更されると、アクセス キーまたは Microsoft Entra を使用するすべての既存のクライアント接続が終了します。 ベスト プラクティスに従って、Microsoft Entra ベースの接続を再接続するための適切な再試行メカニズムを実装します。 詳細については、「接続の回復力」を参照してください。
Microsoft Entra を使用するように Redis クライアントを構成する
ほとんどの Azure Managed Redis クライアントは、認証にパスワードとアクセス キーが使われることを想定しているため、Microsoft Entra を使った認証をサポートするには、クライアント ワークフローの更新が必要になる場合があります。 このセクションでは、Microsoft Entra トークンを使って Azure Managed Redis に接続するようにクライアント アプリケーションを構成する方法について説明します。
Microsoft Entra クライアント ワークフロー
Microsoft Authentication Library (MSAL) を使用して、スコープ
https://redis.azure.com/.default
またはacca5fbb-b7e4-4009-81f1-37e38fd66d78/.default
の Microsoft Entra トークンを取得するようにクライアント アプリケーションを構成します。次の
User
とPassword
を使用するように Redis 接続ロジックを更新します。User
= マネージド ID またはサービス プリンシパルのオブジェクト IDPassword
= MSAL を使用して取得した Microsoft Entra トークン
以下を使用して、Microsoft Entra トークンの有効期限が切れる前に、確実にクライアントで Redis の AUTH コマンドが自動的に実行されるようにします。
User
= マネージド ID またはサービス プリンシパルのオブジェクト IDPassword
= 定期的に更新される Microsoft Entra トークン
クライアント ライブラリのサポート
ライブラリ Microsoft.Azure.StackExchangeRedis
は StackExchange.Redis
の拡張機能であり、これを使うと、Microsoft Entra を使って Redis クライアント アプリケーションから Azure Managed Redis への接続の認証を行うことができます。 この拡張機能は、有効期限が切れる前にトークンを前もって更新し、複数日にわたって持続的な Redis 接続を維持するなど、認証トークンの管理を行います。
このサンプル コードでは、Microsoft.Azure.StackExchangeRedis
NuGet パッケージを使用して、Microsoft Entra を使って Azure Managed Redis インスタンスに接続する方法が示されています。
次の表には、サンプル コードへのリンクが含まれています。 Microsoft Entra トークンを使って Azure Managed 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
コマンドを定期的に呼び出す場合は、AUTH
コマンドが互い違いになるようにジッターを追加することを検討する。 この方法で、Redis サーバーが同時にAUTH
コマンドを大量に受信することがなくなります。