ロールベースのアクセスコントロール (RBAC) - Amazon ElastiCache

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ロールベースのアクセスコントロール (RBAC)

で説明されているように、Valkey および Redis OSS AUTH コマンドでユーザーを認証する代わりにValkey および Redis OSS AUTH コマンドによる認証、Valkey 7.2 以降および Redis 6.0 以降では、ロールベースのアクセスコントロール (RBAC) OSS と呼ばれる機能を使用できます。RBAC は、サーバーレスキャッシュへのアクセスを制御する唯一の方法でもあります。

トークンが認証された場合OSSAUTHにすべての認証済みクライアントがフルキャッシュアクセスを持つ Valkey や Redis とは異なり、 RBAC ではユーザーグループを介してキャッシュアクセスを制御できます。ユーザーグループは、キャッシュへのアクセスを分類する手段として設計されています。

ではRBAC、以下に示すように、アクセス文字列を使用してユーザーを作成し、特定のアクセス許可を割り当てます。特定のロール (管理者、人事) と連携したユーザーグループにユーザーを割り当て、そのユーザーグループを 1 つ以上の ElastiCache キャッシュにデプロイします。これにより、同じ Valkey または Redis OSSキャッシュを使用してクライアント間のセキュリティ境界を確立し、クライアントが互いのデータにアクセスできないようにすることができます。

注記

Valkey クラスターRBACで を使用する場合、ユーザーとユーザーグループにエンジン「redis」を割り当てる必要があります。

RBAC は、Redis 6 ACLでの OSS の導入をサポートするように設計されています。 ElastiCache Valkey または Redis OSSキャッシュRBACで を使用する場合、いくつかの制限があります。

  • アクセス文字列にパスワードを指定することはできません。パスワードは CreateUserまたは ModifyUser呼び出しで設定します。

  • ユーザー権限については、on および off をアクセス文字列の一部としてパスします。アクセス文字列にどちらも指定されていない場合、ユーザーには off が割り当てられ、キャッシュへのアクセス権はありません。

  • 禁止されたコマンドや名前を変更したコマンドは使用できません。禁止または名前変更されたコマンドを指定すると、例外がスローされます。名前を変更したコマンドにアクセスコントロールリスト (ACLs) を使用する場合は、コマンドの元の名前、つまり名前を変更する前のコマンドの名前を指定します。

  • reset コマンドを、アクセス文字列の一部として使用することはできません。API パラメータでパスワードを指定し、 ElastiCache (Redis OSS) がパスワードを管理します。したがって、reset を使用することはできません。それによりユーザーのすべてのパスワードが削除されるからです。

  • Redis 6 OSS は ACL LIST コマンドを導入します。このコマンドは、各ユーザーに適用されるACLルールとともに、ユーザーのリストを返します。 ElastiCache (Redis OSS) は ACL LIST コマンドをサポートしますが、Redis と同様にパスワードハッシュのサポートは含まれませんOSS。 ElastiCache (Redis OSS) では、describe-users オペレーションを使用して、アクセス文字列に含まれるルールを含む同様の情報を取得できます。ただし、describe-users は、ユーザーパスワードを取得しません。

    Valkey および Redis ACL USERS ElastiCache でサポートされているその他の読み取り専用コマンドOSSにはACLWHOAMI、、、および ACL CATが含まれます。 ElastiCache Valkey および Redis OSSでは、他の書き込みベースのACLコマンドはサポートされていません。

  • 以下の制約が適用されます。

    リソース 最大許容数
    ユーザーグループあたりのユーザー数 100
    ユーザー数 1,000
    ユーザーグループの数 100

ElastiCache (Redis OSS) RBACでの の使用については、以下で詳しく説明します。

アクセス文字列を使用したアクセス許可の指定

ElastiCache (Redis OSS) キャッシュに対するアクセス許可を指定するには、 AWS CLI または を使用してアクセス文字列を作成し、ユーザーに割り当てます AWS Management Console。

