Kubernetes 서비스 계정(KSA)은 포드에서 실행되는 프로세스 ID를 제공합니다.
Kubernetes 서비스 계정은 애플리케이션에서 Google Cloud API에 승인된 호출을 수행하는 데 사용하는 Google Cloud 서비스 계정과는 다릅니다.
Google Distributed Cloud는 비공개 암호화 키를 사용하여 포드에 발급하는 KSA 토큰에 서명합니다. 포드가 Kubernetes API 서버로 요청을 전송할 때 해당 공개 키를 사용하여 토큰을 검증합니다. 포드가 워크로드 아이덴티티를 사용하여 Google Cloud API를 호출하면 Google Cloud가 동일한 공개 키를 사용하여 포드의 ID를 인증합니다.
사용자 클러스터를 만드는 동안 Google Distributed Cloud는 비공개 키와 공개 키를 생성합니다. 또한 클러스터를 만드는 동안 Google Distributed Cloud는 클러스터를 Fleet에 등록하고 Google Cloud에 공개 키를 제공합니다.
나중에 비공개/공개 키 쌍을 순환할 수 있습니다. 순환은 새로운 비공개 키에 의해 서명된 새 토큰을 자동으로 발행합니다. 순환이 끝나면 클러스터에 새 비공개 키, 새 공개 키, 갱신된 토큰이 포함됩니다. 또한 Google Cloud에는 새로운 공개 키가 있습니다.
바인딩된 토큰 및 기존 토큰
포드는 Kubernetes API 서버를 호출할 때 인증 및 승인에 기존 토큰 또는 바인딩된 토큰을 사용할 수 있습니다. 바인딩된 토큰은 기간이 제한되며 예상 볼륨을 사용하여 포드에 분산됩니다. 기존 토큰은 만료되지 않으며 Kubernetes 보안 비밀에 보관됩니다. 바인딩된 토큰은 더 안전하므로 권장됩니다.
바인딩된 토큰과 기존 토큰 모두 키 순환 중에 새로고침됩니다.
키 순환 시작
키 순환을 시작하기 전에 다음 사항을 고려하세요.
키 순환 중에는 다른 키 순환, 인증 기관 순환 또는 클러스터 업데이트를 시작할 수 없습니다.
키 순환은 일시중지하거나 롤백할 수 없습니다. 모든 이전 키가 삭제됩니다.
키 순환을 수행하면 기존 클러스터 노드가 삭제되고 새 노드가 생성됩니다.
키 순환을 시작하려면 다음 안내를 따르세요.
gkectl update credentials ksa-signing-key rotate \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG \ [--skip-prompt]
다음을 바꿉니다.
USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.
ADMIN_KUBECONFIG_FILE: 관리자 클러스터 kubeconfig 파일의 경로입니다.
메시지를 표시하지 않으려면 --skip-prompt
를 포함합니다.
키 순환 상태 보기
키 순환 상태를 보려면 다음 안내를 따르세요.
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
키 순환이 이미 완료되었으면 다음과 비슷한 메시지가 표시됩니다.
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: True, reason: KSASigningKeyRotationCompleted, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
KSA 서명 키 순환이 아직 진행 중이면 다음과 비슷한 메시지가 표시됩니다.
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}