在 Google Distributed Cloud (GDC) 實體隔離環境中,使用者不得超過設定的保留政策上限 GDCHRestrictAttributeRange。Anthos Config Management 的 Policy Controller 會在 Org Admin 叢集中的 Bucket 自訂資源 (CR) 上強制執行這項限制。也就是說,根據預設,只有系統服務帳戶、系統使用者和 system:masters 群組中的使用者可以移除終結器。以下程序說明如何提高 Bucket CR 的保留政策限制。
必要條件
- 工具:kubectl CLI
- 必要存取權:為叢集產生 KUBECONFIG 檔案
- 必要存取權:取得叢集中的「Role」
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 指令,然後在可存取瀏覽器的機器上執行。
複製列印出來的網址,然後貼到網路瀏覽器的網址列中。
按照網頁上的操作說明完成登入程序。
登入完成後,瀏覽器會顯示「驗證成功。請關閉這個視窗。
按照終端機上的指示操作。成功登入後,終端機會顯示「You are now logged in」(您已登入) 訊息。
產生 KUBECONFIG 檔案
執行下列指令,定義環境變數
CLUSTER,以供目前終端機稍後使用。CLUSTER是所需的叢集名稱。export CLUSTER=請參閱下表,將「ORGANIZATION-NAME」和「CLUSTER-NAME」替換為適當的值,即可推導出叢集名稱:
叢集 叢集名稱 根管理員 root-admin 機構管理員 ORGANIZATION-NAME-admin org system ORGANIZATION-NAME-system 使用者 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
取得叢集中的政策管理員角色
這項程序可協助您取得叢集的暫時提升存取權。
必要條件
請務必備妥下列資訊再繼續操作:
- 另一個 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指令碼。回答「Please enter the GDCH_URL of the cluster...」問題時,請輸入
$GDCH_URL。回答「Enter Gitlab username:」(輸入 Gitlab 使用者名稱:) 問題時,請輸入用於登入 Gitlab 的使用者名稱。
在「Enter Gitlab personal access token:」問題中,輸入帳戶的個人存取權杖。如要建立個人存取權權杖,請按照下列操作說明進行:
前往
https://gitlab.$GDCH_URL/gdch/iac。登入 IO Gitlab 帳戶。選取顯示圖片。
選取「編輯商家檔案」。
在導覽選單中,選取「Access Tokens」(存取權杖)。
輸入權杖名稱和到期日。
選取所需範圍。
選取「建立個人存取權杖」。
指令碼現在會將存放區
iac複製到本機目錄。回答「輸入 IdP 前置字元」問題。
IdP Prefix是每個身分識別提供者的專屬前置字串,會加在 GDC 叢集內每個使用者名稱的前面。如要找出這個前置字元,請採取下列任一做法:- 諮詢 Watch Commander
- 從 GDC 設定中擷取操作說明,特別是《Operators User Guide》的「Identity and access management」一節。
這個前置字元通常是一組字詞,後面接著分隔符,也就是
gdch-infra-operator-。回答「輸入使用者名稱」問題時,請輸入您用來登入身分識別提供者的使用者名稱。
回答「Enter the cluster you need the role for」(輸入需要角色的叢集) 問題時,請輸入需要角色的叢集名稱。
指令碼會提示您選擇 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 核准要求後,系統會在要求的時間範圍內授予存取權。
- 系統會在設定的到期時間過後撤銷存取權。
修補程式限制
取得必要存取權後,請執行下列指令,設定新的 Bucket 留存政策上限。這個範例顯示的新上限為 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