Amazon S3 암호화 클라이언트 마이그레이션(V2에서 V3로) - AWS SDK for Ruby

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3 암호화 클라이언트 마이그레이션(V2에서 V3로)

참고

S3 암호화 클라이언트의 V1을 사용하는 경우 V3로 마이그레이션하기 전에 먼저 V2로 마이그레이션해야 합니다. V3 V1에서 V2로 마이그레이션하는 방법에 대한 지침은 Amazon S3 암호화 클라이언트 마이그레이션(V1에서 V2로) 섹션을 참조하세요.

이 주제에서는 Amazon Simple Storage Service(Amazon S3) 암호화 클라이언트 버전 2(V2)에서 버전 3(V3)으로 애플리케이션을 마이그레이션하고 마이그레이션 프로세스 전반에 걸쳐 애플리케이션 가용성을 보장하는 방법을 보여줍니다. V3는 보안을 강화하고 데이터 키 변조로부터 보호하기 위해 키 커밋 및 커밋 정책이 포함된 AES GCM을 도입합니다.

마이그레이션 개요

Amazon S3 암호화 클라이언트 버전 3에는 보안 강화를 위한 키 커밋이 포함된 AES GCM이 도입되었습니다. 이 새로운 암호화 알고리즘은 데이터 키 변조에 대한 보호를 제공하고 암호화된 데이터의 무결성을 보장합니다. V3로 마이그레이션하려면 프로세스 전반에 걸쳐 애플리케이션 가용성과 데이터 접근성을 유지하기 위한 신중한 계획이 필요합니다.

이 마이그레이션은 다음 두 단계로 진행됩니다.

1. 새 형식을 읽도록 기존 클라이언트를 업데이트합니다. 먼저 Ruby용 AWS SDK의 업데이트된 버전을 애플리케이션에 배포합니다. 이렇게 하면 기존 V2 암호화 클라이언트가 새 V3 클라이언트가 작성한 객체를 복호화할 수 있습니다. 애플리케이션에서 다중 AWS SDKs 사용하는 경우 각 SDK를 별도로 업그레이드해야 합니다.

2. 암호화 및 복호화 클라이언트를 V3로 마이그레이션합니다. 모든 V2 암호화 클라이언트가 새 형식을 읽을 수 있게 되면 기존 암호화 및 복호화 클라이언트를 해당 V3 버전으로 마이그레이션할 수 있습니다. 여기에는 커밋 정책 구성 및 새 클라이언트 구성 옵션을 사용하도록 코드 업데이트가 포함됩니다.

아직 V1에서 V2로 마이그레이션하지 않은 경우 먼저 해당 마이그레이션을 완료해야 합니다. V1에서 V2로 마이그레이션하는 방법에 대한 자세한 지침은 Amazon S3 암호화 클라이언트 마이그레이션(V1에서 V2로) 섹션을 참조하세요.

V3 기능 이해

Amazon S3 암호화 클라이언트 버전 3에는 커밋 정책과 키 커밋이 포함된 AES GCM이라는 두 가지 주요 보안 기능이 도입되었습니다. 이러한 기능을 이해하는 것은 마이그레이션 전략을 계획하고 암호화된 데이터의 보안을 보장하는 데 필수적입니다.

약정 정책

커밋 정책은 암호화 및 복호화 작업 중에 암호화 클라이언트가 키 커밋을 처리하는 방법을 제어합니다. 키 커밋은 암호화된 데이터를 암호화하는 데 사용된 정확한 키로만 복호화할 수 있도록 하여 특정 유형의 암호화 공격으로부터 보호합니다.

V3 암호화 클라이언트는 세 가지 커밋 정책 옵션을 지원합니다.

FORBID_ENCRYPT_ALLOW_DECRYPT

