カスタム CA をシステム信頼バンドルに追加する

このページでは、Google Distributed Cloud(GDC)エアギャップ内のシステム信頼バンドルにカスタム認証局(CA)証明書を追加する方法について説明します。信頼バンドルは、組織のサービスが他のサービスの ID を検証するために使用する信頼できる CA のコレクションです。独自のカスタム CA を追加することで、組織が信頼する証明書を制御し、内部リソースやその他の信頼できるエンドポイントへの安全な接続を可能にできます。

このページでは、カスタム CA を trust-store-root-ext システム信頼バンドルに追加する方法について説明します。trust-store-root-ext 信頼バンドルを変更すると、変更は自動的に trust-store-global-root-ext バンドルに反映され、カスタム CA がすべてのゾーンで使用できるようになります。

このページは、GDC 内で組織のリソースを管理、保護する必要があるプラットフォーム管理者グループ(IT 管理者など)のユーザーを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。

始める前に

カスタム CA 証明書をシステム信頼バンドルに追加するには、必要な権限をリクエストして環境を準備する必要があります。

IAM ロールをリクエストする

シークレットを作成、読み取り、更新、削除するには、IAM 組織管理者に連絡して、トラストストア管理者(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 コマンドを使用して、シークレットを組織インフラストラクチャ クラスタに適用します。

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

    このステップでは、trust-store-root-ext と trust-store-global-root-ext の信頼バンドルを自動的に更新することで、カスタム CA を GDC サービスで使用できるようにします。

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-----