使用 ACL 政策安全地访问实例

通过在 Memorystore for Valkey 中使用访问权限控制列表 (ACL) 政策,您可以保护对实例的访问。您可以通过限制用户和服务对特定键、命令和 Pub/Sub 渠道的访问权限,实现精细的安全控制。

以下是使用 ACL 政策保护对实例的访问权限的示例应用场景:

  • 提供基于角色的访问权限控制 (RBAC):为应用的不同组件创建不同的用户个人资料。例如,Web 前端可以具有只读访问权限,而后台工作服务具有读写权限。这样可以防止数据意外泄露或被篡改。
  • 防止破坏性命令:将 FLUSHALL、FLUSHDB 或 CONFIG 等危险命令限制为仅供高级别管理员使用。这可以保护数据完整性,避免软件错误或手动错误。
  • 提供多租户应用安全保障:为不同的微服务或外部合作伙伴使用单独的 ACL 用户。这样可确保一个服务的用户无法读取或修改另一服务拥有的密钥。

    Memorystore for Valkey 不提供资源级多租户。即使键空间被划分,某项服务也可能会消耗不成比例的内存或 CPU。

  • 执行只读分析和监控:分配一个专用用户,该用户只能使用 GET 或其他只读命令(例如 SCAN 或 TYPE)来访问分析引擎或信息中心应用。这样可以防止意外写入或数据删除。

  • 安全数据库键:限制应用仅与匹配特定模式(例如 app1:*)的键进行交互。这可在实例内实现数据的逻辑分离。

  • 停用 Lua 脚本:使用 ACL 政策管理实例的 Lua 脚本功能。停用或限制 Lua 脚本有助于进行性能调优、简化实例的功能,或遵守组织的安全准则。

准备工作

在开始使用 ACL 政策之前,请完成本部分中的说明。

使用 Google Cloud 控制台、Google Cloud CLI 和 API

如需使用 Google Cloud 控制台、Google Cloud CLI 和 API,请执行以下操作:

  1. 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。

    注意:如果您不打算保留在此过程中创建的资源,请创建新的项目,而不要选择现有的项目。完成本教程介绍的步骤后,您可以删除所创建的项目,并移除与该项目关联的所有资源。


    前往“项目选择器”
  2. 确保您的项目已启用结算功能。 了解如何检查项目是否已启用结算功能。
  3. 安装并初始化 Google Cloud CLI。

    注意:如果您之前安装了 gcloud CLI,请运行 gcloud components update 以确保您拥有最新版本。您需要至少使用 gcloud CLI 版本 489.0.0 才能访问 Memorystore for Valkey gcloud CLI 命令。

  4. 启用 Memorystore for Valkey API。
    Memorystore for Valkey
  5. 启用 Network Connectivity API。
    Network Connectivity API
  6. 启用 Service Consumer Management API。
    Service Consumer Management API

分配 Memorystore for Valkey 角色

确保您或您正在使用的用户账号拥有所需的操作权限。

如需执行所有 ACL 政策操作,请使用 Memorystore Admin (roles/memorystore.admin) 和 Memorystore Editor (roles/memorystore.editor) 角色。如需仅查看 ACL 政策,请使用 Memorystore Viewer (roles/memorystore.viewer) 角色。

分配 Memorystore for Valkey 权限

除了 Memorystore 管理员、Memorystore 编辑者和 Memorystore 查看者角色之外,如需在 Memorystore for Valkey 中使用 ACL 政策,您还需要具备以下权限:

操作 权限
创建 ACL 政策 memorystore.aclPolicies.create
为实例分配 ACL 政策 memorystore.instances.update
查看 ACL 政策的相关信息 memorystore.aclPolicies.list
查看 ACL 政策的相关信息 memorystore.aclPolicies.get
查看关于 ACL 政策修订版本的信息 memorystore.aclPolicyRevisions.list
查看有关 ACL 政策修订版本的信息 memorystore.aclPolicyRevisions.get
修改 ACL 政策 memorystore.aclPolicies.update
从实例中移除 ACL 政策 memorystore.instances.update
删除 ACL 政策 memorystore.aclPolicies.delete

创建 ACL 政策