이 정책은 키 커밋 없이 객체를 암호화하고 키 커밋이 있는 객체와 없는 객체의 복호화를 허용합니다.

  • 암호화 동작: 객체는 V2와 동일한 알고리즘 제품군을 사용하여 키 커밋 없이 암호화됩니다.

  • 복호화 동작: 키 커밋을 사용하거나 사용하지 않고 암호화된 객체를 복호화할 수 있습니다.

  • 보안 영향:이 정책은 키 커밋을 적용하지 않으며 변조를 허용할 수 있습니다. 이 정책으로 암호화된 객체는 키 커밋의 향상된 보안 보호 기능을 활용하지 않습니다. V2 암호화 동작과의 호환성을 유지해야 하는 경우에만 마이그레이션 중에이 정책을 사용합니다.

  • 버전 호환성:이 정책으로 암호화된 객체는 S3 암호화 클라이언트의 모든 V2 및 V3 구현에서 읽을 수 있습니다. V3

REQUIRE_ENCRYPT_ALLOW_DECRYPT

이 정책은 키 커밋으로 객체를 암호화하고 키 커밋이 있는 객체와 없는 객체의 복호화를 허용합니다.

  • 암호화 동작: 객체는 키 커밋과 함께 AES GCM을 사용하여 키 커밋으로 암호화됩니다.

  • 복호화 동작: 키 커밋을 사용하거나 사용하지 않고 암호화된 객체를 복호화하여 이전 버전과의 호환성을 제공할 수 있습니다.

  • 보안 영향: 새 객체는 키 커밋 보호의 이점을 활용하지만 키 커밋이 없는 기존 객체는 계속 읽을 수 있습니다. 이를 통해 마이그레이션 중에 보안과 이전 버전과의 호환성 간에 균형을 맞출 수 있습니다.

  • 버전 호환성:이 정책으로 암호화된 객체는 S3V3 암호화 클라이언트의 V3 및 최신 V2 구현에서만 읽을 수 있습니다.

REQUIRE_ENCRYPT_REQUIRE_DECRYPT

이 정책은 키 커밋으로 객체를 암호화하고 키 커밋으로 암호화된 객체의 복호화만 허용합니다.

  • 암호화 동작: 객체는 키 커밋과 함께 AES GCM을 사용하여 키 커밋으로 암호화됩니다.

  • 복호화 동작: 키 커밋으로 암호화된 객체만 복호화할 수 있습니다. 키 커밋 없이 객체를 복호화하려는 시도는 실패합니다.

  • 보안 영향:이 정책은 모든 작업에 키 커밋을 적용하여 최고 수준의 보안을 제공합니다. 모든 객체가 키 커밋으로 다시 암호화되고 모든 클라이언트가 V3로 업그레이드된 후에만이 정책을 사용합니다.

  • 버전 호환성:이 정책으로 암호화된 객체는 S3V3 암호화 클라이언트의 V3 및 최신 V2 구현에서만 읽을 수 있습니다. 또한이 정책은 V2 또는 V1 클라이언트로 암호화된 객체를 읽는 것을 방지합니다.

참고

마이그레이션을 계획REQUIRE_ENCRYPT_ALLOW_DECRYPT할 때 로 시작하여 이전 버전과의 호환성을 유지하면서 새 객체에 대한 키 커밋의 보안 이점을 얻습니다. 모든 객체를 다시 암호화하고 모든 클라이언트를 V3로 업그레이드한 REQUIRE_ENCRYPT_REQUIRE_DECRYPT 후에만 로 이동합니다.

키 커밋이 있는 AES GCM

키 커밋이 포함된 AES GCM(ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY)은 V3에 도입된 새로운 암호화 알고리즘으로, 데이터 키 변조로부터 보호하여 보안을 강화합니다. 이 알고리즘의 작동 방식과 적용 시기를 이해하는 것이 마이그레이션을 계획하는 데 중요합니다.

가 이전 알고리즘과 ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY 어떻게 다른지

이전 버전의 S3 암호화 클라이언트는 명령 파일에서 데이터 키를 암호화하기 위해 키 커밋 없이 AES CBC 또는 AES GCM을 사용했습니다.는 암호화 프로세스에 암호화 커밋을 ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY 추가하여 암호화된 데이터를 특정 키에 바인딩합니다. 이렇게 하면 공격자가 명령 파일의 암호화된 데이터 키를 변조하여 클라이언트가 잘못된 키로 데이터를 해독하는 것을 방지할 수 있습니다.

