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

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

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

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

ACL 可讓您透過將使用者分組來控制叢集存取。這些存取控制清單的設計是組織叢集存取的一種方式。

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

ACL 的設計是為了支援在 Redis OSS 6 中引入 Redis ACL。當您將 ACL 與您的 MemoryDB 叢集搭配使用時,會有一些限制:

  • 您無法在存取字串中指定密碼。您可以使用CreateUser或通UpdateUser話設定密碼。

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

  • 您不能使用禁止的命令。如果您指定了禁止命令,則會拋出異常。如需這些指令的清單,請參閱受限制的紅色 OSS 命令

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

  • 雷迪斯 OSS 6 引入了 ACL 列表命令。此命令會傳回使用者清單,以及套用至每個使用者的 ACL 規則。MemoryDB 支援ACL LIST命令,但不像 Redis OSS 那樣包含對密碼雜湊的支援。使用 MemoryDB,您可以使用DescribeUsers操作來獲取類似的信息,包括訪問字符串中包含的規則。但是,DescribeUsers不會擷取使用者密碼。

    由記憶數據庫支持的其他只讀命令包括 ACL WHOAMIACL 用戶和 ACL 目錄。MemoryDB 不支援任何其他以寫入為基礎的 ACL 命令。

將 ACL 與記憶體資料庫搭配使用,在下面將有更詳細的說明。

使用存取字串指定許可

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

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

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

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

on ~* &* +@all

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

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

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

  • &*— 所有發布訂閱頻道都可以訪問。

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

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

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

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

將 ACL 套用至記憶體資料庫的叢集

若要使用記憶體資料庫 ACL,請執行下列步驟:

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

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

  3. 將 ACL 指派給叢集。

以下詳細說明這些步驟。

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

ACL 使用者的使用者資訊是使用者名稱,選擇性地輸入密碼和存取字串。存取字串提供索引鍵和命令的許可層級。該名稱對於用戶是唯一的,並且是傳遞給引擎的名稱。

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

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

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

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

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

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

特別是,在將 ACL 用於 MemoryDB 時,請注意以下使用者密碼限制:

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

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

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

在主控台上建立使用者
  1. 登入 AWS Management Console 並開啟記憶體資料庫主控台,網址為 https://console.aws.amazon.com/memorydb/。

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

  3. 選擇建立使用者

  4. 在 [建立使用者] 頁面上,輸入 [名稱]。

    叢集命名限制條件如下:

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

    • 必須以字母開頭。

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

    • 結尾不能是連字號。

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

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

  7. 對於「標籤」,您可以選擇性地套用標籤來搜尋和篩選使用者,或追蹤您的 AWS 費用。

  8. 選擇建立

若要使用 CLI 建立使用者
  • 使用「建立使用者」指令建立使用者。

    若為 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/。

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

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

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

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

  6. 選擇 Modify (修改)。

使用 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/。

  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/。

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

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

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

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

使用 CLI 刪除使用者
  • 使用 [刪除使用者] 指令刪除使用者。

    該帳戶將被刪除,並從其所屬的任何存取控制清單中移除。以下是範例。

    若為 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://console.aws.amazon.com/memorydb/。

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

  3. 選擇「建立 ACL」。

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

    叢集命名限制條件如下:

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

    • 必須以字母開頭。

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

    • 結尾不能是連字號。

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

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

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

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

  7. 選擇建立

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

若要使用 CLI 建立新 ACL 並新增使用者
  • 使用「建立 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://console.aws.amazon.com/memorydb/。

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

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

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

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

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

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

    叢集命名限制條件如下:

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

    • 必須以字母開頭。

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

    • 結尾不能是連字號。

  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/。

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

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

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

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

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

使用描述-acls 指令來檢視 ACL 的詳細資料。

aws memorydb describe-acls \ --acl-name test-group
使用主控台刪除存取控制清單
  1. 登入 AWS Management Console 並開啟記憶體資料庫主控台,網址為 https://console.aws.amazon.com/memorydb/。

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

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

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

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

若要使用 CLI 刪除 ACL
  • 使用「刪除 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,請參閱建立記憶體資料庫叢集

將存取控制清單指派給叢集使用 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"