通过在 Memorystore for Valkey 中创建 ACL 政策,您可以限制用户对特定键、命令和 Pub/Sub 通道的访问权限,从而提高实例的安全性。

您可以使用 Google Cloud 控制台或 gcloud CLI 创建 ACL 政策。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL 政策。

  3. 在 ACL 政策页面中,点击创建政策。

  4. 在创建政策窗口中,执行以下操作:

    1. 在政策名称字段中,输入 ACL 政策的名称。政策名称只能包含小写字母、数字和连字符。还必须以字母开头,并且在其区域中是唯一的。

    2. 在区域菜单中,选择您希望 Memorystore for Valkey 在其中创建 ACL 政策的区域。

    3. 点击添加规则。

    4. 在用户 ID 字段中,输入要应用 ACL 政策的用户的名称。

    5. 在访问字符串字段中,输入政策的访问字符串。 访问权限字符串是一条人类可读的规则,用于定义用户的特定权限。

      例如,如果您想向 default 超级用户授予对实例的所有 ACL 键的读写权限,请按如下方式填充用户 ID 和访问字符串字段:

      用户 ID 访问字符串
      default on ~* &* +@all

      此规则会向 default 用户授予以下权限:

      • on:用户处于活跃状态,并且已启用身份验证
      • ~*:用户对所有可能的键都具有读取权限和写入权限
      • &*:用户有权访问所有 Pub/Sub 渠道
      • +@all:用户可以运行所有可用的命令

      如需详细了解您可以创建的其他 ACL 规则和政策,请参阅 Valkey 文档中的 ACL。

    6. 对您要为政策创建的其他 ACL 规则重复执行步骤 c 到 e。

    7. 点击创建。

gcloud

如需创建 ACL 政策,请使用 gcloud memorystore acl-policies create 命令。

gcloud memorystore acl-policies create ACL_POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all",username="lucian" \
--rules=rule="on +get",username="taylor"

进行以下替换:

  • ACL_POLICY_NAME:您要创建的 ACL 政策的名称。 政策名称只能包含小写字母、数字和连字符。此 ID 还必须以字母开头,并且在其区域中是唯一的。
  • REGION:您希望 ACL 政策所在的区域。

此政策使用基于令牌的基本身份验证,并具有执行以下操作的规则:

  • 第一条规则向 lucian 授予 ~* +@all 权限。此权限允许用户访问所有密钥并运行所有命令。
  • 第二条规则向 taylor 授予 get 权限。此权限允许用户检索与键关联的值。它会限制用户对只读数据操作的访问权限,并防止用户修改密钥。

如需为使用 Identity and Access Management (IAM) 身份验证的 ACL 政策创建规则,建议您使用 IAM 主账号作为用户名(例如用户的电子邮件地址)。

gcloud memorystore acl-policies create ACL_POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all",username="lucian@example.com" \
--rules=rule="on +get",username="taylor@example.com"

如需为不使用身份验证的 ACL 政策创建规则,用户必须是 default 用户。

gcloud memorystore acl-policies create ACL_POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all",username="default"

如需详细了解基于令牌的基本身份验证和 IAM 身份验证,请参阅使用基于令牌的基本身份验证安全地访问实例和 IAM 身份验证简介。

如需详细了解您可以创建的其他 ACL 规则和政策,请参阅 Valkey 文档中的 ACL。

为实例分配 ACL 政策

通过将 ACL 政策分配给实例或替换已分配的政策,您可以让 Memorystore for Valkey 将政策规则应用于实例。这样一来,您就可以限制用户对特定密钥、命令和 Pub/Sub 通道的访问权限。

您可以使用Google Cloud 控制台或 gcloud CLI 为实例分配 ACL 政策。

为新实例分配政策

如需创建实例并为该实例分配 ACL 政策,请参阅创建实例。

将政策分配给现有实例

如需提高现有实例的安全性,您可以为该实例分配 ACL 政策。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 点击要为其分配 ACL 政策的实例的 ID。

  3. 在实例概览页面上,滚动到安全卡片。

  4. 点击 ACL 政策字段旁边的修改 ()。

  5. 在修改 ACL 政策窗口中,执行以下操作:

    1. 从政策菜单中,选择要分配给实例的政策。

    2. 点击更新实例。

