キャッシュ認証に 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 の認証を有効にする
Azure portal で、Microsoft Entra トークン ベースの認証を構成する対象の Azure Cache for Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[Microsoft Entra の認証を有効にする] を選びます。
[Enable Microsoft Entra 認証] を選択し、有効なユーザー名を入力します。 [保存] を選択した場合は、既定で入力したユーザーに [データ所有者アクセス ポリシー] が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、キャッシュ インスタンスに接続することもできます。
構成を更新するかどうか確認するポップアップ ダイアログ ボックスが表示されて、数分かかることが通知されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Azure CLI で Microsoft Entra ID を使用する方法については、ID のリファレンス ページを参照してください。
キャッシュを使用したデータ アクセス構成
Redis Data Owner の代わりにカスタム アクセス ポリシーを使用する場合は、[リソース] メニューの [データ アクセス構成] に移動します。 詳細については、「アプリケーションのカスタム データ アクセス ポリシーを構成する」を参照してください。
Azure portal で、データ アクセス構成に追加する Azure Cache for Redis インスタンスを選択します。
[リソース] メニューから、[データ アクセスの構成] を選択します。
[追加] を選択し、[New Redis User]\(新しい Redis ユーザー\) を選択します。
[アクセス ポリシー] タブで、テーブルに表示されている使用可能なポリシー ([データ所有者]、[データ共同作成者]、[データ閲覧者]) のいずれかを 1 つ選択します。 次に、[Next:Redis Users](次へ:Redis ユーザー) を選択します。
[ユーザーまたはサービス プリンシパル] または [マネージド ID] を選択して、Azure Cache for Redis インスタンスへの割り当て方法を指定します。 [ユーザーまたはサービス プリンシパル] を選択し、"ユーザー" を追加する場合は、最初に Microsoft Entra 認証を有効にする必要があります。
次に、[メンバーの選択] を選択し、[選択] を選択します。 次に [次へ: 確認および割り当て] を選択します。
アップグレードは永続的で、接続が一時的に切断される可能性があることを通知するポップアップがダイアログ ボックスに表示されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Microsoft Entra ID を使用するように Redis クライアントを構成する
ほとんどの Azure Cache for Redis クライアントでは、認証にパスワードとアクセス キーが使用されることを前提としているため、Microsoft Entra ID を使った認証をサポートするためにはクライアント ワークフローを更新する必要がある場合があります。 このセクションでは、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 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
コマンドのタイミングをずらすことを検討してください。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示