애플리케이션 레이어 보안 비밀 암호화 문제 해결


이 페이지에서는 Google Kubernetes Engine(GKE)에서 애플리케이션 레이어 보안 비밀 암호화와 관련된 문제를 해결하는 방법을 설명합니다.

업데이트 실패

애플리케이션 레이어 보안 비밀 암호화의 암호화 구성을 업데이트할 때 GKE는 Kubernetes 클러스터에서 모든 보안 비밀 객체를 다시 작성해야 합니다. GKE는 모든 보안 비밀이 새 Cloud KMS 키로 암호화되거나 사용자가 구성한 경우 암호화되지 않은 상태로 작성되도록 이를 수행합니다.

이 업데이트 작업은 다음과 같은 조건으로 인해 실패할 수 있습니다.

  • 업데이트가 진행되는 동안 Kubernetes 컨트롤 플레인을 일시적으로 사용할 수 없습니다.
  • 사용자 정의 AdmissionWebhook은 GKE에서 보안 비밀 객체를 업데이트할 수 없도록 합니다.
  • 업데이트 작업이 완료되기 전에 업데이트된 Cloud KMS 키 또는 이전 Cloud KMS 키가 사용 중지됩니다.

업데이트 작업이 성공할 때까지 업데이트된 Cloud KMS 키 또는 이전 Cloud KMS 키와 상호작용하지 마세요.

디버깅 필드

버전 1.29 이상을 실행하는 GKE 클러스터에는 Cluster.DatabaseEncryption에 대한 업데이트를 추적하고 오류를 복구하는 데 도움이 되는 추가 필드가 포함됩니다.

다음 단계는 DatabaseEncryption.CurrentState 필드가 비어 있지 않은 클러스터에만 적용됩니다. CurrentState 필드가 비어 있으면 이 클러스터 버전에서 이 기능이 아직 사용 설정되지 않은 것입니다.

이러한 필드에 적용되는 한도는 다음과 같습니다.

  • 출력 전용입니다. 즉, 클러스터 생성 또는 업데이트 요청 중에 설정할 수 없습니다.

CurrentState 필드

Cluster.DatabaseEncryptionCurrentState 필드를 검사하여 DatabaseEncryption 업데이트 작업의 현재 상태를 검사할 수 있습니다.

CurrentState의 값 설명

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

최신 업데이트 작업이 성공했습니다. 추가 작업이 필요하지 않습니다. 이전에 사용한 키는 폐기할 수 있습니다.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

업데이트가 진행 중입니다.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

최근 업데이트에 오류가 있습니다. 이전에 사용한 Cloud KMS 키는 GKE에서 계속 사용될 수 있으므로 사용 중지하거나 폐기하지 마세요.

자세한 내용은 LastOperationErrors 필드를 참조하세요.

LastOperationErrors 필드

업데이트 작업이 실패하면 GKE 컨트롤 플레인의 기본 오류가 gcloud container clusters update의 출력에 표시됩니다.

가장 최근에 실패한 두 가지 업데이트 작업의 오류 메시지도 Cluster.DatabaseEncryption.LastOperationErrors에서 확인할 수 있습니다.

DecryptionKeys 필드

새 암호화 작업에 사용되는 Cloud KMS 키는 DatabaseEncryption.KeyName에 표시됩니다. 일반적으로 이 키는 클러스터에서 사용하는 유일한 키입니다.

하지만 DatabaseEncryption.DecryptionKeys에는 업데이트가 진행 중이거나 실패한 뒤에 클러스터에서 사용되는 추가 키가 포함됩니다.

실패한 업데이트에서 복구

실패한 업데이트에서 복구하려면 다음을 수행합니다.

  1. 오류 메시지를 검토하고 표시된 문제를 해결합니다.
  2. 실패한 명령어(예: gcloud container clusters update ... --database-encryption-key)를 실행하여 업데이트 요청을 다시 시도합니다. 원래 수행한 것과 동일한 업데이트 요청으로 다시 시도하거나 클러스터를 이전 상태로 다시 업데이트하는 것이 좋습니다. GKE가 하나 이상의 보안 비밀을 읽을 수 없는 경우 다른 키 또는 암호화 상태로 전환하지 못할 수 있습니다.

다음 섹션에는 오류가 발생하는 일반적인 이유가 나와 있습니다.

Cloud KMS 키 오류

오류 메시지에 하나 이상의 Cloud KMS 키에 대한 참조가 포함된 경우 Cloud KMS 키 구성을 검사하여 관련 키 버전을 사용할 수 있는지 확인합니다.

예를 들어 Cloud KMS 키가 사용 중지되었거나 폐기되었다는 오류가 표시되면 키 또는 키 버전을 다시 사용 설정합니다.

보안 비밀을 업데이트할 수 없음

Kubernetes API가 허용 웹훅으로 인해 업데이트 요청을 거부하면 다음 오류가 발생할 수 있습니다.

error admission webhook WEBHOOK_NAME denied the request

이 오류를 해결하려면 웹훅을 삭제하거나 수정하여 GKE가 주요 업데이트 중에 모든 네임스페이스의 보안 비밀을 업데이트할 수 있도록 합니다.