gcloud

如需将 ACL 政策分配给现有实例,请使用 gcloud memorystore instances update 命令。

gcloud memorystore instances update INSTANCE_ID \
--update_mask=acl_policy \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

进行以下替换:

  • INSTANCE_ID:您要为其分配 ACL 政策的实例的 ID
  • ACL_POLICY_NAME:ACL 政策的名称
  • REGION:实例所在的区域

查看 ACL 政策的相关信息

查看 Memorystore for Valkey 中的 ACL 政策相关信息有助于您维护安全性、确保环境的运行稳定性,并让您能够审核内存中数据。这些政策定义了哪些用户可以读取或修改特定键模式、运行特定命令或访问特定 Pub/Sub 频道。

您可以使用Google Cloud 控制台或 gcloud CLI 查看有关 ACL 政策的信息。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL policies(ACL 政策)。

    在 ACL 政策页面中,您可以查看有关每项 ACL 政策的以下信息:

    • 政策 ID:政策的唯一 ID
    • 位置:政策所在的区域
    • 创建时间:创建政策的日期和时间
    • 更新时间:上次更新政策的日期和时间
    • 规则数量:政策的规则总数
    • 实例使用情况:分配给相应政策的实例

gcloud

如需查看有关 ACL 政策的信息,请使用 gcloud memorystore acl-policies list 命令。

gcloud memorystore acl-policies list
--location=REGION

将 REGION 替换为 ACL 政策所在的区域。

查看 ACL 政策的相关信息

通过查看 Memorystore for Valkey 中的 ACL 政策的相关信息,您可以执行安全审核、排查访问权限错误,并通过验证用户命令、密钥权限和对 Pub/Sub 通道的访问权限来强制执行最小权限原则。此外,管理员可以查看 ACL 政策,以确保应用具有适当的访问权限并检测过于宽松的规则。

您可以使用 gcloud CLI 查看有关 ACL 政策的信息。如需查看此信息,请使用 gcloud memorystore acl-policies describe 命令。

gcloud memorystore acl-policies describe ACL_POLICY_NAME \
--location=REGION

进行以下替换:

  • ACL_POLICY_NAME:您要查看其相关信息的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

查看关于 ACL 政策修订版本的信息

当您创建 ACL 政策时,Memorystore for Valkey 会为该政策创建一个版本(修订版本)。每次修改政策时,Memorystore for Valkey 都会创建后续政策修订版本。

由于 Memorystore for Valkey 会自动生成这些修订版本,因此您可以将它们用于内部跟踪和审核。此外,查看修订版本还可以让您查看每个历史版本中 ACL 政策的确切内容。

通过使用 ACL 政策修订版本,您可以跟踪哪些实例正在使用哪个政策修订版本。这有助于您在政策更新后最终一致性期间保持可见性,并确保实例处于正确的版本。

您可以使用Google Cloud 控制台或 gcloud CLI 查看有关 ACL 政策修订版本的信息。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL policies(ACL 政策)。

  3. 在 ACL 政策页面中,点击要查看其修订版本的 ACL 政策的 ID。在 ACL 政策修订版本页面中,系统会显示以下信息:

    • 修订版本 ID:每个 ACL 政策修订版本的 ID
    • 修订版本号:每个 ACL 政策修订版本的编号
    • 位置:每个 ACL 政策修订版本所在的区域
    • 创建时间:每个 ACL 政策修订版本的创建日期和时间
    • 关联的实例:分配给每个 ACL 政策修订版本的实例
    • 快照:每个 ACL 政策修订版本的详细信息

gcloud

如需查看有关 ACL 政策修订版本的信息,请使用 gcloud memorystore acl-policies revisions list 命令。

gcloud memorystore acl-policies revisions list \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

进行以下替换:

  • ACL_POLICY_NAME:包含您要查看其相关信息的修订版本的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

在输出中,记下修订版本 ID。您需要使用这些 ID 来查看有关特定 ACL 政策修订版本的信息。

查看 ACL 政策修订版本的信息

