암호화된 스토리지 버킷 관리

이 페이지에서는 암호화된 스토리지 버킷을 관리하는 방법을 안내하며, 특히 v2 암호화를 위한 AEADKey를 새로고침하고 순환하는 방법을 중점적으로 설명합니다. 여기에는 kubectl 명령어를 사용하여 AEADKeys 및 kekRef 보안 비밀을 관리하기 위한 기본 요건과 단계가 포함됩니다. 이 정보를 통해 강력한 데이터 보안을 시행하고 효과적인 수명 주기 관리를 통해 암호화 키가 손상될 위험을 최소화할 수 있습니다.

이 페이지는 Google Distributed Cloud(GDC) 에어 갭 환경에서 스토리지 버킷의 암호화 설정을 관리하는 인프라 운영자 그룹 내 IT 관리자 또는 애플리케이션 운영자 그룹 내 개발자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서 대상을 참조하세요.

시작하기 전에

스토리지 버킷은 특정 프로젝트로 범위가 지정된 리소스입니다. 프로젝트는 버킷을 그룹화하고 Management API 서버를 통해 버킷을 관리할 수 있는 컨테이너 역할을 합니다. 이 페이지에서 작업을 수행하려면 먼저 새 프로젝트를 만들거나 충분한 권한이 있는 기존 프로젝트를 선택해야 합니다.

필요한 IAM 역할

IAM 프로젝트 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 요청하세요.

  • 버킷 프로젝트 관리자(project-bucket-admin): 스토리지 버킷을 만들고, 업데이트하고, 삭제합니다.
  • 버킷 객체 프로젝트 뷰어(project-bucket-object-viewer): 스토리지 버킷 및 객체의 세부정보를 보고 확인합니다.

자세한 내용은 버킷 액세스 권한 부여를 참조하세요.

개발 환경 준비

Management API 서버 또는 Global API 서버에 대해 명령어를 실행하려면 다음을 수행합니다.

  1. kubeconfig 파일이 없는 경우 영역 관리 API 서버의 kubeconfig 파일을 로그인하고 생성합니다.
  2. 이중 영역 버킷의 경우 다음을 수행합니다.
    • 인프라 운영자 (IO)에게 페어링된 영역에 BucketLocationConfig 커스텀 리소스가 생성되었는지 확인합니다.
    • 전역 API 서버의 kubeconfig 파일을 생성합니다.

암호화 리소스 관리

v2 암호화가 적용된 버킷에는 보안 비밀 kekRef와 여러 AEADKey가 생성됩니다. 여기서 kekRef는 사용 중인 활성 기본 AEADKey를 참조하는 데 사용되며 AEADKey에는 버킷에 속한 활성 및 보관처리된 키가 포함됩니다.

버킷의 활성 기본 AEADKeys 새로고침

약 420억 개의 객체 쓰기 후에 버킷의 기본 AEADKeys를 새로고침하는 것이 좋습니다. 이러한 선제적인 조치는 보안을 강화하고 키 소진을 방지합니다. 새로고침 프로세스에서 새 kekRef를 만들고 이전 AEADKeys를 비활성화합니다. 새로고침 프로세스를 시작하려면 버킷과 연결된 kekRef 보안 비밀을 삭제하세요.

다음 명령어를 실행하여 이전 kekRef를 가져올 수 있습니다.

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

그런 다음 다음을 실행하여 기존 kekRef를 삭제할 수 있습니다.

kubectl delete secrets OLD_KEKREF_NAME -n  NAMESPACE_NAME

삭제가 완료되면 다음을 실행하여 AGE를 기반으로 새 kekRef가 생성되었는지 확인할 수 있습니다.

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

AGE를 기반으로 새 기본 AEADKeys가 생성되었는지 확인합니다.

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

버킷의 기본 AEADKeys 순환

버킷의 AEADKey가 손상되면 버킷과 연결된 키 암호화 키를 수동으로 순환해야 합니다.

프로세스를 시작하려면 먼저 활성 기본 키를 새로고침해야 합니다. 이렇게 하면 새로운 활성 기본 AEADKey가 생성되고 이전 키 암호화 키가 비활성화된 것으로 표시됩니다. 기본 키가 새로고침되면 이후 객체 업로드에서는 새 AEADKeys를 키 암호화 키로 사용합니다. 이전 AEADKeys는 폐기되지 않으므로 이전에 해당 키를 사용하여 암호화된 기존 객체를 계속 복호화할 수 있습니다.

그런 다음 단계에 따라 버킷의 객체를 다운로드하고 다시 업로드하고 이전 객체를 삭제합니다.

버킷의 모든 객체를 다시 업로드한 후 비활성 AEADKey와 이전 객체를 삭제할 수 있습니다. AGE에 따라 비활성화된 AEADKeys를 식별합니다.

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

마지막으로 AEADKeys를 삭제하는 단계를 따릅니다.