本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
角色型存取控制 (RBAC) 規則數量
透過中所述的 Valkey 和 Redis OSS AUTH 命令使用 Valkey 和 Redis OSS AUTH 命令進行驗證,您可以使用角色型存取控制 (RBAC)。RBAC 也是控制無伺服器快取存取的唯一方法。這適用於 Valkey 7.2 和更新版本,以及 Redis OSS 6.0 到 7.2。
RBAC 可讓您:
透過使用者群組控制快取存取。這些使用者群組的設計目的是整理快取的存取權。
使用 authN 時,每個使用者密碼具有 ,而不是每個叢集驗證字符。
使用 authZ 時, 具有精細的使用者許可。
以 ACLs為基礎來存取叢集。
與 Valkey 和 Redis OSS AUTH 不同,其中所有已驗證的用戶端都具有完整快取存取權,如果其權杖已驗證,RBAC 可讓您根據使用者所需的角色指派使用者進行設定。這些集旨在組織對快取的存取。
使用 RBAC,您可以建立使用者,並使用存取字串將特定許可指派給他們,如下所說明。您可以將使用者指派給與特定角色 (管理員、人力資源) 一致的集合,然後部署到一或多個 ElastiCache 快取。透過這樣做,您可以在使用相同 Valkey 或 Redis OSS 快取的用戶端之間建立安全界限,並防止用戶端存取彼此的資料。
RBAC 旨在支援在 Redis OSS 6 中引入 ACL
為「VALKEY」引擎設定的使用者群組只能包含使用身分驗證機制 (密碼或 IAM) 的使用者。這表示具有引擎「VALKEY」的所有使用者,以及具有引擎「Redis」且其設定設定為使用密碼或 IAM 進行身分驗證的任何其他使用者,都可以在此使用者群組中。
搭配 Valkey 叢集使用 RBAC 時,可以使用引擎「VALKEY」和引擎「REDIS」的兩個使用者群組。
將 RBAC 與 Redis OSS 叢集搭配使用時,只能使用具有引擎 "REDIS" 的使用者群組。
您無法在存取字串中指定密碼。您可以使用 CreateUser 或 ModifyUser 呼叫來設定密碼。
對於使用者權限,您可以使用
on和 啟用或停用使用者off,做為存取字串的一部分。如果存取字串中沒有指定這兩項,則會為使用者指派off,且使用者沒有快取的存取權限。您無法使用禁止和重新命名的命令做為存取字串的一部分。如果您指定禁止或重新命名的命令,則會擲回例外情況。如果您想要將存取控制清單 (ACL) 用於重新命名的命令,請指定命令的原始名稱,也就是將命令重新命名之前的名稱。
您無法使用
reset命令作為存取字串的一部分。您可以使用 API 參數指定密碼,ElastiCache for Valkey 和 Redis OSS 會管理密碼。因此您無法使用reset,因為它會刪除使用者的所有密碼。Redis OSS 6 推出 ACL LIST
命令。此命令會傳回使用者清單,以及套用至每個使用者的 ACL 規則。ElastiCache 支援 ACL LIST命令,但不像 Redis OSS 一樣包含對密碼雜湊的支援。使用 ElastiCache,您可以使用 DescribeUsers 操作來取得類似資訊,包括存取字串中包含的規則。不過,DescribeUsers 不會擷取使用者密碼。-
ElastiCache for Valkey 和 Redis OSS 支援的其他唯讀命令包括 ACL WHOAMI
、ACL USERS 和 ACL CAT 。ElastiCache for Valkey 和 Redis OSS 不支援任何其他以寫入為基礎的 ACL 命令。 適用下列限制:
資源 允許的上限 每使用者群組使用者數 100 使用者數 1000 使用者群組數 100
RBAC 搭配 Valkey
搭配 Valkey 使用角色型存取控制時,使用者和使用者群組會使用「VALKEY」引擎類型建立。建議這麼做,因為根據預設,與 Redis OSS 相比,使用 RBAC 的 Valkey 可提供更高的安全性。佈建和無伺服器 Valkey 叢集都支援 VALKEY 使用者和使用者群組關聯。
Valkey 存取控制的主要功能包括:
Valkey 使用者僅限於 Valkey 使用者群組關聯。
Valkey 使用者群組可以包含 Valkey 使用者,以及受密碼保護或啟用 IAM 驗證的 Redis OSS 使用者。
Valkey 使用者必須使用密碼保護或 IAM 身分驗證。
VALKEY 使用者群組只能與 VALKEY 叢集相關聯
沒有預設的使用者需求。當 Valkey 使用者群組連接到叢集時,預設使用者需求會自動停用。客戶會在使用 ACL LIST 命令時看到預設使用者已關閉。
RBAC 與 ElastiCache for Valkey 和 Redis OSS 搭配使用的詳細資訊如下。
主題
使用存取字串指定許可
若要指定 ElastiCache Valkey 或 Redis OSS 快取的許可,您可以建立存取字串,並透過 AWS CLI 或 將其指派給使用者 AWS 管理主控台。
存取字串的定義是套用至使用者的空格分隔規則清單。用於定義使用者可以執行哪些命令,以及使用者可以操作哪些索引鍵。為了執行命令,使用者必須能存取執行中的命令以及該命令存取的所有索引鍵。規則會從左到右累積套用,如果提供的字串中存在冗餘項目,可以改用更簡單的字串而非提供的字串。
如需 ACL 規則語法的詳細資訊,請參閱 ACL
在下列範例中,存取字串代表有權存取所有可用索引鍵和命令的活躍使用者。
on ~* +@all
存取字串語法可細分以下各項:
on- 使用者是活躍使用者。~*- 存取權限提供給所有可用的索引鍵。+@all- 存取權限提供給所有可用的命令。
先前的設定受到最低限度的限制。您可以修改這些設定,提高安全性。
在下面的範例中,存取字串代表對於以「app::」keyspace 開頭的索引鍵,存取權受限於讀取存取的使用者
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>– 新增指定的寫入金鑰模式。這與常態金鑰模式類似,但僅授予符合特定模式的金鑰寫入許可。如需詳細資訊,請參閱 ACL 金鑰許可。 %RW~<pattern>– 的別名~<pattern>。(<rule list>)– 建立新的選擇器以配對規則。選擇器會在使用者許可之後受到評估,並根據其定義的順序進行評估。如果命令符合使用者許可或任何選擇器,則允許該命令。如需詳細資訊,請參閱 ACL selectors(ACL 選擇器)。 clearselectors– 刪除所有連接到使用者的選擇器。
針對 Valkey 9.1 版及更新版本,也支援下列存取字串語法:
db=<id>[,<id>...]– 將使用者限制為特定編號的資料庫。使用者只能對指定的資料庫執行命令。如果沒有此規則,使用者可以存取所有資料庫。
將 RBAC 套用至 ElastiCache for Valkey 或 Redis OSS 的快取
若要使用 ElastiCache for Valkey 或 Redis OSS RBAC,請執行下列步驟:
建立一或多位使用者。
建立使用者群組,並為該群組新增使用者。
將使用者群組指派給啟用傳輸中加密的快取。
具有公有端點的快取需要關聯使用者群組中的每個使用者使用 IAM 身分驗證。
這些步驟詳細說明如下。
使用主控台和 CLI 建立使用者和使用者群組
RBAC 使用者的使用者資訊是使用者 ID、使用者名稱,以及選用的密碼和存取字串。存取字串提供索引鍵和命令的許可層級。使用者 ID 對使用者而言是唯一的,而使用者名稱是傳遞給引擎的內容。
請確定您提供的使用者許可對使用者群組的預期用途來說有意義。例如,如果您建立名為 Administrators 的使用者群組,則您新增至該群組的任何使用者都應該將其存取字串設為完整存取索引鍵和命令。針對 e-commerce 使用者群組中的,您可以將其存取字串設為唯讀存取。
ElastiCache 會以使用者 ID 和使用者名稱 "default" 自動設定預設使用者,並將其新增至所有使用者群組。您無法刪除或修改此使用者。此使用者旨在與先前 Redis OSS 版本的預設行為相容,並具有允許其呼叫所有命令和存取所有金鑰的存取字串。
若要將適當的存取控制新增至快取,請將此預設使用者取代為未啟用或未使用高強度密碼的新使用者。若要變更預設使用者,請將使用者名稱設定為 default。然後您可以將其與原始預設使用者交換。
下列程序說明如何交換原始 default 使用者與具有經修改存取字串的另一個 default 使用者。
在主控台上修改預設使用者
-
登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/elasticache/
:// 開啟 Amazon ElastiCache 主控台。 -
從導覽窗格選擇使用者群組管理。
-
針對使用者群組 ID,選擇您要修改的 ID。確定您選擇的是連結而非核取方塊。
-
選擇 Modify (修改)。
-
在修改視窗中,選擇管理。對於「選取您想要的使用者」,選取使用者名稱為預設值的使用者。
-
選擇 Choose (選擇)。
-
選擇 Modify (修改)。執行這項操作時,原始預設使用者所擁有的任何現有快取連線都會終止。
使用 修改預設使用者 AWS CLI
-
使用以下命令以使用者名稱
default建立新使用者。針對 Linux、macOS 或 Unix:
aws elasticache create-user \ --user-id "new-default-user" \ --user-name "default" \ --engine "VALKEY" \ --passwords"a-str0ng-pa))word"\ --access-string "off +get ~keys*"針對 Windows:
aws elasticache create-user ^ --user-id "new-default-user" ^ --user-name "default" ^ --engine "VALKEY" ^ --passwords"a-str0ng-pa))word"^ --access-string "off +get ~keys*" 建立使用者群組並新增先前建立的使用者。
針對 Linux、macOS 或 Unix:
aws elasticache create-user-group \ --user-group-id "new-group-2" \ --engine "VALKEY" \ --user-ids "new-default-user"針對 Windows:
aws elasticache create-user-group ^ --user-group-id "new-group-2" ^ --engine "VALKEY" ^ --user-ids "new-default-user"
建立使用者時,最多可以設定兩個密碼。修改密碼時,任何現有的快取連線都會保留。
特別是,在使用 RBAC for ElastiCache for Valkey 和 Redis OSS 時,請注意這些使用者密碼限制:
-
密碼必須為 16 - 128 個可列印字元。
-
不允許使用以下非英數字元:
,""/@。
使用主控台和 CLI 管理使用者
透過下列程序,在主控台上管理使用者。
在主控台上管理使用者
-
登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/elasticache/
:// 開啟 Amazon ElastiCache 主控台。 -
在 Amazon ElastiCache 儀表板上,選擇使用者管理。下列選項可供使用:
建立使用者 - 建立使用者時,您需輸入使用者 ID、使用者名稱、身分驗證模式和存取字串。存取字串會為允許使用者存取的索引鍵和命令設定許可層級。
建立使用者時,最多可以設定兩個密碼。修改密碼時,任何現有的快取連線都會保留。
修改使用者 - 可讓您更新使用者的身分驗證設定或變更其存取字串。
刪除使用者 - 將帳戶從其所屬的任何使用者群組中移除。
透過下列程序,使用 AWS CLI來管理使用者。
使用 CLI 修改使用者
-
使用
modify-user命令來更新使用者的密碼或密碼,或變更使用者的存取許可。修改使用者時,會更新與使用者相關聯的使用者群組,以及與使用者群組相關聯的任何快取。所有現有的連線都會保留。範例如下。
針對 Linux、macOS 或 Unix:
aws elasticache modify-user \ --user-id user-id-1 \ --access-string "~objects:* ~items:* ~public:*" \ --authentication-mode Type=iam針對 Windows:
aws elasticache modify-user ^ --user-id user-id-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --authentication-mode Type=iam
注意
不建議您使用 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 管理使用者群組
您可以建立使用者群組來整理和控制使用者對一或多個快取的存取權,如下所示。
透過下列程序,使用主控台來管理使用者群組。
使用主控台來管理使用者群組
-
登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/elasticache/
:// 開啟 Amazon ElastiCache 主控台。 -
在 Amazon ElastiCache 儀表板上,選擇使用者群組管理。
可透過以下作業來建立新的使用者群組:
建立 - 建立使用者群組時,您需新增使用者,然後將使用者群組指派給快取。例如,您可以為具有快取管理角色的使用者建立
Admin使用者群組。重要
如果您不是使用 Valkey 或 Redis OSS 使用者群組,則必須在建立使用者群組時包含預設使用者。
新增使用者 - 將使用者新增至使用者群組。
移除使用者 - 從使用者群組中刪除使用者。將使用者從使用者群組中移除時,他們所擁有的任何現有快取連線都會終止。
刪除 - 用來來刪除使用者群組。請注意,系統會刪除使用者群組本身,而不是屬於該群組的使用者。
針對現有的使用者群組,您可以執行以下操作:
新增使用者 - 將現有使用者新增到使用者群組中。
刪除使用者 - 從使用者群組中移除現有使用者。
注意
使用者會從使用者群組中移除,但不會從系統中刪除。
透過下列程序,使用 CLI 來管理使用者群組。
使用 CLI 建立新的使用者群組並新增使用者
-
請使用
create-user-group命令,如下列所示。針對 Linux、macOS 或 Unix:
aws elasticache create-user-group \ --user-group-id "new-group-1" \ --engine "VALKEY" \ --user-idsuser-id-1,user-id-2針對 Windows:
aws elasticache create-user-group ^ --user-group-id "new-group-1" ^ --engine "VALKEY" ^ --user-idsuser-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-adduser-id-3\ --user-ids-to-removeuser-id-2針對 Windows:
aws elasticache modify-user-group --user-group-id new-group-1 ^ --user-ids-to-adduser-id-3^ --user-ids-to-removereuser-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 管理主控台,請執行下列動作:
如需停用叢集模式,請參閱「建立 Valkey (停用叢集模式) 叢集 (主控台)」
如需啟用叢集模式,請參閱「建立 Valkey 或 Redis OSS (啟用叢集模式) 叢集 (主控台)」
使用 將使用者群組指派給無伺服器快取 AWS CLI
下列 AWS CLI 操作會使用 值為 的 user-group-id 參數來建立無伺服器快取。將子網路群組 my-user-group-idsng-test 取代為已存在的子網路群組。
重要參數
-
--engine– 必須為VALKEY或REDIS。 -
--user-group-id- 此值提供由具有指定的快取存取許可之使用者所組成的使用者群組 ID。
針對 Linux、macOS 或 Unix:
aws elasticache create-serverless-cache \ --serverless-cache-name "new-serverless-cache" \ --description"new-serverless-cache"\ --engine "VALKEY" \ --user-group-id "new-group-1"
針對 Windows:
aws elasticache create-serverless-cache ^ --serverless-cache-name "new-serverless-cache" ^ --description"new-serverless-cache"^ --engine "VALKEY" ^ --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 管理主控台,請執行下列動作:
如需停用叢集模式,請參閱「建立 Valkey (停用叢集模式) 叢集 (主控台)」
如需啟用叢集模式,請參閱「建立 Valkey 或 Redis OSS (啟用叢集模式) 叢集 (主控台)」
使用 將使用者群組指派給複寫群組 AWS CLI
下列 AWS CLI 操作會建立啟用傳輸中加密 (TLS) 的複寫群組,以及值為 的 user-group-ids 參數。將子網路群組 my-user-group-idsng-test 取代為已存在的子網路群組。
重要參數
-
--engine– 必須為valkey或redis。 -
--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 "VALKEY" \ --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 "VALKEY" ^ --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 事件。
從 AUTH 遷移至 RBAC
如果您依 所述使用 AUTH,使用 Valkey 和 Redis OSS AUTH 命令進行驗證並想要使用 RBAC 遷移至 ,請使用下列程序。
使用下列程序,使用主控台從 AUTH 遷移至 RBAC。
使用主控台從 Valkey 或 Redis OSS AUTH 遷移至 RBAC
-
登入 AWS 管理主控台 並開啟位於 https://https://console.aws.amazon.com/elasticache/
的 ElastiCache 主控台。 -
從右上角的清單中,選擇您要修改之快取所在的 AWS 區域。
-
在導覽窗格中,選擇在您要修改的快取上執行的引擎。
接著會出現所選引擎的快取清單。
-
在快取清單中,選擇您要修改之快取的名稱。
-
在 Actions (動作) 中,選擇 Modify (修改)。
修改視窗隨即出現。
-
針對存取控制,選擇使用者群組存取控制清單。
-
針對使用者群組存取控制清單,選擇一個使用者群組。
-
選擇預覽變更,然後在下一個畫面上選擇修改。
使用下列程序,使用 CLI 從 Valkey 或 Redis OSS AUTH 遷移至 RBAC。
使用 CLI 從 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-adduser-group-1針對 Windows:
aws elasticache modify-replication-group --replication-group-id test ^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-adduser-group-1
從 RBAC 遷移至 AUTH
如果您使用 RBAC 且想要遷移至 Redis OSS AUTH,請參閱 從 RBAC 遷移至 AUTH。
注意
如果您需要停用 ElastiCache 快取上的存取控制,則需要透過 AWS CLI來進行。如需詳細資訊,請參閱在 ElastiCache Valkey 或 Redis OSS 快取上停用存取控制。