アクセスコントロールリスト (ACL) によるユーザー認証 - Amazon MemoryDB

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

アクセスコントロールリスト (ACL) によるユーザー認証

アクセスコントロールリスト (ACL) を使用してユーザーを認証できます。

ACL を使用すると、ユーザーをグループ化してクラスターアクセスを制御できます。これらのアクセスコントロールリストは、クラスターへのアクセスを分類する方法として設計されています。

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

ACLsは、Redis OSS 6 での Redis ACL の導入をサポートするように設計されています。MemoryDB クラスターで ACL を使用する場合は、いくつかの制約があります。

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

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

  • 禁止されたコマンドは使用できません。禁止されているコマンドを指定すると、例外がスローされます。これらのコマンドの一覧については、「‭制限付き Redis OSS コマンド‬」を参照してください。‬‬‬‬

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

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

    MemoryDB でサポートされているその他の読み取り専用コマンドには、ACL WHOAMIACL USERSACL CATなどがあります。MemoryDB は、他の書き込みベースの ACL コマンドをサポートしていません。

MemoryDB での ACL の使用については、以下で詳しく説明します。

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

MemoryDB クラスターへのアクセス許可を指定するには、 AWS CLI または を使用してアクセス文字列を作成し、ユーザーに割り当てる必要があります AWS Management Console。

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

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

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

on ~* &* +@all

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

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

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

  • &* – すべての pubsub チャネルにアクセス許可が付与されます。

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

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

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

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

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

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

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

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

既存のワークロードを MemoryDB に移行する場合は、ACL LIST を呼び出すことでアクセス権を取得して、ユーザーおよびパスワードハッシュを除外できます。

ベクトル検索機能

注記

この機能は MemoryDB のプレビューリリースであり、変更される可能性があります。

ベクトル検索 では、すべての検索コマンドは @search カテゴリに属しており、検索コマンドを含むために既存のカテゴリ @read@write@fast、および @slow が更新されます。ユーザーがあるカテゴリにアクセスできない場合、そのユーザーは、そのカテゴリ内のいかなるコマンドにもアクセスできません。例えば、ユーザーが @search にアクセスできない場合、そのユーザーは、検索関連のいかなるコマンドも実行できません。

次の表は、適切なカテゴリへの検索コマンドのマッピングを示しています。

VSS コマンド @read @write @fast @slow
FT.CREATE Y Y
FT.DROPINDEX Y Y
FT.LIST Y Y
FT.INFO Y Y
FT.SEARCH Y Y
FT.AGGREGATE Y Y
FT.PROFILE Y Y
FT.ALIASADD Y Y
FT.ALIASDEL Y Y
FT.ALIASUPDATE Y Y
FT._ALIASLIST Y Y
FT.EXPLAIN Y Y
FT.EXPLAINCLI Y Y
FT.CONFIG Y Y

MemoryDB のクラスターに ACL を適用します

MemoryDB ACL を使用するには、次のステップに従います。

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

  2. ACL を作成し、ユーザーをリストに追加します。

  3. ACL をクラスターに割り当てます。

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

コンソールと CLI を使用したユーザーおよびアクセスコントロールリストの作成

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

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

MemoryDB は、アカウントごとにユーザー名を使用してデフォルトユーザー "default" を自動的に設定します。ACL に明示的に追加しない限り、どのクラスターにも関連付けられません。このユーザーを変更または削除することはできません。このユーザーは、以前の Redis OSS バージョンのデフォルト動作との互換性を目的としており、すべてのコマンドを呼び出してすべてのキーにアクセスできるようにするアクセス文字列を持っています。

デフォルトユーザーを含むすべてのアカウントに対して、不変の「オープンアクセス」ACLが作成されます。これは、デフォルトユーザーがメンバーになれる唯一の ACL です。クラスターを作成するときに、クラスター関連付けるACLを選択する必要があります。デフォルトユーザーで「オープンアクセス」ACL を適用することもできますが、ビジネスニーズに合わせて権限が制限されているユーザーを含む ACL を作成することを強くお勧めします。

TLS が有効になっていないクラスターでは、「オープンアクセス」ACL を使用してオープン認証を行う必要があります。

ACL はユーザーなしで作成できます。空の ACL はクラスターにアクセスできず、TLS 有効なクラスターにのみ関連付けることができます。

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

特に、MemoryDBでACLを使用する場合は、ユーザーパスワードの制約に注意してください:

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

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

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

コンソールでユーザーを作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左のナビゲーションペインで、[ユーザー] を選択します。

  3. [ユーザーの作成] を選択します。

  4. [ユーザーの作成] ページで [名前] を入力します。

    クラスターの命名に関する制約は次のとおりです。

    • 1~40 個の英数字またはハイフンを使用する必要があります。

    • 先頭は文字を使用する必要があります。

    • 連続する 2 つのハイフンを含めることはできません。

    • ハイフンで終わることはできません。

  5. [パスワード] には、最大 2 つのパスワードを入力できます。

  6. [アクセス文字列] にアクセス文字列を入力します。アクセス文字列は、ユーザーが許可されたキーとコマンドのアクセス許可レベルを設定します。

  7. タグ では、オプションでタグを適用してユーザーを検索およびフィルタリングしたり、 AWS コストを追跡したりできます。

  8. [作成] を選択します。

