이 페이지에서는 Google Distributed Cloud (GDC) 오프라인에서 루트 인증 기관 (CA)을 만드는 단계를 설명합니다.
공개 키 인프라 (PKI) 계층 구조의 맨 위에 있는 루트 CA는 PKI의 신뢰 앵커를 설정합니다. PKI 내에서 인증서를 사용하려면 기기, 소프트웨어, 구성요소가 루트 CA를 신뢰해야 합니다. 이 구성을 사용하면 루트 CA에서 발급한 모든 인증서를 신뢰할 수 있으므로 PKI 자체를 신뢰할 수 있습니다.
시작하기 전에
루트 인증 기관을 만들기 전에 필요한 권한과 kubeconfig 파일이 있는지 확인하세요.
필수 권한
루트 인증 기관을 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 인증 기관 서비스 관리자(certificate-authority-service-admin) 역할을 부여해 달라고 요청하세요. 역할에 대한 자세한 내용은 역할 정의를 참고하세요.
kubeconfig 파일 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음을 실행하세요.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 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 사용자 프로젝트가 있는 네임스페이스의 이름입니다. COMMON_NAME CA 인증서의 일반 이름입니다. DURATION 요청된 CA 인증서 수명입니다. SECRET_NAME 비공개 키와 서명된 CA 인증서가 포함된 Kubernetes 보안 비밀의 이름입니다. 다음 변수는 선택적 값입니다.
변수 설명 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를 관리 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 나열
분산 클라우드 오프라인 인스턴스에 있는 모든 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