기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Encryption SDK 마이그레이션 및 배포 방법
AWS Encryption SDK 1.7.x 이하 버전에서 2.0.x 이상 버전으로 마이그레이션하는 경우 키 커밋을 통한 암호화로 안전하게 전환해야 합니다. 그러지 않으면 애플리케이션에서 복호화할 수 없는 사이퍼텍스트가 만들어집니다. AWS KMS 마스터 키 제공자를 사용하는 경우 엄격 모드 또는 검색 모드에서 마스터 키 제공자를 생성하는 새 생성자로 업데이트해야 합니다.
참고
이 항목은 AWS Encryption SDK의 이하 버전에서 2.0.x 이상 버전으로 마이그레이션하는 사용자를 대상으로 합니다. AWS Encryption SDK를 처음 사용하는 경우 기본 설정으로 사용 가능한 최신 버전을 즉시 사용할 수 있습니다.
읽어야 하는 사이퍼텍스트를 복호화할 수 없는 심각한 상황을 피하려면 여러 단계를 거쳐 마이그레이션하고 배포하는 것이 좋습니다. 다음 단계를 시작하기 전에 각 단계가 완료되고 완전히 배포되었는지 확인하세요. 이는 여러 호스트가 있는 분산 애플리케이션에 특히 중요합니다.
1단계: 애플리케이션을 최신 1.x 버전으로 업데이트합니다.
사용 중인 프로그래밍 언어의 최신 1.x 버전으로 업데이트합니다. 2단계를 시작하기 전에 신중하게 테스트하고 변경 내용을 배포한 다음 업데이트가 모든 대상 호스트에 전파되었는지 확인합니다.
중요
최신 1.x 버전이 AWS Encryption SDK의 1.7.x 또는 이상 버전인지 확인하세요.
AWS Encryption SDK의 최신 1.x 버전은 AWS Encryption SDK의 레거시 버전과 하위 호환되며 2.0.x 이상 버전과 상위 호환됩니다. 여기에는 버전 2.0.x에 있는 새 기능이 포함되지만 해당 마이그레이션을 위해 설계된 안전한 기본값을 포함해야 합니다. 이를 통해 필요한 경우 AWS KMS 마스터 키 제공자를 업그레이드하고 키 커밋으로 사이퍼텍스트를 복호화할 수 있는 알고리즘 제품군을 완전히 배포할 수 있습니다.
-
레거시 AWS KMS 마스터 키 제공자의 생성자를 포함하여 더 이상 사용되지 않는 요소를 교체하세요. Python
의 경우 지원 중단 경고를 켭니다. 최신 1.x 버전에서 더 이상 사용되지 않는 코드 요소는 2.0.x 이상 버전에서 제거되었습니다. -
커밋 정책을
ForbidEncryptAllowDecrypt
로 명시적으로 설정합니다. 최신 1.x 버전에서 유일하게 유효한 값이지만 이 릴리스에 도입된 API를 사용할 때 해당 설정이 필요합니다. 버전 2.0.x 이상 버전으로 마이그레이션할 때 애플리케이션이 키 커밋 없이 암호화된 사이퍼텍스트를 거부하는 것을 방지합니다. 자세한 내용은 커밋 정책 설정 섹션을 참조하세요. -
AWS KMS 마스터 키 제공자를 사용하는 경우 엄격 모드 및 검색 모드를 지원하는 마스터 키 제공자로 기존 마스터 키 제공자를 업데이트해야 합니다. 이 업데이트는 AWS Encryption SDK for Java, AWS Encryption SDK for Python, AWS Encryption CLI에 필요합니다. 검색 모드에서 마스터 키 제공자를 사용하는 경우 사용되는 래핑 키를 특정 AWS 계정의 래핑 키로 제한하는 검색 필터를 구현하는 것이 좋습니다. 이 업데이트는 선택 사항이지만 권장되는 모범 사례입니다. 자세한 내용은 AWS KMS 마스터 키 공급자 업데이트 섹션을 참조하세요.
-
AWS KMS 검색 키링을 사용하는 경우 복호화에 사용되는 래핑 키를 특정 AWS 계정의 래핑 키로 제한하는 검색 필터를 구현하는 것이 좋습니다. 이 업데이트는 선택 사항이지만 권장되는 모범 사례입니다. 자세한 내용은 AWS KMS 키링 업데이트 섹션을 참조하세요.
2단계: 애플리케이션을 최신 버전으로 업데이트
최신 1. x 버전을 모든 호스트에 배포했으면 2.0.x 이상 버전으로 업그레이드할 수 있습니다. 버전 2.0.x에는 AWS Encryption SDK의 모든 이하 버전에 대한 주요 변경 사항이 포함되어 있습니다. 하지만 1단계에서 권장하는 대로 코드를 변경하면 최신 버전으로 마이그레이션할 때 오류를 피할 수 있습니다.
최신 버전으로 업데이트하기 전에 커밋 정책이 일관되게 ForbidEncryptAllowDecrypt
로 설정되어 있는지 확인하세요. 그런 다음 데이터 구성에 따라 편할 때에 RequireEncryptAllowDecrypt
로 마이그레이션한 다음 기본 설정인 RequireEncryptRequireDecrypt
로 할 수 있습니다. 다음 패턴과 같이 일련의 전환 단계를 수행하는 것이 좋습니다.
-
커밋 정책을
ForbidEncryptAllowDecrypt
로 설정한 상태에서 시작하세요. AWS Encryption SDK는 키 커밋으로 메시지를 복호화할 수 있지만 아직 키 커밋을 사용해 암호화하지는 않습니다. -
준비가 완료되면 약정 정책을
RequireEncryptAllowDecrypt
로 업데이트하세요. AWS Encryption SDK가 키 커밋을 사용해 데이터 암호화를 시작합니다. 키 커밋 사용 여부와 관계없이 사이퍼텍스트를 복호화할 수 있습니다.커밋 정책을
RequireEncryptAllowDecrypt
로 업데이트하기 전에 최신 1.x 버전이 생성한 사이퍼텍스트를 복호화하는 애플리케이션의 호스트를 포함하여 모든 호스트에 배포되어 있는지 확인합니다. AWS Encryption SDK의 버전 1.7.x보다 이하 버전은 키 커밋으로 암호화된 메시지를 복호화할 수 없습니다.또한 아직 키 커밋 없이 사이퍼텍스트를 처리하고 있는지 여부를 측정하는 지표를 애플리케이션에 추가하기에 좋은 타이밍입니다. 이렇게 하면 커밋 정책 설정을 언제
RequireEncryptRequireDecrypt
로 업데이트해도 안전한지 판단할 수 있습니다. Amazon SQS 대기열의 메시지를 암호화하는 것과 같은 일부 애플리케이션의 경우 이하 버전에서 암호화된 모든 사이퍼텍스트가 다시 암호화되거나 삭제될 때까지 오래 기다려야 할 수 있습니다. 암호화된 S3 객체와 같은 다른 애플리케이션의 경우 모든 객체를 다운로드하고, 재암호화, 재업로드해야 할 수 있습니다. -
키 커밋 없이 암호화된 메시지가 없는 것이 확실하면 약정 정책을
RequireEncryptRequireDecrypt
로 업데이트할 수 있습니다. 이 값을 사용하면 항상 키 커밋을 통해 데이터가 암호화되고 복호화됩니다. 이 설정은 기본값이므로 명시적으로 설정할 필요는 없지만 이 설정을 사용하는 것이 좋습니다. 명시적 설정은 애플리케이션에서 키 커밋 없이 암호화된 사이퍼텍스트를 발견할 경우 필요할 수 있는 디버깅 및 잠재적 롤백에 도움이 됩니다.