查看 ACL 政策修订版本可让您了解其规则、元数据以及所有关联实例的列表。您可以使用 Google Cloud 控制台或 gcloud CLI 查看有关 ACL 政策修订版本的信息。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL 政策。

  3. 在 ACL 政策页面中,点击要查看其修订版本的 ACL 政策的 ID。

  4. 在 ACL policy revisions(ACL 政策修订版本)页面中,点击要查看信息的 ACL 政策修订版本旁边的 Snapshot(快照)链接。

gcloud

如需查看有关 ACL 政策修订版本的信息,请使用 gcloud memorystore acl-policies revisions describe 命令。

gcloud memorystore acl-policies revisions describe ACL_POLICY_REVISION_ID \
--acl-policy=ACL_POLICY_NAME \
--location=REGION

进行以下替换:

  • ACL_POLICY_REVISION_ID:您要查看其相关信息的 ACL 政策修订版本的 ID。您在查看 ACL 政策修订版本相关信息时记下了此 ID。
  • ACL_POLICY_NAME:包含修订版本的 ACL 政策的名称。
  • REGION:ACL 政策所在的区域。

修改 ACL 政策

通过修改 Memorystore for Valkey 中的 ACL 政策,您可以增强安全性、强制执行最小权限访问并管理操作安全性。您可以使用 Google Cloud 控制台或 gcloud CLI 修改政策。

向 ACL 政策添加规则

如需提高 ACL 政策的安全性,请向其添加规则。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL policies(ACL 政策)。

  3. 在要添加规则的 ACL 政策旁边,点击更多操作 (),然后选择修改。

  4. 在修改政策窗口中,点击添加规则。

  5. 在用户 ID 字段中,输入要应用 ACL 政策的用户的名称。

  6. 在访问字符串字段中,输入政策的访问字符串。如需详细了解 ACL 政策的访问字符串,请参阅创建 ACL 政策。

  7. 对您要添加到政策中的其他 ACL 规则重复第 4 步到第 6 步。

  8. 点击保存。

gcloud

如需向 ACL 政策添加规则,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update ACL_POLICY_NAME \
--location=REGION \
--add-rules=rule="on ~list:*",username="lucian"

进行以下替换:

  • ACL_POLICY_NAME:要为其添加 ACL 规则的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

此规则向 lucian 授予对所有以 list: 开头的密钥的访问权限。

修改 ACL 政策的规则

修改 ACL 政策的 ACL 规则可提供更严格的安全性、更高的操作安全性以及更精细的用户访问权限控制。例如,您可以在突发事件响应期间撤消权限,或出于调试目的启用临时访问权限。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL 政策。

  3. 在要修改规则的 ACL 政策旁边,点击更多操作 (),然后选择修改。

  4. 在修改政策窗口中,点击添加规则。

  5. 在用户 ID 和访问字符串字段中,修改政策的用户 ID 或访问字符串。如需详细了解 ACL 政策的访问字符串,请参阅创建 ACL 政策。

  6. 针对您要修改的政策的其他 ACL 规则重复执行第 4 步和第 5 步。

  7. 点击保存。

替换 ACL 政策的规则

与修改政策的规则类似,替换政策的规则可以提供更严密的安全保障、更高的运营安全性,以及更精细的用户访问权限控制。

gcloud

如需替换 ACL 政策的规则,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update ACL_POLICY_NAME \
--location=REGION \
--rules=rule="on ~c*che",username="lucian"

进行以下替换:

  • ACL_POLICY_NAME:要替换 ACL 规则的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

您要替换的政策规则会向 lucian 授予对与 c*che 模式匹配的所有密钥的访问权限。例如:cache、caache 和 ceche。

从 ACL 政策中移除规则

如果某条 ACL 规则不再适用于某项 ACL 政策,您可以将其移除。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL 政策。

  3. 在要从中移除规则的 ACL 政策旁边,点击更多操作 (),然后选择修改。

  4. 在修改政策窗口中,点击要从政策中移除的规则旁边的删除规则 ()。

  5. 针对要从政策中移除的其他 ACL 规则重复第 4 步。

  6. 点击保存。

gcloud