키 커밋이 없으면 공격자가 명령 파일의 암호화된 데이터 키를 다른 키로 복호화하여 무단 액세스 또는 데이터 손상을 허용할 수 있도록 수정할 수 있습니다.는 암호화된 데이터 키가 암호화 중에 사용된 원본 키로만 복호화할 수 있도록 하여이 공격을 ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY 방지합니다.

버전 호환성

로 암호화된 객체는 S3 암호화 클라이언트의 V3 구현과 V3 형식 읽기 지원이 포함된 V2의 특정 전환 버전에서만 해독ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY할 수 있습니다. 이 전환 지원이 없는 V2 클라이언트는 로 암호화된 지침 파일을 해독할 수 없습니다ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY.

주의

ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY ( REQUIRE_ENCRYPT_ALLOW_DECRYPT 또는 REQUIRE_ENCRYPT_REQUIRE_DECRYPT 커밋 정책을 사용하여)를 사용하여 암호화를 활성화하기 전에 암호화된 객체를 읽어야 하는 모든 클라이언트가 V3 또는 V3 형식을 지원하는 전환 버전으로 업그레이드되었는지 확인합니다. 전환 지원이 없는 V2 클라이언트가 로 암호화된 객체를 읽으려고 하면 ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY복호화가 실패합니다.

마이그레이션 중에 FORBID_ENCRYPT_ALLOW_DECRYPT 커밋 정책을 사용하여 V3 클라이언트가 키 커밋으로 암호화된 객체를 읽을 수 있도록 허용ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY하면서 없이 계속 암호화할 수 있습니다. 이렇게 하면 먼저 모든 리더를 업그레이드한 다음 키 커밋을 사용하여 암호화로 전환하는 안전한 마이그레이션 경로가 제공됩니다.

새 형식을 읽도록 기존 클라이언트를 업데이트하세요

V3 암호화 클라이언트는 V2 클라이언트가 기본적으로 지원하지 않는 암호화 알고리즘과 키 커밋 기능을 사용합니다. 마이그레이션의 첫 번째 단계는 V2 복호화 클라이언트를 V3 암호화 객체를 읽을 수 있는 AWS SDK for Ruby 버전으로 업데이트하는 것입니다. 이 단계를 완료하면 애플리케이션의 V2 클라이언트가 V3 암호화 클라이언트로 암호화된 객체를 해독할 수 있습니다.

V3 클라이언트로 암호화된 객체( REQUIRE_ENCRYPT_ALLOW_DECRYPT 또는 REQUIRE_ENCRYPT_REQUIRE_DECRYPT 커밋 정책을 사용하는 객체)를 읽으려면 aws-sdk-s3젬 버전 1.93.0 이상을 사용해야 합니다. 이 버전에는 키 커밋이 있는 AES GCM으로 암호화된 객체의 복호화에 대한 지원이 포함되어 있습니다.

명령줄에서 설치

명령줄에서 aws-sdk-s3 Gem을 설치하는 프로젝트의 경우 버전 옵션을 사용하여 최소 버전 1.208.0이 설치되었는지 확인합니다.

gem install aws-sdk-s3 -v '>= 1.208.0'

Gemfile 사용

Gemfile을 사용하여 종속성을 관리하는 프로젝트의 경우 aws-sdk-s3 Gem의 최소 버전을 1.208.0으로 설정합니다. 예:

gem 'aws-sdk-s3', '>= 1.208.0'
  1. Gemfile을 수정하여 최소 버전을 지정합니다.

  2. 를 실행bundle update aws-sdk-s3하여 Gem을 업데이트합니다.

  3. 버전을 확인하려면 bundle info aws-sdk-s3을 실행합니다.

참고