アクセス文字列は、ユーザーに適用されるスペース区切りルールのリストとして定義されます。それらは、ユーザーが実行できるコマンドと、ユーザーが操作できるキーを定義します。コマンドを実行するには、ユーザーは、実行されているコマンドと、そのコマンドによってアクセスされているすべてのキーにアクセスできる必要があります。ルールは左から右に累積的に適用され、提供された文字列に冗長性がある場合は、提供された文字列の代わりに、より単純な文字列を使用できます。

ACL ルールの構文については、「」を参照してくださいACL

次の例では、アクセス文字列は、使用可能なすべてのキーおよびコマンドにアクセスできるアクティブなユーザーを表します。

on ~* +@all

アクセス文字列の構文は、次のように分類されます。

  • on — ユーザーはアクティブなユーザーです。

  • ~* — アクセス権はすべての使用可能なキーに与えられます。

  • +@all — アクセス権はすべての使用可能なコマンドに与えられます。

上記の設定は、最も制限が緩い設定です。これらの設定を変更して、セキュリティを強化できます。

次の例では、アクセス文字列は「app::」キースペースで始まるキーに対する読み取りアクセスに制限されたアクセス権を持つユーザーを表します。

on ~app::* -@all +@read

ユーザーがアクセス権を持つコマンドを一覧表示することで、これらのアクセス許可をさらに絞り込むことができます。

+command1 – ユーザーのコマンドへのアクセスは に制限されます。コマンド 1.

+@category — ユーザーのアクセスは、コマンドのカテゴリーに制限されます。

アクセス文字列をユーザーに割り当てる方法については、「コンソールと を使用したユーザーとユーザーグループの作成 CLI」を参照してください。

既存のワークロードを に移行する場合は ElastiCache、ユーザーとパスワードハッシュを除きACL LIST、 を呼び出すことでアクセス文字列を取得できます。

Redis OSSバージョン 6.2 以降では、以下のアクセス文字列構文もサポートされています。

  • &* — アクセス権はすべての使用可能なチャネルに与えられます。

Redis OSSバージョン 7.0 以降では、以下のアクセス文字列構文もサポートされています。

  • | — サブコマンドをブロックするために使用できます (例:「-config|set」)。

  • %R~<pattern> — 指定された読み取りキーパターンを追加します。これは通常のキーパターンと同様に動作しますが、指定されたパターンに一致するキーからの読み取り権限のみを許可します。詳細については、「キーのアクセス許可」を参照してください。

  • %W~<pattern> — 指定された書き込みキーパターンを追加します。これは通常のキーパターンと同様に動作しますが、指定されたパターンに一致するキーに書き込む権限のみを許可します。詳細については、ACL「主要なアクセス許可」を参照してください。

  • %RW~<pattern>~<pattern> のエイリアス。

  • (<rule list>) — ルールを照合する新しいセレクターを作成します。セレクターはユーザーアクセス許可の後に評価され、定義されている順序に従って評価されます。コマンドがユーザーアクセス許可または任意のセレクターと一致する場合、そのコマンドは許可されます。詳細については、ACL「セレクタ」を参照してください。

  • clearselectors — ユーザーにアタッチされているセレクターをすべて削除します。

Valkey または Redis ElastiCache を使用した のキャッシュRBACへの適用 OSS

Valkey または Redis OSS ElastiCache で使用するにはRBAC、次の手順を実行します。

  1. 1 つ以上のユーザーを作成します。

  2. ユーザーグループを作成し、ユーザーをグループに追加します。

  3. 転送時の暗号化が有効なキャッシュにユーザーグループを割り当てます。

これらのステップは、以下に詳細が説明されます。

コンソールと を使用したユーザーとユーザーグループの作成 CLI

RBAC ユーザーのユーザー情報は、ユーザー ID、ユーザー名、およびオプションでパスワードとアクセス文字列です。アクセス文字列は、キーとコマンドでのアクセス許可レベルを提供します。ユーザー ID はユーザーに対して一意であり、ユーザー名はエンジンに渡されるものです。

指定するユーザー許可が、ユーザーグループの意図した目的に合っていることを確認してください。たとえば、Administrators という名前のユーザーグループを作成した場合、そのグループに追加するすべてのユーザーは、キーおよびコマンドへのフルアクセスに設定されたアクセス文字列を持つ必要があります。e-commerce ユーザーグループ内のユーザーでは、アクセス文字列を読み取り専用アクセスに設定できます。

