キャッシュ認証に Microsoft Entra を使用する
Azure Cache for Redis には、キャッシュ インスタンスの認証に使用できる 2 つの方法 (アクセス キーと Microsoft Entra) が用意されています。
アクセス キー認証はシンプルですが、セキュリティとパスワードの管理に関する一連の課題がつきまといます。 対照的に、この記事では、キャッシュ認証に Microsoft Entra トークンを使用する方法について学習します。
Azure Cache for Redis では、Microsoft Entra と統合することで、パスワード不要の認証メカニズムが提供されます。 この統合には、オープン ソース Redis でサポートされているアクセス制御リスト (ACL) を通じて提供されるロールベースのアクセス制御機能も含まれます。
ACL 統合を使用するには、クライアント アプリケーションで、サービス プリンシパルやマネージド ID などの Microsoft Entra エンティティの ID を想定し、キャッシュに接続する必要があります。 この記事では、サービス プリンシパルまたはマネージド ID を使用してキャッシュに接続する方法について学習します。 また、接続に使用される Microsoft Entra アーティファクトに基づいて、定義済みのアクセス許可を接続に付与する方法についても学習します。
可用性のスコープ
レベル | Basic、Standard、Premium | Enterprise、Enterprise Flash |
---|---|---|
可用性 | はい | いいえ |
前提条件と制限事項
- Microsoft Entra の認証は、SSL 接続と TLS 1.2 以降でサポートされています。
- Microsoft Entra の認証は、Azure Cloud Services に依存する Azure Cache for Redis インスタンスではサポートされません。
- Microsoft Entra の認証は、Azure Cache for Redis Enterprise の Enterprise レベルではサポートされません。
- 一部の Redis コマンドはブロックされています。 ブロックされているコマンドの完全な一覧については、「Azure Cache for Redis でサポートされない Redis コマンド」を参照してください。
重要
Microsoft Entra トークンを使用して接続が確立された後、クライアント アプリケーションは有効期限が切れる前に Microsoft Entra トークンを定期的に更新する必要があります。 その後、アプリは接続を中断しないように、AUTH
コマンドを Redis サーバーに送信する必要があります。 詳しくは、「Microsoft Entra を使用するように Redis クライアントを構成する」を参照してください。
キャッシュで Microsoft Entra の認証を有効にする
Azure portal で、Microsoft Entra トークンベースの認証を構成する Azure Cache for Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[Microsoft Entra 認証] タブを選択します。
[Microsoft Entra 認証を有効にする] を選択し、有効なユーザー名を入力します。 [保存] を選択した場合は、既定で入力したユーザーに [データ所有者アクセス ポリシー] が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、キャッシュ インスタンスに接続することもできます。
構成を更新するかどうか確認するポップアップ ダイアログ ボックスが表示されて、数分かかることが通知されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Azure CLI で Microsoft Entra を使用する方法については、ID のリファレンス ページを参照してください。
キャッシュでアクセス キー認証を無効にする
Microsoft Entra を使用すると、キャッシュを安全に接続できます。 Microsoft Entra を使用し、アクセス キーを無効にすることをお勧めします。
キャッシュのアクセス キー認証を無効にすると、既存のすべてのクライアント接続が、アクセス キーと Microsoft Entra ID 認証のどちらを使用しているかに関係なく、終了します。 推奨される Redis クライアントのベスト プラクティスに従って、Microsoft Entra ベースの接続 (存在する場合) を再接続するための適切な再試行メカニズムを実装することをお勧めします。
アクセス キーを無効にする前に:
Microsoft Entra 認証が有効になっていて、少なくとも 1 人の Redis ユーザーが構成されていることを確認します。
キャッシュ インスタンスに接続しているすべてのアプリケーションを、Microsoft Entra 認証を使うように切り替えます。
メトリック "接続されているクライアント数" と "Microsoft Entra トークンを使用して接続されているクライアント数" が同じ値であることを確認します。 これら 2 つのメトリックの値が同じでない場合、Entra トークンではなく、アクセス キーを使って作成された接続がまだ存在することを意味します。
キャッシュ インスタンスの予定メンテナンス期間中はアクセスを無効にすることを検討します。
アクセス キーの無効化は、Basic、Standard、Premium レベルのキャッシュでのみ使用できます。
geo レプリケートされたキャッシュの場合は、次の操作を行う必要があります。
- キャッシュのリンクを解除します。
- アクセス キーを無効にする。
- キャッシュを再リンクします。
アクセス キーが使用されているキャッシュがあり、アクセス キーを無効にする場合は、次の手順に従います。
Azure portal で、アクセス キーを無効にする Azure Cache for Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[アクセス キー] を選択します。
[Disable Access Keys Authentication] (アクセス キー認証を無効にする) を選択します。 次に、 [保存] を選択します。
[はい] を選択して、構成の更新を確定します。
重要
キャッシュの [アクセス キー認証を無効にする] 設定が変更されると、アクセス キーまたは Microsoft Entra を使用するすべての既存のクライアント接続が終了します。 ベスト プラクティスに従って、Microsoft Entra ベースの接続を再接続するための適切な再試行メカニズムを実装します。 詳細については、「接続の回復力」を参照してください。
キャッシュを使用したデータ アクセス構成を使用する
Redis Data Owner の代わりにカスタム アクセス ポリシーを使用する場合は、リソース メニューの [データ アクセス構成] に移動します。 詳細については、「アプリケーションのカスタム データ アクセス ポリシーを構成する」を参照してください。
Azure portal で、データ アクセス構成に追加する Azure Cache for Redis インスタンスを選択します。
リソース メニューで、[データ アクセスの構成] を選択します。
[追加] を選択し、次に [新規 Redis ユーザー] を選択します。
[アクセス ポリシー] タブで、テーブルに表示されている使用可能なポリシー ([データ所有者]、[データ共同作成者]、[データ閲覧者]) のいずれかを選択します。 次に、[次へ: Redis ユーザー] を選択します。
[ユーザーまたはサービス プリンシパル] または [マネージド ID] を選択して、Azure Cache for Redis インスタンスへのアクセスの割り当て方法を決定します。 [ユーザーまたはサービス プリンシパル] を選択し、ユーザーを追加する場合は、最初に Microsoft Entra 認証を有効にする必要があります。
次に、[メンバーの選択] を選び、[選択] を選びます。 その後、[次へ: 確認および割り当て] を選択します。
アップグレードは永続的で、接続が一時的に切断される可能性があることを通知するポップアップ ダイアログが表示されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Microsoft Entra を使用するように Redis クライアントを構成する
ほとんどの Azure Cache for Redis クライアントでは、認証にパスワードとアクセス キーが使用されることを前提としているため、Microsoft Entra を使った認証をサポートするためにはクライアント ワークフローを更新する必要がある場合があります。 このセクションでは、Microsoft Entra トークンを使用して Azure Cache for 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
は、Microsoft Entra を使用して Redis クライアント アプリケーションから Azure Cache for Redis への接続を認証できるようにする、StackExchange.Redis
の拡張機能です。 この拡張機能は、有効期限が切れる前にトークンを前もって更新し、複数日にわたって持続的な Redis 接続を維持するなど、認証トークンの管理を行います。
このサンプル コードは、Microsoft.Azure.StackExchangeRedis
NuGet パッケージを使用し、Microsoft Entra を使って Azure Cache for Redis インスタンスに接続する方法を示しています。
次の表には、サンプル コードへのリンクが含まれています。 次の表は、Microsoft Entra トークンを使用して Azure Cache for Redis インスタンスに接続する方法を示しています。 さまざまなクライアント ライブラリが複数の言語で含まれています。
クライアント ライブラリ | Language | サンプル コードへのリンク |
---|---|---|
StackExchange.Redis | .NET | StackExchange.Redis コード サンプル |
go-redis | Go | go-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
コマンドを大量に受信することがなくなります。