최신 버전으로 업데이트한 후 기존 V2 암호화 클라이언트는 V3 클라이언트로 암호화된 객체를 복호화할 수 있습니다. 그러나 다음 섹션에 설명된 대로 V3로 마이그레이션할 때까지 V2 알고리즘을 사용하여 새 객체를 계속 암호화합니다.

암호화 및 복호화 클라이언트를 V3로 마이그레이션

새 암호화 형식을 읽도록 클라이언트를 업데이트한 후 애플리케이션을 V3 암호화 및 복호화 클라이언트로 업데이트할 수 있습니다. 다음 단계에서는 V2에서 V3로 코드를 성공적으로 마이그레이션하는 방법을 보여줍니다.

V3 암호화 클라이언트를 사용하도록 코드를 업데이트하기 전에 이전 단계를 따르고 aws-sdk-s3 Gem 버전 1.93.0 이상을 사용하고 있는지 확인합니다.

참고

AES-GCM으로 해독할 때는 해독된 데이터를 사용하기 전에 전체 객체를 끝까지 읽습니다. 이는 객체가 암호화된 이후 수정되지 않았는지 확인하기 위한 것입니다.

V3 클라이언트 구성

V3 암호화 클라이언트에는 키 커밋 동작과 이전 버전과의 호환성을 제어하는 새로운 구성 옵션이 도입되었습니다. 성공적인 마이그레이션을 위해서는 이러한 옵션을 이해하는 것이 중요합니다.

commitment_policy

commitment_policy 파라미터는 암호화 및 복호화 작업 중에 암호화 클라이언트가 키 커밋을 처리하는 방법을 제어합니다. 이는 V3 클라이언트에 가장 중요한 구성 옵션입니다.

  • :require_encrypt_allow_decrypt - 키 커밋으로 새 객체를 암호화하고 키 커밋 유무에 관계없이 객체의 복호화를 허용합니다. 이는 기존 V2 객체와의 이전 버전 호환성을 유지하면서 새 객체에 대한 보안을 강화하므로 마이그레이션에 권장되는 설정입니다.

  • :forbid_encrypt_allow_decrypt - 키 커밋 없이 새 객체를 암호화하고(V2 알고리즘 사용) 키 커밋 유무에 관계없이 객체의 복호화를 허용합니다. 일부 클라이언트가 아직 V3 암호화 객체를 읽을 수 없는 경우와 같이 마이그레이션 중에 V2 암호화 동작을 유지해야 하는 경우에만이 설정을 사용합니다. V3

  • :require_encrypt_require_decrypt - 키 커밋으로 새 객체를 암호화하고 키 커밋으로 암호화된 객체의 복호화만 허용합니다. 모든 객체가 키 커밋으로 다시 암호화되고 모든 클라이언트가 V3로 업그레이드된 후에만이 설정을 사용합니다.

security_profile

security_profile 파라미터는 이전 암호화 클라이언트 버전에서 작성된 객체 읽기에 대한 지원을 결정합니다. 이 파라미터는 마이그레이션 중에 이전 버전과의 호환성을 유지하는 데 필수적입니다.

  • :v3_and_legacy - V3 클라이언트가 V1 및 V2 암호화 클라이언트로 암호화된 객체를 복호화할 수 있습니다. 마이그레이션 중에이 설정을 사용하여 V3 클라이언트가 기존의 모든 암호화된 객체를 읽을 수 있도록 합니다.

  • :v3 - V3 클라이언트가 V2 암호화 클라이언트로 암호화된 객체만 해독하도록 허용합니다. 이미 모든 V1 객체를 V2 형식으로 마이그레이션한 경우이 설정을 사용합니다.

  • 지정하지 않으면 클라이언트는 V3 클라이언트로 암호화된 객체만 해독합니다. 레거시 객체가 없는 새 애플리케이션 개발에만 사용합니다.

envelope_location

