使用存取控制清單 (ACLs) 驗證使用者 - Amazon MemoryDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用存取控制清單 (ACLs) 驗證使用者

您可以使用存取控制清單 (ACLs使用者。

ACLs 可讓您透過分組使用者來控制叢集存取。這些存取控制清單旨在做為組織叢集存取的方式。

使用 ACLs 時,您可以使用存取字串來建立使用者並為其指派特定許可,如下一節所述。您可以將使用者指派給與特定角色 (管理員、人力資源) 一致的存取控制清單,然後部署到一或多個 MemoryDB 叢集。透過這樣做,您可以使用相同的 MemoryDB 叢集在用戶端之間建立安全界限,並防止用戶端存取彼此的資料。

ACLs旨在支援在 Redis OSS 6 中引入 ACL。當您搭配 MemoryDB 叢集使用 ACLs 時,有一些限制:

  • 您無法在存取字串中指定密碼。您可以使用 CreateUserUpdateUser 呼叫設定密碼。

  • 針對使用者權限,您需傳遞 onoff 作為存取字串的一部分。如果存取字串中未指定兩者,則會指派使用者,off而且沒有叢集的存取權。

  • 您不能使用禁止的命令。如果您指定禁止的命令,則會擲回例外狀況。如需這些命令的清單,請參閱 受限制的命令

  • 您無法使用 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 命令。

使用 ACLs搭配 MemoryDB 的詳細說明如下。

使用存取字串指定許可

若要指定 MemoryDB 叢集的許可,您可以使用 AWS CLI 或 建立存取字串,並將其指派給使用者 AWS Management Console。

存取字串的定義是套用至使用者的空格分隔規則清單。用於定義使用者可以執行哪些命令,以及使用者可以操作哪些索引鍵。為了執行命令,使用者必須能存取執行中的命令以及該命令存取的所有索引鍵。規則會從左到右累加套用,如果提供的字串中有備援,則可以使用較簡單的字串,而不是提供的字串。

如需 ACL 規則語法的詳細資訊,請參閱 ACL

在下列範例中,存取字串代表有權存取所有可用索引鍵和命令的活躍使用者。

on ~* &* +@all

存取字串語法可細分以下各項:

  • on - 使用者是活躍使用者。

  • ~* - 存取權限提供給所有可用的索引鍵。

  • &* – 存取會授予所有 pubsub 頻道。

  • +@all - 存取權限提供給所有可用的命令。

先前的設定受到最低限度的限制。您可以修改這些設定,提高安全性。

在下面的範例中,存取字串代表對於以「app::」keyspace 開頭的索引鍵,存取權受限於讀取存取的使用者

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

您可以列出使用者可存取的命令,進一步精簡這些許可:

+command1 - 使用者對命令的存取權限受限於 command1

+@category - 使用者的存取權限受限於某個命令類別。

如需將存取字串指派給使用者的相關資訊,請參閱「使用主控台和 CLI 建立使用者和存取控制清單」。

如果您要將現有工作負載遷移至 MemoryDB,您可以呼叫 來擷取存取字串ACL LIST,但不包含使用者和任何密碼雜湊。

向量搜尋功能

對於 向量搜尋,所有搜尋命令都屬於 @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

將 ACLs 套用至 MemoryDB 的叢集

若要使用 MemoryDB ACLs,請執行下列步驟:

  1. 建立一或多位使用者。

  2. 建立 ACL 並將使用者新增至清單。

  3. 將 ACL 指派給叢集。

以下詳細說明這些步驟。

使用主控台和 CLI 建立使用者和存取控制清單

ACLs 使用者的使用者資訊是使用者名稱,以及選用的密碼和存取字串。存取字串提供索引鍵和命令的許可層級。名稱對使用者是唯一的,是傳遞給引擎的內容。

請確定您提供的使用者許可符合 ACL 的預期用途。例如,如果您建立名為 的 ACLAdministrators,則您新增至該群組的任何使用者都應將其存取字串設定為對金鑰和命令的完整存取。對於 e-commerce ACL 中的使用者,您可以將其存取字串設定為唯讀存取。

MemoryDB 會為每個帳戶自動設定使用者名稱 的預設使用者"default"。除非明確新增至 ACL,否則不會與任何叢集建立關聯。您無法刪除或修改此使用者。此使用者旨在與先前 Redis OSS 版本的預設行為相容,並具有允許其呼叫所有命令和存取所有金鑰的存取字串。

將為每個包含預設使用者的 帳戶建立不可變的「開放存取」ACL。這是預設使用者可以成為成員的唯一 ACL。建立叢集時,您必須選取要與叢集建立關聯的 ACL。雖然您可以選擇將「開放存取」ACL 套用到預設使用者,但強烈建議建立 ACL 的使用者,其許可僅限於其業務需求。

未啟用 TLS 的叢集必須使用「開放存取」ACL 來提供開放身分驗證。

ACLs 可以建立,無需任何使用者。空的 ACL 將無法存取叢集,而且只能與啟用 TLS 的叢集建立關聯。

建立使用者時,最多可以設定兩個密碼。當您修改密碼時,會維護與叢集的任何現有連線。

特別是,在 MemoryDB 中使用 ACLs時,請注意這些使用者密碼限制:

  • 密碼必須為 16 - 128 個可列印字元。

  • 不允許使用以下非英數字元:, "" / @

使用主控台和 CLI 管理使用者

在主控台上建立使用者
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇使用者

  3. 選擇建立使用者

  4. 建立使用者頁面上,輸入名稱

    叢集命名限制條件如下:

    • 必須包含 1-40 個英數字元或連字號。

    • 必須以字母開頭。

    • 不能連續包含兩個連字號。

    • 結尾不能是連字號。

  5. 密碼下,您最多可以輸入兩個密碼。

  6. 存取字串下,輸入存取字串。存取字串會為允許使用者存取的索引鍵和命令設定許可層級。

  7. 對於標籤,您可以選擇套用標籤來搜尋和篩選使用者或追蹤 AWS 成本。

  8. 選擇 Create (建立)。

使用 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://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇使用者

  3. 選擇您要修改的使用者旁的選項按鈕,然後選擇動作->修改

  4. 如果您想要修改密碼,請選擇修改密碼選項按鈕。請注意,如果您有兩個密碼,則必須在修改其中一個密碼時同時輸入這兩個密碼。

  5. 如果您要更新存取字串,請輸入新的存取字串。

  6. 選擇 Modify (修改)。

使用 CLI 修改使用者
  1. 使用 update-user 命令來修改使用者。

  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://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇使用者

  3. 使用者名稱下選擇使用者,或使用搜尋方塊尋找使用者。

  4. 使用者設定下,您可以檢閱使用者的存取字串、密碼計數、狀態和 Amazon Resource Name (ARN)。

  5. 存取控制清單 (ACL) 下,您可以檢閱使用者所屬的 ACL。

  6. 標籤下,您可以檢閱與使用者相關聯的任何標籤。

使用 describe-users 命令來檢視使用者的詳細資訊。

aws memorydb describe-users \ --user-name my-user-name
在主控台上刪除使用者
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇使用者

  3. 選擇您要修改的使用者旁的選項按鈕,然後選擇動作->刪除

  4. 若要確認,請在確認文字方塊delete中輸入 ,然後選擇刪除

  5. 若要取消,請選擇 Cancel (取消)

使用 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. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇存取控制清單 (ACL)

  3. 選擇建立 ACL

  4. 建立存取控制清單 (ACL) 頁面上,輸入 ACL 名稱。

    叢集命名限制條件如下:

    • 必須包含 1-40 個英數字元或連字號。

    • 必須以字母開頭。

    • 不能連續包含兩個連字號。

    • 結尾不能是連字號。

  5. 選取的使用者下,執行下列其中一項:

    1. 選擇建立使用者來建立新的使用者

    2. 透過選擇管理,然後從管理使用者對話方塊中選擇使用者,然後選擇選擇,來新增使用者

  6. 對於標籤,您可以選擇套用標籤來搜尋和篩選 ACLs或追蹤 AWS 成本。

  7. 選擇 Create (建立)。

使用下列程序,使用 CLI 建立存取控制清單。

使用 CLI 建立新的 ACL 並新增使用者
  • 使用 create-acl 命令來建立 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://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇存取控制清單 (ACL)

  3. 選擇您要修改的 ACL,然後選擇修改

  4. 修改頁面上,在選取的使用者下執行下列其中一項:

    1. 選擇建立使用者以新增至 ACL 來建立新的使用者

    2. 透過選擇管理,然後從管理使用者對話方塊中選擇或取消選擇使用者,然後選擇選擇,來新增或移除使用者

  5. 建立存取控制清單 (ACL) 頁面上,輸入 ACL 名稱。

    叢集命名限制條件如下:

    • 必須包含 1-40 個英數字元或連字號。

    • 必須以字母開頭。

    • 不能連續包含兩個連字號。

    • 結尾不能是連字號。

  6. 選取的使用者下,執行下列其中一項:

    1. 選擇建立使用者來建立新的使用者

    2. 選擇管理,然後從管理使用者對話方塊中選擇使用者,然後選擇選擇,以新增使用者

  7. 選擇修改以儲存變更,或選擇取消以捨棄變更。

使用 CLI 透過新增使用者或移除目前成員來修改 ACL
  • 使用 update-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://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇存取控制清單 (ACL)

  3. 選擇 ACL 名稱下的 ACL,或使用搜尋方塊尋找 ACL。

  4. 使用者下,您可以檢閱與 ACL 相關聯的使用者清單。

  5. 關聯的叢集下,您可以檢閱 ACL 所屬的叢集。

  6. 標籤下,您可以檢閱與 ACL 相關聯的任何標籤。

使用 describe-acls 命令來檢視 ACL 的詳細資訊。

aws memorydb describe-acls \ --acl-name test-group
使用主控台刪除存取控制清單
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/memorydb/ 開啟 MemoryDB 主控台。

  2. 在左側導覽窗格中,選擇存取控制清單 (ACL)

  3. 選擇您要修改的 ACL,然後選擇刪除

  4. 刪除頁面上,delete輸入確認方塊中,然後選擇刪除或取消,以避免刪除 ACL。

刪除 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 並新增使用者之後,實作 ACLs的最後一步是將 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"