ElastiCache は、ユーザー ID とユーザー名を使用してデフォルトのユーザーを自動的に設定"default"し、すべてのユーザーグループに追加します。このユーザーを変更または削除することはできません。このユーザーは、以前の Redis OSSバージョンのデフォルトの動作と互換性があり、すべてのコマンドを呼び出してすべてのキーにアクセスできるようにするアクセス文字列があります。

適切なアクセスコントロールをキャッシュに追加するには、このデフォルトユーザーを、有効になっていない、または強力なパスワードを使用する新しいユーザーに置き換えます。デフォルトユーザーを変更するには、ユーザー名が default に設定された新しいユーザーを作成します。その後、元のデフォルトユーザーと入れ替えることができます。

次の手順では、元の default ユーザーを、変更されたアクセス文字列を持つ別の default ユーザーと入れ替える方法を示します。

コンソールでデフォルトユーザーを変更するには
  1. にサインイン AWS Management Console し、 で Amazon ElastiCache コンソールを開きますhttps://console.aws.amazon.com/elasticache/

  2. ナビゲーションペインで [ユーザーグループの管理] を選択します。

  3. [ユーザーグループ ID] で、変更対象の ID を選択します。チェックボックスではなく、リンクを選択するようにしてください。

  4. Modify を選択します。

  5. [変更] ウィンドウで、[管理] を選択し、[ユーザー名] で、デフォルトユーザーとして使用したいユーザーを選択します。

  6. [選択] を選択します。

  7. Modify を選択します。これを行うと、元のデフォルトユーザーが確立していたキャッシュへの既存の接続はすべて終了します。

を使用してデフォルトユーザーを変更するには AWS CLI
  1. 以下のコマンドを使用して、ユーザー名 default で新しいユーザーを作成します。

    Linux、macOS、Unix の場合:

    aws elasticache create-user \ --user-id "new-default-user" \ --user-name "default" \ --engine "REDIS" \ --passwords "a-str0ng-pa))word" \ --access-string "off +get ~keys*"

    Windows の場合:

    aws elasticache create-user ^ --user-id "new-default-user" ^ --user-name "default" ^ --engine "REDIS" ^ --passwords "a-str0ng-pa))word" ^ --access-string "off +get ~keys*"
  2. ユーザーグループを作成し、前に作成したユーザーを追加します。

    Linux、macOS、Unix の場合:

    aws elasticache create-user-group \ --user-group-id "new-group-2" \ --engine "REDIS" \ --user-ids "new-default-user"

    Windows の場合:

    aws elasticache create-user-group ^ --user-group-id "new-group-2" ^ --engine "REDIS" ^ --user-ids "new-default-user"
  3. 新しい default ユーザーを元の default ユーザーと入れ替えます。

    Linux、macOS、Unix の場合:

    aws elasticache modify-user-group \ --user-group-id test-group \ --user-ids-to-add "new-default-user" \ --user-ids-to-remove "default"

    Windows の場合:

    aws elasticache modify-user-group ^ --user-group-id test-group ^ --user-ids-to-add "new-default-user" ^ --user-ids-to-remove "default"

    この変更オペレーションが呼び出されると、元のデフォルトユーザーが確立していたキャッシュへの既存の接続はすべて終了します。

ユーザーを作成するときは、最大 2 つのパスワードを設定できます。パスワードを変更しても、キャッシュへの既存の接続はすべて維持されます。

特に、 RBAC を ElastiCache (Redis ) に使用するときは、以下のユーザーパスワードの制約に注意してくださいOSS。

  • パスワードは、印刷可能な 16~128 文字にする必要があります。

  • 次の英数字以外の文字は使用できません: , "" / @

コンソールと を使用したユーザーの管理 CLI

コンソール上でユーザーを管理するには、次の手順に従います。