envelope_location 파라미터는 암호화 메타데이터(암호화된 데이터 키 포함)가 저장되는 위치를 결정합니다. 이 파라미터는 키 커밋이 있는 AES GCM으로 보호되는 객체에 영향을 줍니다.

  • :metadata (기본값) - S3 객체의 메타데이터 헤더에 암호화 메타데이터를 저장합니다. 이는 기본 동작이며 대부분의 사용 사례에 권장됩니다. 메타데이터 스토리지를 사용하는 경우 키 커밋이 있는 AES GCM은 적용되지 않습니다.

  • :instruction_file - 구성 가능한 접미사가 있는 별도의 S3 객체(지침 파일)에 암호화 메타데이터를 저장합니다. 지침 파일을 사용할 때 키 커밋이 있는 AES GCM은 암호화된 데이터 키가 변조되지 않도록 보호합니다. 데이터 키 자체에 대한 키 커밋에서 제공하는 추가 보안이 필요한 경우이 설정을 사용합니다.

를 사용할 때 선택적으로 instruction_file_suffix 파라미터를 지정하여 명령 파일 객체에 사용되는 접미사를 사용자 :instruction_file지정할 수 있습니다. 기본 접미사는 입니다.instruction.

각 구성 옵션을 사용해야 하는 경우

마이그레이션 중에 다음 권장 구성 전략을 따릅니다.

  1. 초기 마이그레이션: commitment_policy: :require_encrypt_allow_decrypt 및를 설정합니다security_profile: :v3_and_legacy. 이렇게 하면 V3 클라이언트가 키 커밋으로 새 객체를 암호화하는 동시에 기존 V1 및 V2 객체를 모두 복호화할 수 있습니다.

  2. 모든 클라이언트가 업그레이드된 후: 키 커밋 보호가 필요한 모든 객체를 다시 암호화할 security_profile: :v3_and_legacy 때까지 commitment_policy: :require_encrypt_allow_decrypt 및를 계속 사용합니다.

  3. 전체 V3 적용: 모든 객체를 키 커밋으로 다시 암호화하고 더 이상 V1/V2 객체를 읽을 필요가 없는 경우에만 선택적으로 security_profile 파라미터를 전환commitment_policy: :require_encrypt_require_decrypt하고 제거할 수 있습니다(또는 V2 객체가 여전히 존재하는 :v2 경우 로 설정).

의 경우 변경할 특별한 이유가 없는 한 기존 스토리지 방법(:metadata 또는 :instruction_file)을 envelope_location계속 사용합니다. 현재 메타데이터 스토리지를 사용하고 있고 데이터 키에 대한 키 커밋이 포함된 AES GCM의 추가 보안을 원하는 경우 로 전환할 수 있지만:instruction_file, 이렇게 하려면 이러한 객체를 읽는 모든 클라이언트를 업데이트해야 합니다.

암호화 및 복호화 클라이언트를 V3로 마이그레이션

새 암호화 형식을 읽도록 클라이언트를 업데이트한 후 애플리케이션을 V3 암호화 및 복호화 클라이언트로 업데이트할 수 있습니다. 다음 예제에서는 V2에서 V3로 코드를 성공적으로 마이그레이션하는 방법을 보여줍니다.

V3 암호화 클라이언트 사용

마이그레이션 전(V2)

require 'aws-sdk-s3' # Create V2 encryption client with KMS client = Aws::S3::EncryptionV2::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v2_and_legacy, commitment_policy: :forbid_encrypt_allow_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

마이그레이션 중(이전 버전과의 호환성을 갖춘 V3)

require 'aws-sdk-s3' # Create V3 encryption client with KMS client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

마이그레이션 후(V3)

require 'aws-sdk-s3' # Create V3 encryption client with KMS client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3, # Use the commitment policy (REQUIRE_ENCRYPT_REQUIRE_DECRYPT) # This encrypts with key commitment and does not decrypt V2 objects commitment_policy: :require_encrypt_require_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

V3의 주요 차이점은 commitment_policy 파라미터를 추가하는 것입니다. 로 설정:require_encrypt_require_decrypt하면 새 객체가 키 커밋으로 암호화되고 클라이언트가 키 커밋으로 암호화된 객체만 복호화하여 데이터 키 변조에 대한 보안을 강화할 수 있습니다.