如需从 ACL 政策中移除规则,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update ACL_POLICY_NAME \
--location=REGION \
--remove-rules=rule="on ~set",username="lucian"

进行以下替换:

  • ACL_POLICY_NAME:要从中移除 ACL 规则的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

移除此规则会撤消 lucian 的关联权限。如需访问该实例,lucian 现在必须以 default 用户身份连接,并受该用户的权限约束。

从实例中移除 ACL 政策

如果 ACL 政策不再适用于某个 Memorystore for Valkey 实例,您可以将其移除。您可以使用Google Cloud 控制台或 gcloud CLI 移除政策。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 点击要从中移除 ACL 政策的实例的 ID。

  3. 在实例概览页面上,滚动到安全卡片。

  4. 点击 ACL 政策字段旁边的修改 ()。

  5. 在修改 ACL 政策窗口中,执行以下操作:

    1. 从政策菜单中,选择无政策。

    2. 点击更新实例。

gcloud

如需从实例中移除 ACL 政策,请使用 gcloud memorystore instances update 命令。

gcloud memorystore instances update INSTANCE_ID \
--clear-acl-policy \
--location=REGION

进行以下替换:

  • INSTANCE_ID:要从中移除 ACL 政策的实例的 ID
  • REGION:实例所在的区域

删除 ACL 政策

如果您不再需要某个 ACL 政策,可以将其删除。您可以使用 Google Cloud 控制台或 gcloud CLI 删除政策。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 在侧边导航面板中,点击 ACL 政策。

  3. 在要删除的 ACL 政策旁边,点击更多操作 (),然后选择删除。

    如果删除菜单项处于停用状态,则表示相应政策已分配给实例。您必须先从每个实例中移除该政策,然后才能将其删除。

  4. 在删除政策窗口中,执行以下操作:

    1. 在文本字段中,输入政策的名称。

    2. 点击删除。

gcloud

如需删除 ACL 政策,请使用 gcloud memorystore acl-policies delete 命令。

gcloud memorystore acl-policies delete ACL_POLICY_NAME \
--location=REGION

进行以下替换:

  • ACL_POLICY_NAME:您要删除的 ACL 政策的名称
  • REGION:ACL 政策所在的区域

停用 Lua 脚本

您可以使用 ACL 政策来管理实例的 Lua 脚本功能。停用或限制 Lua 脚本有助于进行性能调优、简化实例功能或遵守组织的安全准则。

禁止用户使用脚本命令

如需停用 Lua 脚本,使用户无法运行这些脚本,您必须使用 ACL 政策,并从用户的 ACL 规则字符串中移除脚本命令的权限。

Valkey 将命令分为不同的组。Lua 脚本属于 @scripting 类别。您必须移除其用户权限的主要命令包括:

您可以为用户停用所有脚本命令或特定命令。 如需停用脚本命令,请使用 gcloud CLI,并在命令或类别前面加上减号 (-)。

为用户停用所有脚本命令

如需为用户停用所有脚本命令,请创建 ACL 政策并将其分配给实例,或修改分配给实例的 ACL 政策。

创建政策

如需创建 ACL 政策以针对名为 lucian 的用户停用所有脚本命令,请使用 gcloud memorystore acl-policies create 命令。

gcloud memorystore acl-policies create POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:您希望 ACL 政策所在的区域

创建政策后,您必须将其分配给新实例或现有实例。

修改政策

如需修改 ACL 政策以针对 lucian 停用所有脚本命令,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:ACL 政策所在的区域

如果您只想授予用户所需的特定权限,请更改 +@all 值。例如,如果您希望用户只能访问只读命令,请将 +@all 更改为 +@read。如需详细了解可设置的用户权限,请参阅 Valkey ACL 文档。

为用户停用脚本命令

您可以针对特定用户停用特定指令。例如,您可以允许用户运行除 SCRIPT FLUSH 命令之外的所有脚本命令。如需为用户停用脚本命令,请创建 ACL 政策并将其分配给实例,或修改分配给实例的 ACL 政策。

您可以停用任何脚本命令。对于本部分中的示例,您需要为用户停用 SCRIPT FLUSH 命令。如需查看脚本命令列表,请参阅为用户停用脚本命令。

创建政策

