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

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

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

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

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

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

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

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

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

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

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

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

    ElastiCache (Redis OSS) でサポートされているその他の読み取り専用コマンドには、ACL WHOAMI、ACL USERS、および ACL CAT ElastiCache (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 — ユーザーのコマンドへのアクセスは command1 に制限されます。

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

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

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

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

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

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

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

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

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

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

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

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

RBAC の Cache for ElastiCache (Redis OSS) への適用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. [変更] を選択します。

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

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

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

を使用してデフォルトユーザーを変更するには 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 つのパスワードを設定できます。パスワードを変更しても、キャッシュへの既存の接続はすべて維持されます。

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

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

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

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

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

コンソールでユーザーを管理するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/elasticache/ で Amazon 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 し、https://console.aws.amazon.com/elasticache/ で Amazon 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 を、実存のサブネットグループに置き換えます。

主要パラメータ
  • --engineredis を指定する必要があります。

  • --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 を、実存のサブネットグループに置き換えます。

主要パラメータ
  • --engineredis を指定する必要があります。

  • --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 イベントの表示」を参照してください。

Redis OSS AUTH から RBAC への移行

で説明されているように Redis OSS AUTH を使用してRedis OSS AUTH コマンドによる認証いて、RBAC の使用に移行する場合は、次の手順を使用します。

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

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

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

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

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

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

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

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

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

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

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

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

CLI を使用して Redis OSS AUTH から RBAC に移行するには
  • 次に示すように、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 から Redis OSS AUTH への移行

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

注記

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