コンソールでユーザーを管理するには
  1. にサインイン AWS Management Console し、 で Amazon ElastiCache コンソールを開きますhttps://console.aws.amazon.com/elasticache/

  2. Amazon ElastiCache ダッシュボードで、ユーザー管理 を選択します。以下のオプションが利用できます。

    • [ユーザーを作成] — ユーザーの作成時に、ユーザー ID、ユーザー名、認証モード、およびアクセス文字列を入力します。アクセス文字列は、ユーザーが許可されたキーとコマンドのアクセス許可レベルを設定します。

      ユーザーを作成するときは、最大 2 つのパスワードを設定できます。パスワードを変更しても、キャッシュへの既存の接続はすべて維持されます。

    • [ユーザーを変更] — ユーザーの認証設定を更新したり、アクセス文字列を変更したりできます。

    • [ユーザーを削除] — アカウントは、所属先のすべてのユーザーグループから削除されます。

AWS CLIでユーザーを管理するには、次の手順を使用します。

を使用してユーザーを変更するには CLI
  • modify-user コマンドを使用して、ユーザーのパスワードまたはパスワードを更新したり、ユーザーのアクセス権を変更したりします。

    ユーザーが変更されると、そのユーザーに関連付けられたユーザーグループが更新され、そのユーザーグループに関連付けられたキャッシュも更新されます。既存の接続はすべて維持されます。以下は例です。

    Linux、macOS、Unix の場合:

    aws elasticache modify-user \ --user-id user-id-1 \ --access-string "~objects:* ~items:* ~public:*" \ --no-password-required

    Windows の場合:

    aws elasticache modify-user ^ --user-id user-id-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --no-password-required
注記

nopass オプションを使用することは推奨されません。その場合、ユーザーのアクセス許可を読み取り専用に設定して、限定されたキーのセットにアクセスすることをお勧めします。

を使用してユーザーを削除するには CLI
  • ユーザーを削除するには、delete-user コマンドを使用します。アカウントが削除され、そのアカウントが属するユーザーグループから削除されます。次に例を示します。

    Linux、macOS、Unix の場合:

    aws elasticache delete-user \ --user-id user-id-2

    Windows の場合:

    aws elasticache delete-user ^ --user-id user-id-2

ユーザーのリストを表示するには、describe-users オペレーションを呼び出します。

aws elasticache describe-users

コンソールと を使用したユーザーグループの管理 CLI

次に示すように、ユーザーグループを作成して、1 つまたは複数のレプリケーショングループに対するユーザーのアクセスを分類および制御できます。

コンソールを使用してユーザーグループを管理するには、次の手順に従います。

コンソールを使用してユーザーグループを管理するには
  1. にサインイン AWS Management Console し、 で Amazon ElastiCache コンソールを開きますhttps://console.aws.amazon.com/elasticache/

  2. Amazon ElastiCache ダッシュボードで、ユーザーグループ管理 を選択します。

    以下のオペレーションは、新しいユーザーグループを作成するために使用できます。

    • [作成] – ユーザーグループの作成時に、ユーザーを追加し、ユーザーグループをキャッシュに割り当てます。例えば、キャッシュで管理者ロールを持つユーザーの Admin ユーザーグループを作成できます。

      重要

      ユーザーグループを作成するときは、デフォルトユーザーを含める必要があります。

    • [ユーザーの追加] — ユーザーをユーザーグループに追加します。

    • [ユーザーの削除] — ユーザーグループからユーザーを削除します。ユーザーがユーザーグループから削除された場合、そのユーザーが確立しているキャッシュへの既存の接続はすべて終了します。

    • [削除] — ユーザーグループを削除します。グループに属するユーザーではなく、ユーザーグループ自体が削除されることに注意してください。

    既存のユーザーグループでは、次のことを実行できます。

    • [ユーザーの追加] — 既存のユーザーをユーザーグループに追加します。

    • [ユーザーを削除する] — ユーザーグループから既存のユーザーを削除します。

      注記

      ユーザーはユーザーグループから削除されますが、システムからは削除されません。

を使用してユーザーグループを管理するには、次の手順に従いますCLI。

を使用して新しいユーザーグループを作成し、ユーザーを追加するには CLI
  • 次に示すように、create-user-group コマンドを使用します。

    Linux、macOS、Unix の場合:

    aws elasticache create-user-group \ --user-group-id "new-group-1" \ --engine "REDIS" \ --user-ids user-id-1, user-id-2

    Windows の場合:

    aws elasticache create-user-group ^ --user-group-id "new-group-1" ^ --engine "REDIS" ^ --user-ids user-id-1, user-id-2
