将自定义 CA 添加到系统信任软件包

本页介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中将自定义证书授权机构 (CA) 证书添加到系统信任软件包中。信任软件包是组织的服务用于验证其他服务身份的一组可信 CA。通过添加自己的自定义 CA,您可以控制组织信任哪些证书,从而实现与内部资源和其他可信端点的安全连接。

本页介绍了如何将自定义 CA 添加到 trust-store-root-ext 系统信任软件包中。修改 trust-store-root-ext 信任软件包后,更改会自动传播到 trust-store-global-root-ext 软件包,从而使您的自定义 CA 可在所有可用区中使用。

本页适用于平台管理员组(例如 IT 管理员)中的受众群体,他们需要在 GDC 中管理和保护组织的资源。如需了解详情,请参阅 GDC 网闸隔离配置文档的 受众群体

准备工作

如需将自定义 CA 证书添加到系统信任软件包中,您必须请求必要的权限并准备环境。

请求 IAM 角色

如需创建、读取、更新和删除 Secret,请与组织 IAM 管理员联系,以请求 Trust Store Admin (trust-store-admin) 角色。

准备环境

生成 kubeconfig 文件

完成以下步骤,为组织基础架构集群生成 kubeconfig 文件,并将其设置为 KUBECONFIG 变量以供日后使用。

  1. 查看所有可用区:

    gdcloud zones list
    

    记下托管自定义资源的可用区的名称。

  2. ZONE 环境变量设置为托管组织基础架构集群的可用区:

    export ZONE="ZONE"
    

    ZONE 替换为可用区名称。

  3. 设置 ORG_INFRA_CLUSTER 环境变量:

    export ORG_INFRA_CLUSTER="ORG_NAME-infra"
    

    ORG_NAME 替换为您的组织名称,例如 org-1

  4. 为目标可用区生成组织基础架构集群 kubeconfig 文件,并验证凭据:

    export KUBECONFIG=${HOME}/${ORG_INFRA_CLUSTER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${ORG_INFRA_CLUSTER:?} --zone ${ZONE:?}
    [[ $(kubectl config current-context) == *${ORG_INFRA_CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 命令会移除主目录中的现有 kubeconfig 文件。生成新的 kubeconfig 文件时,它会覆盖现有文件。如果您不想覆盖或移除现有文件,请将其备份到其他安全位置。

将自定义 CA 添加到系统信任软件包

如需将自定义 CA 添加到 trust-store-root-ext 系统信任软件包中,您需要准备自定义 CA 资源,然后将其应用于组织基础架构集群。

  1. 为自定义 CA PEM 文件设置环境变量:

    export CUSTOM_CA_PEM_FILE=CUSTOM_CA_PEM_FILE
    

    CUSTOM_CA_PEM_FILE 替换为包含以 PEM 格式编码的自定义 CA 证书的文件的路径。

  2. 使用 base64 对 CA 证书进行编码:

    export ENCODED_CA=$(cat "${CUSTOM_CA_PEM_FILE:?}" | base64 -w 0)
    
  3. 创建以 trust-store-root-ext 系统信任软件包为目标的 Secret YAML 文件 (custom-ca.yaml):

    cat > custom-ca.yaml <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      annotations:
        security.private.gdc.goog/bundles: trust-store-root-ext
      name: custom-ca
      namespace: cert-manager
    data:
      ca.crt: ${ENCODED_CA:?}
    EOF
    

    以下是 custom-ca.yaml 文件的示例:

    apiVersion: v1
    kind: Secret
    metadata:
      annotations:
        security.private.gdc.goog/bundles: trust-store-root-ext
      name: custom-ca
      namespace: cert-manager
    data:
       ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSU...LQWZRSUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    
  4. 使用 kubectl 命令将 Secret 应用于组织基础架构集群:

     kubectl apply -f custom-ca.yaml --kubeconfig ${KUBECONFIG:?}
    

    此步骤会自动更新 trust-store-root-exttrust-store-global-root-ext 信任软件包,从而使 GDC 服务可以使用您的自定义 CA。

验证 CA 是否可用

确认您的自定义 CA 已添加到信任软件包中:

  1. 按照 获取 GDC 信任软件包中的步骤 下载最新版本的 trust-store-root-ext 信任软件包。

    如果您想从其他可用区获取自定义 CA,请使用 trust-store-global-root-ext 信任软件包。

  2. 打开下载的信任软件包文件,并确认 CUSTOM_CA_PEM_FILE 指定的每个自定义 CA 证书都存在。

    单独搜索每个自定义 CA 证书。它们出现的顺序可能会有所不同;不能保证它们会出现在列表末尾。

    以下显示了 trust-store-root-ext 的示例:

    -----BEGIN CERTIFICATE-----
    MIIC8DCCAdigAwIBAgIQPLOPa...
    -----END CERTIFICATE-----
    ... other CAs ...
    -----BEGIN CERTIFICATE-----
       < Imported CA data>
    -----END CERTIFICATE-----
    ... other CAs ...
    -----BEGIN CERTIFICATE-----
    MIIDAzCCAeugAwIBAgIRAIV2...
    -----END CERTIFICATE-----