このドキュメントでは、Google Distributed Cloud(GDC)エアギャップでルート認証局(CA)を作成する手順について説明します。
ルート CA は、公開鍵基盤(PKI)階層の最上位に位置し、PKI のトラスト アンカーを確立します。PKI 内で証明書を使用するには、デバイス、ソフトウェア、コンポーネントがルート CA を信頼する必要があります。この構成により、ルート CA によって発行されたすべての証明書が信頼され、PKI 自体が信頼されます。
このドキュメントは、プロジェクト内で証明書のライフサイクルを管理するアプリケーション デベロッパーやデータ サイエンティストなど、アプリケーション オペレーター グループ内のユーザーを対象としています。詳細については、 GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
ルート認証局を作成する前に、必要な権限をリクエストして環境を準備する必要があります。
IAM ロールをリクエストする
ルート認証局を作成、更新、削除するには、組織 IAM 管理者に連絡して、Certificate Authority Service
管理者(certificate-authority-service-admin)ロールをリクエストしてください。
環境を準備する
gdcloud CLI をまだダウンロードしてインストールしていない場合は、ダウンロードしてインストールします。
kubeconfig ファイルを生成して
kubectlアクセスを構成します。
ルート認証局の作成
ルート CA を作成するには、カスタム リソースを Distributed Cloud エアギャップ インスタンスに適用します。
CertificateAuthorityリソースを作成し、root-ca.yamlという名前の YAML ファイルとして保存します。apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLED次の変数を置き換えます。
変数 説明 ROOT_CA_NAME ルート CA の名前。 USER_PROJECT_NAMESPACE ユーザー プロジェクトが存在する名前空間の名前。 COMMON_NAME CA 証明書の共通名。 DURATION CA 証明書の有効期間。時間単位で指定します(例: 1000h)。日(d)や年(y)などの単位はサポートされていません。SECRET_NAME 秘密鍵と 署名付き CA 証明書を保持する Kubernetes Secret の名前。 次の変数は省略可能な値です。
変数 説明 RENEW_BEFORE CA 証明書の有効期限が切れる前のローテーション時間。 ORGANIZATION 証明書で使用する組織。 ORGANIZATIONAL_UNITS 証明書で使用する組織単位。 COUNTRIES 証明書で使用する国。 LOCALITIES 証明書で使用する都市。 PROVINCES 証明書で使用する州または都道府県。 STREET_ADDRESSES 証明書で使用する住所。 POSTAL_CODES 証明書で使用する郵便番号。 EXTENDED_KEY_USAGE 証明書の拡張鍵使用法。指定した場合、使用できる 値は serverAuthとclientAuthです。KEY_ALGORITHYM この証明書に使用される秘密鍵アルゴリズム。使用できる値は RSA、Ed25519、ECDSAです。サイズが指定されていない場合、デフォルトはECDSAの場合は 256、RSAの場合は 2048 です。Ed25519では鍵サイズは無視されます。KEY_SIZE この証明書の秘密鍵のサイズ(ビット単位)は、 アルゴリズムによって異なります。 RSAでは 2048、3072、4096、8192 を使用できます (デフォルトは 2048)。ECDSAでは 256、384、521 を使用できます(デフォルトは 256)。Ed25519ではサイズは無視されます。ACME_ENABLED ` true` に設定すると、CA は ACME モードで実行され、 ACME サーバーの URL が出力されます。ACME クライアントとプロトコルを使用して証明書を管理できます 。カスタム リソースを Distributed Cloud インスタンスに適用します。
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGMANAGEMENT_API_SERVER_KUBECONFIGは、Management API サーバーの kubeconfig ファイルのパスに置き換えます。ルート CA の準備状況を確認します。通常、CA の準備が完了するまでに 40 分ほどかかります。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))出力は次のようになります。
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
CA を一覧表示する
Distributed Cloud エアギャップ インスタンス内のすべての Certificate Authority Service リソースを一覧表示するには、次の操作を行います。
certificateauthorities パラメータを使用して、すべての CertificateAuthority
リソースを一覧表示します。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
出力は次のようになります。
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m