を使用して新しいユーザーを追加したり、現在のメンバーを削除したりしてユーザーグループを変更するには CLI
  • 次に示すように、modify-user-group コマンドを使用します。

    Linux、macOS、Unix の場合:

    aws elasticache modify-user-group --user-group-id new-group-1 \ --user-ids-to-add user-id-3 \ --user-ids-to-remove user-id-2

    Windows の場合:

    aws elasticache modify-user-group --user-group-id new-group-1 ^ --user-ids-to-add userid-3 ^ --user-ids-to-removere user-id-2
注記

ユーザーグループから削除されたユーザーに属する開いている接続はすべて、このコマンドによって終了します。

を使用してユーザーグループを削除するには CLI
  • 次に示すように、delete-user-group コマンドを使用します。グループに属するユーザーではなく、ユーザーグループ自体が削除されます。

    Linux、macOS、Unix の場合:

    aws elasticache delete-user-group / --user-group-id

    Windows の場合:

    aws elasticache delete-user-group ^ --user-group-id

ユーザーグループのリストを表示するには、 describe-user-groupsオペレーションを呼び出します。

aws elasticache describe-user-groups \ --user-group-id test-group

サーバーレスキャッシュへのユーザーグループの割り当て

ユーザーグループを作成し、ユーザーを追加したら、実装の最終ステップRBACは、ユーザーグループをサーバーレスキャッシュに割り当てることです。

コンソールを使用したサーバーレスキャッシュへのユーザーグループの割り当て

を使用してサーバーレスキャッシュにユーザーグループを追加するには AWS Management Console、以下を実行します。

を使用したサーバーレスキャッシュへのユーザーグループの割り当て AWS CLI

次の AWS CLI オペレーションでは、 値 を持つ user-group-idパラメータを使用してサーバーレスキャッシュを作成しますmy-user-group-id。サブネット グループ sng-test を、実存のサブネットグループに置き換えます。

主要パラメータ
  • --engine – は valkeyまたは である必要がありますredis

  • --user-group-id — この値には、キャッシュへの特定のアクセス許可を割り当てられたユーザーで構成されるユーザーグループの ID を指定します。

Linux、macOS、Unix の場合:

aws elasticache create-serverless-cache \ --serverless-cache-name "new-serverless-cache" \ --description "new-serverless-cache" \ --engine "redis" \ --user-group-id "new-group-1"

Windows の場合:

aws elasticache create-serverless-cache ^ --serverless-cache-name "new-serverless-cache" ^ --description "new-serverless-cache" ^ --engine "redis" ^ --user-group-id "new-group-1"

次の AWS CLI オペレーションでは、 値 を持つ user-group-idパラメータを使用してサーバーレスキャッシュを変更しますmy-user-group-id

Linux、macOS、Unix の場合:

aws elasticache modify-serverless-cache \ --serverless-cache-name serverless-cache-1 \ --user-group-id "new-group-2"

Windows の場合:

aws elasticache modify-serverless-cache ^ --serverless-cache-name serverless-cache-1 ^ --user-group-id "new-group-2"

キャッシュに加えられた変更は、非同期で更新されます。イベントを表示して、この進行状況をモニタリングできます。詳細については、「 ElastiCache イベントの表示」を参照してください。

レプリケーショングループへのユーザーグループの割り当て

ユーザーグループを作成し、ユーザーを追加したら、実装の最終ステップRBACは、ユーザーグループをレプリケーショングループに割り当てることです。

コンソールを使用したレプリケーショングループへのユーザーグループの割り当て

を使用してレプリケーションにユーザーグループを追加するには AWS Management Console、以下を実行します。

を使用してレプリケーショングループにユーザーグループを割り当てる AWS CLI

次の AWS CLI オペレーションでは、転送中の暗号化 (TLS) が有効になっているレプリケーショングループと、 値 を持つ user-group-idsパラメータを作成しますmy-user-group-id。サブネット グループ sng-test を、実存のサブネットグループに置き換えます。

