提高保留政策限制

在 Google Distributed Cloud (GDC) air-gapped 中,有一项限制条件可限制用户不得超出设定的最长保留期限政策 GDCHRestrictAttributeRange。此限制由 Anthos Config Management 的 Policy Controller 在组织管理员集群中的 Bucket 自定义资源 (CR) 上强制执行。这意味着,默认情况下,只有系统服务账号、系统用户和 system:masters 群组中的用户可以移除最终确定器。以下概述的程序介绍了如何提高存储分区 CR 的保留政策限制。

前提条件

为集群生成 KUBECONFIG 文件

Kubectl 命令需要有效的 KUBECONFIG 文件才能正常运行。此流程提供分步说明,以生成根管理员、组织管理员、组织系统和用户集群的 KUBECONFIG 文件。

前提条件

在继续之前,请确保您已准备好以下内容:

  • 已安装 gdcloud

  • 已安装 kubectl CLI。

  • 工作站上安装的证书授权机构 (CA) 签名证书。

  • 组织名称。

  • (GDC) 根网址。OC IT 管理员必须向您提供根网址。

设置所需的环境变量

按照本部分中的说明为 org-adminsystem 或任何用户集群生成 KUBECONFIG 文件。

  1. 运行以下命令以定义环境变量 ORG,供稍后在当前终端中使用。ORG 是您组织的名称。

    export ORG=
    
  2. 运行以下命令以定义环境变量 CONSOLE_URL,供当前终端稍后使用:

    export CONSOLE_URL=https://console.${ORG:?}.$GDC_URL/
    gdcloud config set core/organization_console_url ${CONSOLE_URL:?}
    

    GDC_URL 替换为您的 GDC 项目的基础网址。

登录集群

  1. 运行以下命令以登录:

    gdcloud auth login --no-browser
    
  2. 复制打印出的 gdcloud 命令,然后在可访问浏览器的机器上运行该命令。

  3. 复制打印出的网址,并将其粘贴到网络浏览器的地址栏中。

  4. 按照网页上的说明完成登录流程。

  5. 成功完成登录后,浏览器会显示消息身份验证成功。请关闭此窗口

  6. 按照终端上的说明操作。成功登录后,终端会显示消息您已登录

生成 KUBECONFIG 文件

  1. 运行以下命令以定义环境变量 CLUSTER,供稍后在当前终端中使用。CLUSTER 是所需的集群名称。

    export CLUSTER=
    

    请参阅下表,将 ORGANIZATION-NAMECLUSTER-NAME 替换为相应的值,以得出集群名称:

    集群 集群名称
    root admin root-admin
    组织管理员 ORGANIZATION-NAME-admin
    组织系统 ORGANIZATION-NAME-系统
    用户 CLUSTER-NAME

    您会看到,每个名称都表示以下内容:

    • 根管理员集群名称为 root-admin
    • 对于名为 amira 的组织,组织管理员集群名称和组织系统集群名称分别为 amira-adminamira-system
    • 用户集群的集群名称就是其集群名称。
  2. 运行以下命令以生成 KUBECONFIG 文件并验证凭据: sh export KUBECONFIG=${HOME}/${CLUSTER:?}-kubeconfig.yaml rm ${KUBECONFIG:?} gdcloud clusters get-credentials ${CLUSTER:?} [[ $(kubectl config current-context) == *${CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure" 该命令应返回以下输出:

    Success. Your kubeconfig is at /usr/local/google/home/iris/kubeconfig-amira-admin.yaml
    

获取集群中的 Policy Admin 角色

此流程可帮助您获取对集群的临时提升访问权限。

前提条件

在继续之前,请确保您已准备好以下内容:

  • 另一个 IO,用于充当 GitLab 请求审批者。IO 必须拥有批准 GitLab 请求的权限。
  • 您需要访问的集群名称。例如:root-adminorg-1-admin
  • 您要代入的角色类型。例如:Role ClusterRoleProjectRoleOrganizationRole
  • 您要代入的角色。
  • 所需访问权限的命名空间。ClusterRoleOrganizationRole 不需要此参数。
  • 访问 OC IT 工作站。
  • GitLab 的凭据。

运行具有提升权限的脚本

  1. 在工作站上,从 private-cloud/operations/tools/ 目录运行 elevated-access-script.sh 脚本。

  2. 使用 $GDCH_URL 回答“Please enter the GDCH_网址 of the cluster...”问题。

  3. 回答“Enter Gitlab username:”问题时,请输入您用于登录 Gitlab 的用户名。

  4. 对于“Enter Gitlab personal access token:”这个问题,请输入您账号的个人访问令牌。如需创建个人访问令牌,请按照以下说明操作:

    1. 转到 https://gitlab.$GDCH_URL/gdch/iac。登录您的 IO Gitlab 账号。

    2. 选择您的头像。

    3. 选择修改商家资料

    4. 在导航菜单中,选择访问令牌

    5. 输入令牌的名称和失效日期。

    6. 选择所需的范围。

    7. 选择创建个人访问令牌

  5. 脚本现在会将代码库 iac 克隆到您的本地目录中。

  6. 回答“输入您的 IdP 前缀”这一问题。IdP Prefix 是特定于每个身份提供方的专属前缀,会附加到 GDC 集群中每个用户名的前面。您可以通过以下任一方式找到此前缀:

    • 咨询您的值班指挥官
    • 从 GDC 设置中检索说明,特别是《操作员用户指南》中的“身份和访问管理”部分。

    此前缀的常见形式是一组字词,后跟分隔符,即 gdch-infra-operator-

  7. 在“输入您的用户名”问题中,输入您用于登录身份提供方的用户名。

  8. 回答“输入您需要角色的集群”这一问题,输入您需要角色的集群的名称。

  9. 脚本会提示您选择 Kubernetes 角色类型。输入您要申请的角色类型。

  10. 在“输入您需要担任的角色”问题中,输入角色的名称。

  11. 输入角色的访问时长。建议的访问时长为 3 小时。

  12. 该脚本将生成三个 YAML 文件。

    1. ./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/kustomization.yaml
    2. ./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/${USER}-bindings/kustomization.yaml
    3. ./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/${USER}-bindings/${ROLE}-binding.yaml

    Y 确认每个文件是否正确,或按 Nvim 中修改文件。

  13. 确认所有文件后,脚本会将这些文件推送到 GitLab 中的 elevated_access 分支,并创建一个合并请求。

查看并批准提升的访问权限请求

以下列表指定了审核和批准提升的访问权限请求时采取的操作:

  1. 另一位 IO 会审核 GitLab 请求(包括政策配置文件),以适当批准该请求。
  2. IO 批准请求后,系统会授予相应时长的访问权限。
  3. 系统会在设定的过期时间过后撤消访问权限。

补丁约束

获得所需访问权限后,运行以下命令以设置新的存储分区保留政策上限。此示例显示了新的最长天数 120 天,但请务必将命令更新为平台管理员 (PA) 请求的值:

kubectl patch GDCHRestrictAttributeRange restrict-bucket-retention-policy -p '{"spec":{"parameters":{"attributeMaxValue":120}}}' --type=merge

输出应如下所示:

gdchrestrictattributerange.constraints.gatekeeper.sh/restrict-bucket-retention-policy patched