在 Google Distributed Cloud (GDC) air-gapped 中,有一项限制条件可限制用户不得超出设定的最长保留期限政策 GDCHRestrictAttributeRange。此限制由 Anthos Config Management 的 Policy Controller 在组织管理员集群中的 Bucket 自定义资源 (CR) 上强制执行。这意味着,默认情况下,只有系统服务账号、系统用户和 system:masters 群组中的用户可以移除最终确定器。以下概述的程序介绍了如何提高存储分区 CR 的保留政策限制。
前提条件
- 工具:kubectl CLI
- 所需访问权限:为集群生成 KUBECONFIG 文件
- 所需访问权限:获取集群中的角色
Policy Admin
为集群生成 KUBECONFIG 文件
Kubectl 命令需要有效的 KUBECONFIG 文件才能正常运行。此流程提供分步说明,以生成根管理员、组织管理员、组织系统和用户集群的 KUBECONFIG 文件。
前提条件
在继续之前,请确保您已准备好以下内容:
已安装
gdcloud。已安装
kubectlCLI。工作站上安装的证书授权机构 (CA) 签名证书。
组织名称。
(GDC) 根网址。OC IT 管理员必须向您提供根网址。
设置所需的环境变量
按照本部分中的说明为 org-admin、system 或任何用户集群生成 KUBECONFIG 文件。
运行以下命令以定义环境变量
ORG,供稍后在当前终端中使用。ORG是您组织的名称。export ORG=运行以下命令以定义环境变量
CONSOLE_URL,供当前终端稍后使用:export CONSOLE_URL=https://console.${ORG:?}.$GDC_URL/ gdcloud config set core/organization_console_url ${CONSOLE_URL:?}将
GDC_URL替换为您的 GDC 项目的基础网址。
登录集群
运行以下命令以登录:
gdcloud auth login --no-browser复制打印出的 gdcloud 命令,然后在可访问浏览器的机器上运行该命令。
复制打印出的网址,并将其粘贴到网络浏览器的地址栏中。
按照网页上的说明完成登录流程。
成功完成登录后,浏览器会显示消息身份验证成功。请关闭此窗口。
按照终端上的说明操作。成功登录后,终端会显示消息您已登录。
生成 KUBECONFIG 文件
运行以下命令以定义环境变量
CLUSTER,供稍后在当前终端中使用。CLUSTER是所需的集群名称。export CLUSTER=请参阅下表,将 ORGANIZATION-NAME 和 CLUSTER-NAME 替换为相应的值,以得出集群名称:
集群 集群名称 root admin root-admin 组织管理员 ORGANIZATION-NAME-admin 组织系统 ORGANIZATION-NAME-系统 用户 CLUSTER-NAME 您会看到,每个名称都表示以下内容:
- 根管理员集群名称为
root-admin。 - 对于名为
amira的组织,组织管理员集群名称和组织系统集群名称分别为amira-admin和amira-system。 - 用户集群的集群名称就是其集群名称。
- 根管理员集群名称为
运行以下命令以生成 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-admin、org-1-admin。 - 您要代入的角色类型。例如:
RoleClusterRole、ProjectRole或OrganizationRole。 - 您要代入的角色。
- 所需访问权限的命名空间。
ClusterRole和OrganizationRole不需要此参数。 - 访问 OC IT 工作站。
- GitLab 的凭据。
运行具有提升权限的脚本
在工作站上,从
private-cloud/operations/tools/目录运行elevated-access-script.sh脚本。使用
$GDCH_URL回答“Please enter the GDCH_网址 of the cluster...”问题。回答“Enter Gitlab username:”问题时,请输入您用于登录 Gitlab 的用户名。
对于“Enter Gitlab personal access token:”这个问题,请输入您账号的个人访问令牌。如需创建个人访问令牌,请按照以下说明操作:
转到
https://gitlab.$GDCH_URL/gdch/iac。登录您的 IO Gitlab 账号。选择您的头像。
选择修改商家资料。
在导航菜单中,选择访问令牌。
输入令牌的名称和失效日期。
选择所需的范围。
选择创建个人访问令牌。
脚本现在会将代码库
iac克隆到您的本地目录中。回答“输入您的 IdP 前缀”这一问题。
IdP Prefix是特定于每个身份提供方的专属前缀,会附加到 GDC 集群中每个用户名的前面。您可以通过以下任一方式找到此前缀:- 咨询您的值班指挥官
- 从 GDC 设置中检索说明,特别是《操作员用户指南》中的“身份和访问管理”部分。
此前缀的常见形式是一组字词,后跟分隔符,即
gdch-infra-operator-。在“输入您的用户名”问题中,输入您用于登录身份提供方的用户名。
回答“输入您需要角色的集群”这一问题,输入您需要角色的集群的名称。
脚本会提示您选择 Kubernetes 角色类型。输入您要申请的角色类型。
在“输入您需要担任的角色”问题中,输入角色的名称。
输入角色的访问时长。建议的访问时长为 3 小时。
该脚本将生成三个 YAML 文件。
./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/kustomization.yaml./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/${USER}-bindings/kustomization.yaml./iac/infrastructure/zonal/zones/ZONE_NAME/${CLUSTER}/${USER}-bindings/${ROLE}-binding.yaml
按
Y确认每个文件是否正确,或按N在vim中修改文件。确认所有文件后,脚本会将这些文件推送到 GitLab 中的
elevated_access分支,并创建一个合并请求。
查看并批准提升的访问权限请求
以下列表指定了审核和批准提升的访问权限请求时采取的操作:
- 另一位 IO 会审核 GitLab 请求(包括政策配置文件),以适当批准该请求。
- IO 批准请求后,系统会授予相应时长的访问权限。
- 系统会在设定的过期时间过后撤消访问权限。
补丁约束
获得所需访问权限后,运行以下命令以设置新的存储分区保留政策上限。此示例显示了新的最长天数 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