提高保留政策限制

在 Google Distributed Cloud (GDC) 實體隔離環境中,使用者不得超過設定的保留政策上限 GDCHRestrictAttributeRange。Anthos Config Management 的 Policy Controller 會在 Org Admin 叢集中的 Bucket 自訂資源 (CR) 上強制執行這項限制。也就是說,根據預設,只有系統服務帳戶、系統使用者和 system:masters 群組中的使用者可以移除終結器。以下程序說明如何提高 Bucket 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. 按照終端機上的指示操作。成功登入後,終端機會顯示「You are now logged in」(您已登入) 訊息

產生 KUBECONFIG 檔案

  1. 執行下列指令,定義環境變數 CLUSTER,以供目前終端機稍後使用。CLUSTER 是所需的叢集名稱。

    export CLUSTER=
    

    請參閱下表,將「ORGANIZATION-NAME」和「CLUSTER-NAME」替換為適當的值,即可推導出叢集名稱:

    叢集 叢集名稱
    根管理員 root-admin
    機構管理員 ORGANIZATION-NAME-admin
    org system ORGANIZATION-NAME-system
    使用者 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
    

取得叢集中的政策管理員角色

這項程序可協助您取得叢集的暫時提升存取權。

必要條件

請務必備妥下列資訊再繼續操作:

  • 另一個 IO 擔任 GitLab 請求核准者。IO 必須有權核准 GitLab 要求。
  • 您需要存取的叢集名稱。例如:root-adminorg-1-admin
  • 您要擔任的角色類型。例如:Role ClusterRoleProjectRoleOrganizationRole
  • 您要擔任的角色。
  • 所需存取權的命名空間。ClusterRoleOrganizationRole 無須提供。
  • 可存取 OC IT 工作站。
  • GitLab 的憑證。

執行提升存取權指令碼

  1. 在工作站的 private-cloud/operations/tools/ 目錄中,執行 elevated-access-script.sh 指令碼。

  2. 回答「Please enter the GDCH_URL of the cluster...」問題時,請輸入 $GDCH_URL

  3. 回答「Enter Gitlab username:」(輸入 Gitlab 使用者名稱:) 問題時,請輸入用於登入 Gitlab 的使用者名稱。

  4. 在「Enter Gitlab personal access token:」問題中,輸入帳戶的個人存取權杖。如要建立個人存取權權杖,請按照下列操作說明進行:

    1. 前往https://gitlab.$GDCH_URL/gdch/iac。登入 IO Gitlab 帳戶。

    2. 選取顯示圖片。

    3. 選取「編輯商家檔案」

    4. 在導覽選單中,選取「Access Tokens」(存取權杖)

    5. 輸入權杖名稱和到期日。

    6. 選取所需範圍。

    7. 選取「建立個人存取權杖」

  5. 指令碼現在會將存放區 iac 複製到本機目錄。

  6. 回答「輸入 IdP 前置字元」問題。IdP Prefix 是每個身分識別提供者的專屬前置字串,會加在 GDC 叢集內每個使用者名稱的前面。如要找出這個前置字元,請採取下列任一做法:

    • 諮詢 Watch Commander
    • 從 GDC 設定中擷取操作說明,特別是《Operators User Guide》的「Identity and access management」一節。

    這個前置字元通常是一組字詞,後面接著分隔符,也就是 gdch-infra-operator-

  7. 回答「輸入使用者名稱」問題時,請輸入您用來登入身分識別提供者的使用者名稱。

  8. 回答「Enter the cluster you need the role for」(輸入需要角色的叢集) 問題時,請輸入需要角色的叢集名稱。

  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. 系統會在設定的到期時間過後撤銷存取權。

修補程式限制

取得必要存取權後,請執行下列指令,設定新的 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