CLI を使用してユーザーを作成するには
  • ユーザーを作成するには、create-userコマンドを使用します。

    Linux、macOS、Unix の場合:

    aws memorydb create-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*" \ --authentication-mode \ Passwords="abc",Type=password

    Windows の場合:

    aws memorydb create-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --authentication-mode \ Passwords="abc",Type=password
コンソールでユーザーに変更を加えるには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左のナビゲーションペインで、[ユーザー] を選択します。

  3. 変更するユーザーの横にあるラジオボタンを選択し、[アクション] ->[変更] を選択します。

  4. パスワードを変更する場合は、[パスワードの変更] ラジオボタンを選択します。パスワードが 2 つある場合は、どちらか一方を変更するときに両方を入力する必要があることに注意してください。

  5. アクセス文字列を更新する場合は、新しい文字列を入力します。

  6. 変更を選択します。

CLI を使用してユーザーを変更するには
  1. ユーザーの更新」コマンドを使用してユーザーを変更します。

  2. ユーザーが変更されると、そのユーザーに関連付けられたアクセスコントロールリストが、ACL に関連付けられたクラスターとともに更新されます。既存の接続はすべて維持されます。以下は例です。

    Linux、macOS、Unix の場合:

    aws memorydb update-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*"

    Windows の場合:

    aws memorydb update-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*"
コンソールでユーザーの詳細を表示するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左のナビゲーションペインで、[ユーザー] を選択します。

  3. [ユーザー名] でユーザーを選択するか、検索ボックスを使用してユーザーを検索します。

  4. [ユーザー設定] で、ユーザーのアクセス文字列、パスワード数、ステータス、Amazon リソースネーム (ARN) を確認できます。

  5. [アクセスコントロールリスト (ACL)] では、ユーザーが所属する ACL を確認できます。

  6. [タグ] では、ユーザーに関連付けられているすべてのタグを確認できます。

ユーザーの詳細」 コマンドを使用して、ユーザーの詳細を表示します。

aws memorydb describe-users \ --user-name my-user-name
コンソールでユーザーを削除するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左のナビゲーションペインで、[ユーザー] を選択します。

  3. 変更するユーザーの横にあるラジオボタンを選択し、[アクション]->[削除] を選択します。

  4. 確認テキストボックスで、delete を入力し、確認 を選択します。

  5. キャンセルするには、キャンセル をクリックします。

CLI を使用してサービスロールを削除するには
  • ユーザーを削除するには、delete-user コマンドを使用します。

    アカウントが削除され、そのアカウントが属するアクセス制御リストから削除されます。次に例を示します。

    Linux、macOS、Unix の場合:

    aws memorydb delete-user \ --user-name user-name-2

    Windows の場合:

    aws memorydb delete-user ^ --user-name user-name-2

コンソールおよび CLI を使用したアクセスコントロールリストの管理

次に示すように、アクセスコントロールリストを作成して、1 つ以上のクラスターに対するユーザーのアクセスを分類および制御できます。

次の手順に従って、コンソールを使用してアクセス制御リストを管理します。

コンソールを使用してアクセスコントロールリストを作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左側のナビゲーションペインで、[アクセスコントロールリスト (ACL)] を選択します。

  3. [ACL を作成] を選択します。

  4. [アクセスコントロールリスト (ACL) の作成] ページで、ACL 名を入力します。

    クラスターの命名に関する制約は次のとおりです。

    • 1~40 個の英数字またはハイフンを使用する必要があります。

    • 先頭は文字を使用する必要があります。

    • 連続する 2 つのハイフンを含めることはできません。

    • ハイフンで終わることはできません。

  5. [ユースケースを選択する] で、次のいずれかを実行します。

    1. [ユーザーの作成] を選択して新規ユーザーを作成します。

    2. ユーザーを追加するには、[管理] を選択し、[ユーザーの管理] ダイアログからユーザーを選択し、[選択] を選択します。

  6. タグ では、オプションでタグを適用して ACLsしたり、 AWS コストを追跡したりできます。

  7. [作成] を選択します。

次の手順で、CLI を使用してアクセスコントロールリストを作成します。

CLI を使用して新しいACLを作成し、ユーザーを追加するには
  • create-aclコマンドを使用してを作成します。

    Linux、macOS、Unix の場合:

    aws memorydb create-acl \ --acl-name "new-acl-1" \ --user-names "user-name-1" "user-name-2"

    Windows の場合:

    aws memorydb create-acl ^ --acl-name "new-acl-1" ^ --user-names "user-name-1" "user-name-2"