put_object 호출 자체는 변경되지 않습니다. 모든 보안 개선 사항은 클라이언트 수준에서 구성됩니다.

추가 예제

이 섹션에서는 V2에서 V3로 마이그레이션하는 동안 유용할 수 있는 특정 마이그레이션 시나리오 및 구성 옵션에 대한 추가 예제를 제공합니다.

명령 파일과 메타데이터 스토리지 비교

S3 암호화 클라이언트는 암호화 메타데이터(암호화된 데이터 키 포함)를 S3 객체의 메타데이터 헤더 또는 별도의 지침 파일이라는 두 위치에 저장할 수 있습니다. 스토리지 방법 선택은 키 커밋 보호를 통해 AES GCM의 이점을 활용하는 객체에 영향을 미칩니다.

메타데이터 스토리지(기본값)

기본적으로 암호화 클라이언트는 암호화 메타데이터를 S3 객체의 메타데이터 헤더에 저장합니다. 이는 객체와 함께 암호화 메타데이터를 유지하고 별도의 명령 파일 객체를 관리할 필요가 없으므로 대부분의 사용 사례에 권장되는 접근 방식입니다.

require 'aws-sdk-s3' # Create V3 encryption client with metadata storage (default) client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt, envelope_location: :metadata # Explicitly set to metadata (this is the default) ) # Encrypt and upload object # Encryption metadata is stored in the object's metadata headers client.put_object(bucket: 'my-bucket', key: 'my-object',body: 'secret data')

메타데이터 스토리지를 사용하는 경우 키 커밋이 있는 AES GCM은 암호화된 데이터 키에 적용되지 않습니다. 그러나 콘텐츠 암호화는 commitment_policy: :require_encrypt_allow_decrypt 또는를 사용할 때 키 커밋의 이점을 여전히 누릴 수 있습니다:require_encrypt_require_decrypt.

지침 파일 스토리지

또는 명령 파일이라는 별도의 S3 객체에 암호화 메타데이터를 저장하도록 암호화 클라이언트를 구성할 수 있습니다. V3와 함께 지침 파일을 사용하는 경우 암호화된 데이터 키는 키 커밋이 있는 AES GCM으로 보호되므로 데이터 키 변조에 대한 추가 보안을 제공합니다.

require 'aws-sdk-s3' # Create V3 encryption client with instruction file storage client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt, envelope_location: :instruction_file, # Store metadata in separate instruction file instruction_file_suffix: '.instruction' # Optional: customize the suffix (default is '.instruction') ) # Encrypt and upload object # Encryption metadata is stored in a separate object: 'my-object.instruction' client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # When retrieving the object, the client automatically reads the instruction file resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

envelope_location: :instruction_file를 사용할 때 암호화 클라이언트는 두 개의 S3 객체를 생성합니다.

  1. 암호화된 데이터 객체(예: my-object)

  2. 암호화 메타데이터가 포함된 지침 파일(예: my-object.instruction)

instruction_file_suffix 파라미터를 사용하면 명령 파일에 사용되는 접미사를 사용자 지정할 수 있습니다. 기본값은 .instruction입니다.

각 스토리지 방법을 사용해야 하는 경우

  • 대부분의 시나리오에서는 메타데이터 스토리지를 사용합니다. 암호화 메타데이터가 객체와 함께 이동하므로 객체 관리를 간소화합니다.

  • 객체 메타데이터 크기가 문제가 되거나 암호화된 객체와 암호화 메타데이터를 분리해야 하는 경우 명령 파일 스토리지를 사용합니다. 지침 파일을 사용하려면 S3 객체(암호화된 객체와 해당 명령 파일)를 하나 대신 관리해야 합니다.

주의

메타데이터 스토리지에서 명령 파일 스토리지로(또는 그 반대로) 변경하는 경우 새 스토리지 방법으로 구성된 클라이언트는 이전 스토리지 방법으로 암호화된 기존 객체를 읽을 수 없습니다. 스토리지 방법을 신중하게 계획하고 애플리케이션 전반에서 일관성을 유지합니다.