이 문서에서는 Google Distributed Cloud (GDC) 에어 갭에서 루트 인증 기관 (CA)을 만드는 단계를 설명합니다.
공개 키 인프라 (PKI) 계층 구조의 맨 위에 있는 루트 CA는 PKI의 신뢰 앵커를 설정합니다. PKI 내에서 인증서를 사용하려면 기기, 소프트웨어, 구성요소가 루트 CA를 신뢰해야 합니다. 이 구성은 루트 CA에서 발급된 모든 인증서에 대한 신뢰를 보장하므로 PKI 자체에 대한 신뢰를 지원합니다.
이 문서는 프로젝트 내에서 인증서 수명 주기를 관리하는 애플리케이션 개발자 또는 데이터 과학자와 같은 애플리케이션 운영자 그룹 내 사용자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서 대상을 참조하세요.
시작하기 전에
루트 인증 기관을 만들려면 먼저 필요한 권한을 요청하고 환경을 준비해야 합니다.
IAM 역할 요청
루트 인증 기관을 만들고 업데이트하고 삭제하려면 IAM 조직 관리자에게 연락하여 Certificate Authority Service 관리자(certificate-authority-service-admin) 역할을 요청하세요.
개발 환경 준비
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 보안 비밀의 이름입니다. 다음 변수는 선택사항입니다.
변수 설명 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