Azure Redis Cache インスタンスへのアクセスを管理することは、適切なユーザーが適切なデータとコマンドのセットにアクセスできるようにするために重要です。 Redis バージョン 6 では、特定のユーザーがアクセスできるキーと実行できるコマンドを一覧表示する アクセス制御リスト (ACL) が導入されました。 たとえば、特定のユーザーが DEL コマンドを使用してキャッシュ内のキーを削除できないようにすることができます。
Azure Cache for Redis では、この ACL 機能を Microsoft Entra と統合することで、アプリケーションのユーザー、サービス プリンシパル、マネージド ID のデータ アクセス ポリシーを構成して割り当てることができます。 Azure Cache for Redis には、ロールベースのアクセス制御 (RBAC) を介して割り当てることができる 3 つの組み込みアクセス ポリシー ( データ所有者、 データ共同作成者、 データ閲覧者) が用意されています。
組み込みのアクセス ポリシーがデータ保護と分離の要件を満たしていない場合は、独自のカスタム データ アクセス ポリシーを作成して使用できます。 この記事では、Azure Cache for Redis のカスタム データ アクセス ポリシーを構成し、Microsoft Entra 認証を使用して RBAC を有効にする方法について説明します。
利用可能範囲
レベル | Basic、Standard、Premium | Enterprise、Enterprise Flash |
---|---|---|
可用性 | はい | いいえ |
制限事項
- データ アクセス ポリシーの構成は、Enterprise レベルと Enterprise Flash レベルではサポートされていません。
- Redis バージョン 4 を実行する Azure Redis インスタンスでは、Redis ACL とデータ アクセス ポリシーはサポートされていません。
- Microsoft Entra の認証と承認は、Secure Socket Layer (SSL) 接続でのみサポートされます。
- 一部の Redis コマンドは、Azure Cache for Redis でブロックされます。 詳細については、「Redis commands not supported in Azure Cache for Redis (Azure Cache for Redis でサポートされない Redis コマンド)」を参照してください。
Redis ACL のアクセス許可
Redis バージョン 6.0 の Redis ACL では、コマンド カテゴリ、コマンド、キーの 3 つの領域に対するアクセス許可を構成できます。
コマンド カテゴリ
Redis では、管理コマンドや危険なコマンドなどの コマンド カテゴリが作成され、コマンドのグループに対するアクセス許可の設定が容易になりました。 アクセス許可文字列で、 +@<category>
を使用して、コマンド カテゴリまたはコマンド カテゴリを許可しない -@<category>
を許可します。
Redis では、次の便利なコマンド カテゴリがサポートされています。 詳細と完全な一覧については、Redis ACL ドキュメントのコマンド カテゴリの見出しを参照してください。
カテゴリ | 説明 |
---|---|
admin |
MONITOR やSHUTDOWN などの管理コマンド。 通常のアプリケーションでは、これらのコマンドを使用する必要はありません。 |
dangerous |
FLUSHALL 、RESTORE 、SORT 、KEYS 、CLIENT 、DEBUG 、INFO 、CONFIG など、潜在的に危険なコマンド。 さまざまな理由から、それぞれを慎重に検討してください。 |
keyspace |
DEL 、RESTORE 、DUMP 、RENAME 、EXISTS 、DBSIZE 、KEYS 、EXPIRE 、TTL 、およびFLUSHALL が含まれます。 型に依存しない方法でキー、データベース、またはそのメタデータを書き込んだり読み取ったりします。 キースペース、キー、またはメタデータのみを読み取るコマンドには、 read カテゴリがあります。 キースペース、キー、またはメタデータを変更できるコマンドにも、 write カテゴリがあります。 |
pubsub |
PubSub 関連のコマンド。 |
read |
キー、値、またはメタデータからの読み取り。 キーと対話しないコマンドには、 read も write もありません。 |
set |
データ型: 関連するセット。 |
sortedset |
データ型: 関連するソートされたセット。 |
stream |
データ型: 関連するストリーム。 |
string |
データ型: 関連する文字列。 |
write |
キーへの値またはメタデータの書き込み。 |
注
Azure Redis に対して ブロック されるコマンドは、カテゴリ内でブロックされたままです。
コマンド
コマンド を使用すると、特定の Redis ユーザーが実行できる特定のコマンドを制御できます。 アクセス許可文字列では、+<command>
を使用してコマンドを許可し、-<command>
を使用してコマンドを許可しないようにします。
キー
キー を使用すると、キャッシュに格納されている特定のキーまたはキーのグループへのアクセスを制御できます。 アクセス許可文字列の ~<pattern>
を使用して、キーのパターンを指定します。
~*
またはallkeys
を使用して、キャッシュ内のすべてのキーにアクセス許可が適用されることを示します。
アプリケーションのカスタム データ アクセス ポリシーを構成する
カスタム データ アクセス ポリシーを構成するには、カスタム アクセス ポリシーとして使用するアクセス許可文字列を作成し、キャッシュに対して Microsoft Entra 認証を有効にします。
アクセス許可を指定する
要件に従ってアクセス許可文字列を構成します。 次の例は、さまざまなシナリオのアクセス許可文字列を示しています。
アクセス許可文字列 | 説明 |
---|---|
+@all allkeys |
アプリケーションがすべてのキーに対してすべてのコマンドを実行できるようにします。 |
+@read ~* |
アプリケーションがread コマンドカテゴリのみを実行することを許可します。 |
+@read +set ~Az* |
アプリケーションでコマンド カテゴリ read 実行し、プレフィックス Az を持つキーに対してコマンドを設定できるようにします。 |
カスタム データ アクセス ポリシーを作成する
Azure portal で、データ アクセス ポリシーを作成する Azure Redis Cache を選択します。
左側のナビゲーション メニューの [設定] で [データ アクセスの構成] を選択します。
[ データ アクセスの構成] ページで、[ 追加>新しいアクセス ポリシー] を選択します。
[ カスタム アクセス ポリシーの追加/編集] 画面で、アクセス ポリシーの名前を指定します。
[ アクセス許可] で、カスタムのアクセス許可文字列を追加し、[ 適用] を選択します。
カスタム ポリシーが、[データ アクセス構成] ページの [アクセス ポリシー] タブに、3 つの組み込みの Azure Redis ポリシーと共に表示されるようになりました。
Microsoft Entra 認証を有効にする
Microsoft Entra を使用してアクセス ポリシーにユーザーを割り当てるには、キャッシュでアクセス キー認証を有効にするのではなく、Microsoft Entra を使用する必要があります。 認証方法を確認するには、キャッシュの左側のナビゲーション メニューの [設定] で [認証] を選択します。
[認証] 画面で、[アクセス キー認証を無効にする] が選択されていて、画面にアクセス キーが表示されない場合、キャッシュでは既に Microsoft Entra 認証が使用されています。 それ以外の場合は、[ アクセス キー認証を無効にする ] の横にあるチェック ボックスをオンにし、[保存] を選択 します。
アクセス キー認証を無効にするかどうかを確認するポップアップ ダイアログ ボックスに[ はい ] と応答します。
重要
Microsoft Entra の有効化操作が完了すると、キャッシュ インスタンス内のノードが再起動され、新しい構成が読み込まれます。 この操作には最大 30 分かかることがあります。 この操作は、メンテナンス期間中またはピーク時以外の時間帯に実行することをお勧めします。
Microsoft Entra ID を使用するように Redis クライアントを構成する
ほとんどの Azure Cache for Redis クライアントでは、認証にパスワードとアクセス キーが使用されていると想定されています。 特定の Microsoft Entra ユーザー名とパスワードを使用した認証と承認をサポートするように、クライアント ワークフローを更新することが必要になる場合があります。 キャッシュ インスタンスに特定の Redis ユーザーとして接続するようにクライアント アプリケーションを構成する方法については、「 Microsoft Entra ID を使用するように Redis クライアントを構成する」を参照してください。