使用 ACL 政策保护对集群的访问

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

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

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

    Memorystore for Redis Cluster 不提供资源级多租户。即使键空间被划分,某项服务也可能会消耗不成比例的内存或 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 版本 440.0.0 才能访问 Memorystore for Redis Cluster gcloud CLI 命令。

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

分配 Memorystore for Redis Cluster 角色

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

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

分配 Memorystore for Redis Cluster 权限

除了 Redis Admin、Redis Editor 和 Redis Viewer 角色之外,如需在 Memorystore for Redis Cluster 中使用 ACL 政策,您还需要以下权限:

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

创建 ACL 政策

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

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

控制台

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

    Memorystore for Redis Cluster

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

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

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

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

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

    3. 点击添加规则。

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

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

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

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

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

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

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

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

    7. 点击创建。

gcloud

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

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=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 redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="lucian@example.com" \
--rules=rule="on +get",username="taylor@example.com"

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

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

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

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

为集群分配 ACL 政策

通过将 ACL 政策分配给集群或替换已分配的政策,您可以让 Memorystore for Redis Cluster 将政策规则应用于集群。因此,您可以限制用户对特定键、命令和 Pub/Sub 频道的访问权限。

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

为新集群分配政策

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

将政策分配给现有集群

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

控制台

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

    Memorystore for Redis Cluster

  2. 点击要为其分配 ACL 政策的集群的 ID。

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

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

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

    1. 在政策菜单中,选择要分配给集群的政策。

    2. 点击更新集群。

gcloud

如需为现有集群分配 ACL 政策,请使用 gcloud redis clusters update 命令。

gcloud redis clusters update CLUSTER_ID \
--update_mask=acl_policy \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

进行以下替换:

  • CLUSTER_ID:您要为其分配 ACL 政策的集群的 ID
  • ACL_POLICY_NAME:ACL 政策的名称
  • REGION:集群所在的区域

查看有关 ACL 政策的信息

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

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

控制台

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

    Memorystore for Redis Cluster

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

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

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

gcloud

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

gcloud redis acl-policies list
--region=REGION

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

查看有关 ACL 政策的信息

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

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

gcloud redis acl-policies describe ACL_POLICY_NAME \
--region=REGION

进行以下替换:

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

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

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

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

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

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

控制台

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

    Memorystore for Redis Cluster

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

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

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

gcloud

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

gcloud redis acl-policies revisions list \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

进行以下替换:

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

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

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

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

控制台

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

    Memorystore for Redis Cluster

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

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

  4. 在 ACL 政策修订版本页面中,点击包含您要查看的信息的 ACL 政策修订版本旁边的快照链接。

gcloud

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

gcloud redis acl-policies revisions describe ACL_POLICY_REVISION_ID \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

进行以下替换:

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

修改 ACL 政策

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

向 ACL 政策添加规则

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

控制台

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

    Memorystore for Redis Cluster

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

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

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

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

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

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

  8. 点击保存。

gcloud

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

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=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 Redis Cluster页面。

    Memorystore for Redis Cluster

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

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

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

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

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

  7. 点击保存。

替换 ACL 政策的规则

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

gcloud

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

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=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 Redis Cluster 页面。

    Memorystore for Redis Cluster

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

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

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

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

  6. 点击保存。

gcloud

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

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

进行以下替换:

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

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

从集群中移除 ACL 政策

如果 ACL 政策不再适用于 Memorystore for Redis Cluster 中的集群,您可以将其移除。您可以使用Google Cloud 控制台或 gcloud CLI 移除政策。

控制台

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

    Memorystore for Redis Cluster

  2. 点击要从中移除 ACL 政策的集群的 ID。

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

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

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

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

    2. 点击更新集群。

gcloud

如需从集群中移除 ACL 政策,请使用 gcloud redis clusters update 命令。

gcloud redis clusters update CLUSTER_ID \
--acl-policy="" \
--region=REGION

进行以下替换:

  • CLUSTER_ID:要从中移除 ACL 政策的集群的 ID
  • REGION:集群所在的区域

acl-policy 参数的 "" 值为空字符串。这表示您要从集群中移除 ACL 政策。

删除 ACL 政策

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

控制台

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

    Memorystore for Redis Cluster

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

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

    如果删除菜单项已停用,则表示该政策已分配给集群。您必须先从每个集群中移除该政策,然后才能将其删除。

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

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

    2. 点击删除。

gcloud

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

gcloud redis acl-policies delete ACL_POLICY_NAME \
--region=REGION

进行以下替换:

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

停用 Lua 脚本

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

禁止用户使用脚本命令

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

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

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

为用户停用所有脚本命令

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

创建政策

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

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

进行以下替换:

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

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

修改政策

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

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

进行以下替换:

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

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

为用户停用脚本命令

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

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

创建政策

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

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

进行以下替换:

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

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

修改政策

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

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

进行以下替换:

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

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

保护默认用户

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

创建政策

如需创建 ACL 政策来为 default 用户停用所有脚本命令,请使用 gcloud redis acl-policies create 命令。

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

进行以下替换:

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

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

修改政策

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

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

进行以下替换:

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

如果您只想授予 default 用户所需的特定权限,请更改 +@all 值。例如,如果您希望此用户仅有权访问只读命令,请将 +@all 更改为 +@read。如需详细了解您可以设置的用户权限,请参阅 Redis 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 clusters 您尝试删除已分配给至少一个集群的 ACL 政策。 您必须先从分配了 ACL 政策的所有集群中移除该政策,然后才能将其删除。如需确定哪些集群已分配给某项政策,请参阅查看 ACL 政策的相关信息。
fast-failing the workflow as the resource is in DELETING state 您尝试修改状态为 DELETING 的 ACL 政策。 如果 ACL 政策的状态为 DELETING,则您无法修改该政策。