이 문서에서는 루트 키를 순환하는 방법을 설명합니다. 루트 키가 손상되거나 보안을 강화하기 위해 루트 키를 주기적으로 순환하도록 선택한 경우 RotationJob 리소스를 사용하여 키를 새 루트 키로 순환할 수 있습니다.
루트 키를 순환하면 새 루트 키가 생성되며, 이 키가 기본 키가 되고 모든 비루트 키를 래핑합니다. 루트 키는 삭제할 수 없으며 순환이 루트 키를 교체하는 유일한 방법입니다. 루트 키에 대한 자세한 내용은 루트 키 유형을 참조하세요.
KMS API에 대한 자세한 내용은 KMS API 개요를 참조하고 전체 API 정의를 보려면 키 관리 서비스 KRM API를 참조하세요.
시작하기 전에
루트 키를 순환하기 전에 필요한 권한이 있어야 하며 환경을 준비해야 합니다.
IAM 역할 요청
키를 순환하려면 IAM 조직 관리자에게 연락하여 KMS 순환 작업 관리자 (kms-rotationjob-admin) 역할을 요청하세요.
개발 환경 준비
kubeconfig 파일을 생성하여
kubectl액세스를 구성합니다.
루트 키 순환
루트 키를 순환하려면 먼저 사용 중인 루트 키의 리소스 이름을 식별해야 합니다. 이러한 모든 키는 동일한 루트 키로 보호되므로 프로젝트 내의 AEADKey 리소스를 검사하여 이 정보를 찾을 수 있습니다.
새 루트 키를 만들고 키를 순환합니다.
프로젝트의
AEADKey리소스를 나열합니다.kubectl get AEADKey -n PROJECTPROJECT를 프로젝트 네임스페이스 이름으로 바꿉니다.출력에서
AEADKey의 이름을 기록합니다.AEADKey에서ROOT_KEY_RESOURCE_NAME를 가져옵니다. 다음 명령어는RotationJob리소스에 필요한 루트 키 식별자를 추출하고 형식을 다시 지정합니다.kubectl describe aeadkey KEY_NAME -n PROJECT | grep "Root Key ID:" | awk '{print $4}' | awk -F/ '{print "namespaces/" $1 "/secrets/" $2}'다음을 바꿉니다.
KEY_NAME: 프로젝트에 있는AEADKey의 이름PROJECT: 프로젝트 네임스페이스의 이름
출력은 다음과 비슷하게 표시됩니다.
namespaces/kms-system/secrets/kms-key-local-rootYAML 파일을 만들고
RotationJob리소스와 다음 콘텐츠를 추가합니다.apiVersion: "kms.gdc.goog/v1" kind: RotationJob metadata: name: ROTATION_NAME spec: rootKeyResourceName: ROOT_KEY_RESOURCE_NAME다음을 바꿉니다.
ROTATION_NAME: 순환 작업 이름입니다(예:rotate-job1).ROOT_KEY_RESOURCE_NAME: 이전 단계에서 가져온 출력입니다.
YAML 파일의 콘텐츠를 KMS에 적용합니다.
kubectl apply -f FILENAME.yamlFILENAME를 YAML 파일 이름으로 바꿉니다.
명령어를 실행하면 KMS가 새 루트 키를 만들고 새 루트 키로 모든 키를 순환합니다.
루트 키 순환이 완료되었는지 확인하려면 다음을 실행합니다.
kubectl get rotationjobs ROTATION_NAMEROTATION_NAME을 순환 작업 이름으로 바꿉니다.
명령어를 실행한 후 성공하면 순환 작업 상태가
Completed로 표시됩니다.