主要パラメータ
  • --engine – は valkeyまたは である必要がありますredis

  • --engine-version - 6.0 以降を指定する必要があります。

  • --transit-encryption-enabled — 認証およびユーザーグループの関連付けに必要です。

  • --user-group-ids — この値には、キャッシュへの特定のアクセス許可を割り当てられたユーザーで構成されるユーザーグループの ID を指定します。

  • --cache-subnet-group — ユーザーグループを関連付けるために必要です。

Linux、macOS、Unix の場合:

aws elasticache create-replication-group \ --replication-group-id "new-replication-group" \ --replication-group-description "new-replication-group" \ --engine "redis" \ --cache-node-type cache.m5.large \ --transit-encryption-enabled \ --user-group-ids "new-group-1" \ --cache-subnet-group "cache-subnet-group"

Windows の場合:

aws elasticache create-replication-group ^ --replication-group-id "new-replication-group" ^ --replication-group-description "new-replication-group" ^ --engine "redis" ^ --cache-node-type cache.m5.large ^ --transit-encryption-enabled ^ --user-group-ids "new-group-1" ^ --cache-subnet-group "cache-subnet-group"

次の AWS CLI オペレーションでは、転送中の暗号化 (TLS) が有効になっているレプリケーショングループと、 値 を持つ user-group-idsパラメータを変更しますmy-user-group-id

Linux、macOS、Unix の場合:

aws elasticache modify-replication-group \ --replication-group-id replication-group-1 \ --user-group-ids-to-remove "new-group-1" \ --user-group-ids-to-add "new-group-2"

Windows の場合:

aws elasticache modify-replication-group ^ --replication-group-id replication-group-1 ^ --user-group-ids-to-remove "new-group-1" ^ --user-group-ids-to-add "new-group-2"

応答内の PendingChanges を書き留めます。キャッシュに加えられた変更は、非同期で更新されます。イベントを表示して、この進行状況をモニタリングできます。詳細については、「 ElastiCache イベントの表示」を参照してください。

から への移行 AUTH RBAC

の説明AUTHに従って を使用してValkey および Redis OSS AUTH コマンドによる認証いて、 を使用して に移行する場合はRBAC、次の手順を使用します。

コンソールRBACを使用して から AUTH に移行するには、次の手順に従います。

コンソールRBACを使用して Valkey または Redis から OSS AUTH に移行するには
  1. にサインイン AWS Management Console し、 https://console.aws.amazon.com/elasticache/で ElastiCache コンソールを開きます。

  2. 右上隅のリストから、変更するキャッシュがある AWS リージョンを選択します。

  3. ナビゲーションペインで、変更対象のキャッシュで実行されているエンジンを選択します。

    選択したエンジンのキャッシュのリストが表示されます。

  4. キャッシュのリストで、変更対象のキャッシュの名前を選択します。

  5. [アクション][変更] の順に選択します。

    [変更] ウィンドウが表示されます。

  6. [アクセスコントロール] で、[ユーザーグループのアクセスコントロールリスト] を選択します。

  7. [ユーザーグループのアクセスコントロールリスト] で、ユーザーグループを選択します。

  8. [変更をプレビュー] を選択し、次の画面で [変更] を選択します。

Valkey または Redis から OSS AUTH RBACの使用に移行するには、次の手順を使用しますCLI。

RBAC を使用して から AUTH に移行するには CLI
  • 次に示すように、modify-replication-group コマンドを使用します。

    Linux、macOS、Unix の場合:

    aws elasticache modify-replication-group --replication-group-id test \ --auth-token-update-strategy DELETE \ --user-group-ids-to-add user-group-1

    Windows の場合:

    aws elasticache modify-replication-group --replication-group-id test ^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add user-group-1

から への移行 RBAC AUTH

を使用してRBACいて Redis に移行する場合は、OSSAUTH「」を参照してくださいから への移行 RBAC AUTH

注記

ElastiCache キャッシュのアクセスコントロールを無効にする必要がある場合は、 を通じてそれを行う必要があります AWS CLI。詳細については、「Valkey または Redis OSSキャッシュでの ElastiCacheアクセスコントロールの無効化」を参照してください。