このページでは、Google Distributed Cloud(GDC)エアギャップでルート認証局(CA)を作成する手順について説明します。
公開鍵基盤(PKI)階層の最上位にあるルート CA は、PKI のトラスト アンカーを確立します。PKI 内で証明書を使用するには、デバイス、ソフトウェア、コンポーネントがルート CA を信頼する必要があります。この構成により、ルート CA によって発行されたすべての証明書が信頼され、PKI 自体が信頼されるようになります。
始める前に
ルート認証局の作成に必要な権限を取得するには、組織の IAM 管理者に Certificate Authority Service 管理者(certificate-authority-service-admin
)ロールの付与を依頼してください。ロールの詳細については、ロールの定義をご覧ください。
kubeconfig ファイルを取得する
Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。
Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
これらの手順では、Management API サーバーの kubeconfig ファイルのパスを使用して
MANAGEMENT_API_SERVER_KUBECONFIG
を置き換えます。
ルート認証局の作成
ルート 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 ユーザー プロジェクトが存在する Namespace の名前。 COMMON_NAME CA 証明書の共通名。 DURATION リクエストされた CA 証明書の有効期間。 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
では 2, 048 です。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_KUBECONFIG
MANAGEMENT_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