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

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

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

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

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

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

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

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

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

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

  • 您無法使用 reset 命令作為存取字串的一部分。您可以使用API參數指定密碼,而 MemoryDB 會管理密碼。因此您無法使用 reset,因為它會刪除使用者的所有密碼。

  • Redis OSS 6 引入 ACLLIST命令。此命令會傳回使用者清單,以及套用至每個使用者的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 – 使用者的命令存取權僅限於 命令 1.

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

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

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

向量搜尋功能

注意

此功能在 MemoryDB 的預覽版本中,可能會有所變更。

對於 向量搜尋,所有搜尋命令都屬於 @search類別,現有類別 @write@read@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 的ACLs叢集

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

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

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

  3. 將 ACL指派給叢集。

以下詳細說明這些步驟。

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

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

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

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

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

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

ACLs 可以在沒有使用者的情況下建立。空 ACL 將無法存取叢集,且只能與啟用 TLS的叢集建立關聯。

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

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

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

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

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

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

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

  3. 選擇建立 ACL

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

    叢集命名限制條件如下:

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

    • 必須以字母開頭。

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

    • 結尾不能是連字號。

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

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

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

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

  7. 選擇 Create (建立)。

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

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

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

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

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

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

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

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

    叢集命名限制條件如下:

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

    • 必須以字母開頭。

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

    • 結尾不能是連字號。

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

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

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

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

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

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

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

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

刪除ACL本身,而不是屬於 群組的使用者。

ACL 使用 刪除 CLI
  • 使用 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"