コンソールを使用してアクセスコントロールリストを変更するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左側のナビゲーションペインで、[アクセスコントロールリスト (ACL)] を選択します。

  3. 変更する ACL を選択し、[変更] をクリックします。

  4. [変更] ページの [選択したユーザー] で、次のいずれかを実行します。

    1. [ユーザーの作成] を選択して新しいユーザーを作成し、ACL に追加します。

    2. ユーザーを追加または削除するには、[管理] を選択し、[ユーザーの管理] ダイアログでユーザーを選択または選択解除し、[選択] を選択します。

  5. [アクセスコントロールリスト (ACL) の作成] ページで、ACL 名を入力します。

    クラスターの命名に関する制約は次のとおりです。

    • 1~40 個の英数字またはハイフンを使用する必要があります。

    • 先頭は文字を使用する必要があります。

    • 連続する 2 つのハイフンを含めることはできません。

    • ハイフンで終わることはできません。

  6. [ユースケースを選択する] で、次のいずれかを実行します。

    1. [ユーザーの作成] を選択して新規ユーザーを作成します。

    2. ユーザーを追加するには、[管理] を選択し、[ユーザーの管理] ダイアログからユーザーを選択し、[選択] を選択します。

  7. [変更] を選択して変更を保存するか、[キャンセル] を選択して変更を破棄します。

CLI を使用して新しいユーザーを追加するか、現在のメンバーを削除してACLを変更するには
  • ACL の更新」コマンドを使用して ACL を変更します。

    Linux、macOS、Unix の場合:

    aws memorydb update-acl --acl-name new-acl-1 \ --user-names-to-add user-name-3 \ --user-names-to-remove user-name-2

    Windows の場合:

    aws memorydb update-acl --acl-name new-acl-1 ^ --user-names-to-add user-name-3 ^ --user-names-to-remove user-name-2
注記

ACLから削除されたユーザーに属するオーペン接続はすべて、このコマンドによって終了されます。

ACL の詳細をコンソールに表示するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左のナビゲーションペインで、[アクセスコントロールリスト (ACL)] をクリックします。

  3. [ACL 名] の下にある ACL を選択するか、検索ボックスを使用して ACL を検索します。

  4. [ユーザー] で、ACL に関連付けられているユーザーのリストを確認できます。

  5. [関連クラスター] で、ACL が属するクラスターを確認できます。

  6. [タグ] では、ACL に関連付けられたすべてのタグを確認できます。

ACL の詳細」コマンドを使用して ACL の詳細を表示します。

aws memorydb describe-acls \ --acl-name test-group
コンソールを使用してアクセスコントロールリストを削除するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/memorydb/ で MemoryDB コンソールを開きます。

  2. 左側のナビゲーションペインで、[アクセスコントロールリスト (ACL)] を選択します。

  3. 変更する ACL を選択し、[削除] を選択します

  4. ACL が削除されないようにするには、[削除] ページで確認ボックスに delete を入力し、[削除] または [キャンセル] を選択します。

グループに属するユーザーではなく、ACL自体が削除されます。

CLI を使用してACLを削除するには
  • ‬delete- acl‬ コマンドを使用してACLを削除します。‬‬‬‬‬‬‬‬

    Linux、macOS、Unix の場合:

    aws memorydb delete-acl / --acl-name

    Windows の場合:

    aws memorydb delete-acl ^ --acl-name

    上記の例では、次の応答を返します。

    aws memorydb delete-acl --acl-name "new-acl-1" { "ACLName": "new-acl-1", "Status": "deleting", "EngineVersion": "6.2", "UserNames": [ "user-name-1", "user-name-3" ], "clusters": [], "ARN":"arn:aws:memorydb:us-east-1:493071037918:acl/new-acl-1" }

アクセスコントロールリストのクラスターへの割り当て

ACL を作成してユーザーを追加した後、ACL を実装する最後の手順では、ACL をクラスターに割り当てます。

コンソールを使用してクラスターにアクセスコントロールリストを割り当てます

を使用して ACL をクラスターに追加するには AWS Management Console、「」を参照してくださいMemoryDB クラスターの作成

を使用したクラスターへのアクセスコントロールリストの割り当て AWS CLI

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

主要パラメータ
  • --engine-version -「6.2」を指定してください

  • --tls-enabled – 認証と ACL の関連付けに使用されます。

  • --acl-name — この値は、クラスターに対して指定されたアクセス権限を持つユーザーで構成されるアクセス制御リストを提供します。

Linux、macOS、Unix の場合:

aws memorydb create-cluster \ --cluster-name "new-cluster" \ --description "new-cluster" \ --engine-version "6.2" \ --node-type db.r6g.large \ --tls-enabled \ --acl-name "new-acl-1" \ --subnet-group-name "subnet-group"

Windows の場合:

aws memorydb create-cluster ^ --cluster-name "new-cluster" ^ --cluster-description "new-cluster" ^ --engine-version "6.2" ^ --node-type db.r6g.large ^ --tls-enabled ^ --acl-name "new-acl-1" ^ --subnet-group-name "subnet-group"

次の AWS CLI オペレーションでは、転送中の暗号化 (TLS) が有効になっているクラスターと、値 を持つ acl-nameパラメータを変更しますnew-acl-2

Linux、macOS、Unix の場合:

aws memorydb update-cluster \ --cluster-name cluster-1 \ --acl-name "new-acl-2"

Windows の場合:

aws memorydb update-cluster ^ --cluster-name cluster-1 ^ --acl-name "new-acl-2"