如需创建 ACL 政策以针对 lucian 停用 SCRIPT FLUSH 脚本命令,请使用 gcloud memorystore acl-policies create 命令。

gcloud memorystore acl-policies create POLICY_NAME \
--location=REGION \
--rules=rule="on ~* -script|flush",username=lucian

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:您希望 ACL 政策所在的区域

创建政策后,您必须将其分配给新实例或现有实例。

修改政策

如需修改 ACL 政策以停用 lucian 的所有脚本命令,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update POLICY_NAME \
--location=REGION \
--rules=rule="on ~* -script|flush",username=lucian

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:ACL 政策所在的区域

如果您只想授予用户所需的特定权限,请更改 +@all 值。例如,如果您希望用户只能访问只读命令,请将 +@all 更改为 +@read。如需详细了解可设置的用户权限,请参阅 Valkey ACL 文档。

保护默认用户

如需为 default 超级用户停用脚本权限,请创建 ACL 政策并将其分配给实例,或者修改分配给实例的 ACL 政策。

创建政策

如需创建 ACL 政策以针对 default 用户停用所有脚本命令,请使用 gcloud memorystore acl-policies create 命令。

gcloud memorystore acl-policies create POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:您希望 ACL 政策所在的区域

创建政策后,您必须将其分配给新实例或现有实例。

修改政策

如需修改 ACL 政策以针对 default 用户停用所有脚本命令,请使用 gcloud memorystore acl-policies update 命令。

gcloud memorystore acl-policies update POLICY_NAME \
--location=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

进行以下替换:

  • POLICY_NAME:ACL 政策的名称
  • REGION:ACL 政策所在的区域

如果您只想授予 default 用户所需的特定权限,请更改 +@all 值。例如,如果您希望此用户仅有权访问只读命令,请将 +@all 更改为 +@read。如需详细了解您可以设置的用户权限,请参阅 Valkey ACL 文档。

问题排查

本部分列出了您在使用 ACL 政策时可能会收到的出错提示、这些提示的原因,以及问题排查提示。

出错提示 原因 问题排查
username cannot be empty 您在 ACL 政策中为用户名设置了空字符串或仅包含空格的字符串。 使用包含字母数字或特殊字符的用户名。然后,再次创建 ACL 政策。
duplicate username found in ACL policy ACL 政策中存在重复的用户名。 使用错误日志查找重复的用户名。修改 ACL 政策创建请求,为用户名指定一条规则。然后,再次创建 ACL 政策。
ACL rule token cannot contain token. use either IAM or Basic Auth features to enable authentication 您不能在 ACL 政策中使用密码字符(例如 <、>、# 和 !)或相关命令(例如 nopass、resetpass 和 reset)。 从 ACL 政策的规则中移除所有密码字符和相关命令。然后,重新创建 ACL 政策。如需设置身份验证,请启用基本身份验证或基于 IAM 的身份验证。
passwords not allowed in ACL rules (token starts with char). use either IAM or Basic Auth features to enable authentication 您不能在 ACL 政策中使用密码字符(例如 <、>、# 和 !)或相关命令(例如 nopass、resetpass 和 reset)。 从 ACL 政策的规则中移除所有密码字符和相关命令。然后,再次创建 ACL 政策。如需设置身份验证,请启用基本身份验证或基于 IAM 的身份验证。
invalid ACL rule syntax 您未正确设置一个或多个 ACL 政策规则中的访问字符串的格式。 正确设置访问字符串的格式。
ACL policy is in DELETING state and cannot be used 您尝试将 ACL 政策分配给实例,但该政策的状态为 DELETING。 为实例分配其他 ACL 政策。
ACL_POLICY_IN_USE: ACL policy is in use by 1 or more instances 您尝试删除的 ACL 政策已分配给至少一个实例。 您必须先从分配了 ACL 政策的所有实例中移除该政策,然后才能将其删除。如需确定哪些实例已分配给某项政策,请参阅查看 ACL 政策的相关信息。
fast-failing the workflow as the resource is in DELETING state 您尝试修改状态为 DELETING 的 ACL 政策。 如果 ACL 政策的状态为 DELETING,则您无法修改该政策。