AWS Encryption CLI 사용 방법 - AWS Encryption SDK

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

AWS Encryption CLI 사용 방법

이 주제에서는 AWS Encryption CLI의 파라미터 사용 방법을 설명합니다. 예제는 AWS Encryption CLI의 예제 섹션을 참조하세요. 전체 설명서는 문서 읽기를 참조하세요. 이 예제에 표시된 구문은 AWS Encryption CLI 버전 2.1.x 이상용입니다.

참고

4.0.0 이전의 AWS Encryption CLI 버전은 지원 종료 단계에 있습니다.

코드나 데이터를 변경하지 않고 버전 2.1.x 이상에서 AWS Encryption CLI의 최신 버전으로 안전하게 업데이트할 수 있습니다. 그러나 버전 2.1.x에 도입된 새로운 보안 기능은 이하 버전과 호환되지 않습니다. 버전 1.7.x 이하에서 업데이트하려면 먼저 AWS Encryption CLI의 최신 버전 1.x로 업데이트해야 합니다. 자세한 내용은 AWS Encryption SDK 마이그레이션 섹션을 참조하세요.

새로운 보안 기능은 원래 AWS Encryption CLI 버전 1.7.x 및 2.0.x에서 릴리스되었습니다. 그러나 AWS Encryption CLI 버전 1.8.x는 버전 1.7.x를 대체하고 AWS Encryption CLI 2.1.x는 2.0.x를 대체합니다. 자세한 내용은 GitHub의 aws-encryption-sdk-cli 리포지토리에서 관련 보안 권고를 참조하세요.

암호화된 데이터 키를 제한하는 보안 기능을 사용하는 방법을 보여주는 예제는 암호화된 데이터 키 제한 섹션을 참조하세요.

AWS KMS 다중 리전 키를 사용하는 방법을 보여주는 예제는 멀티 리전 사용 AWS KMS keys 섹션을 참조하세요.

데이터 암호화 및 복호화 방법

AWS Encryption CLI는 AWS Encryption SDK의 기능을 사용하여 데이터를 손쉽고 안전하게 암호화 및 복호화합니다.

참고

--master-keys 파라미터는 AWS Encryption CLI의 버전 1.8.x에서 더 이상 사용되지 않으며 버전 2.1x에서 제거되었습니다. 대신 --wrapping-keys 파라미터를 사용합니다. 버전 2.1.x부터 암호화 및 복호화 시 --wrapping-keys 파라미터가 필요합니다. 자세한 내용은 AWS Encryption SDK CLI 구문 및 파라미터 참조 섹션을 참조하세요.

  • AWS Encryption CLI에서 데이터를 암호화할 때는 일반 텍스트 데이터 및 AWS Key Management Service(AWS KMS)의 AWS KMS key와 같은 래핑 키(또는 마스터 키)를 지정합니다. 사용자 지정 마스터 키 공급자를 사용하는 경우 공급자를 지정해야 합니다. 또한 암호화 작업에 대한 암호화된 메시지 및 메타데이터의 출력 위치를 지정할 수 있습니다. 암호화 컨텍스트는 선택 사항이지만 권장됩니다.

    버전 1.8.x에서, --wrapping-keys 파라미터를 사용하는 경우 --commitment-policy 파라미터가 필요하며, 그러지 않으면 유효하지 않습니다. 버전 2.1.x부터 --commitment-policy 파라미터는 선택 사항이지만 권장됩니다.

    aws-encryption-cli --encrypt --input myPlaintextData \ --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab \ --output myEncryptedMessage \ --metadata-output ~/metadata \ --encryption-context purpose=test \ --commitment-policy require-encrypt-require-decrypt

    AWS Encryption CLI는 고유한 데이터 키로 데이터를 암호화합니다. 그러면 지정한 래핑 키에서 데이터 키가 암호화됩니다. 작업에 대한 암호화된 메시지 및 메타데이터를 반환합니다. 암호화된 메시지에는 암호화된 데이터(사이퍼텍스트) 및 암호화된 데이터 키 사본이 포함되어 있습니다. 데이터 키의 저장, 관리 또는 분실에 대해 걱정할 필요가 없습니다.

     

  • 데이터를 복호화할 때는 암호화된 메시지, 선택적 암호화 컨텍스트, 일반 텍스트 출력 및 메타데이터의 위치를 전달합니다. 또한 AWS Encryption CLI에서 메시지를 복호화하는 데 사용할 수 있는 래핑 키를 지정하거나, 메시지를 암호화한 래핑 키를 사용할 수 있도록 AWS Encryption CLI에 지시합니다.

    버전 1.8.x부터 복호화 시 --wrapping-keys 파라미터는 선택 사항이지만 권장됩니다. 버전 2.1.x부터 암호화 및 복호화 시 --wrapping-keys 파라미터가 필요합니다.

    복호화할 때 --wrapping-keys 파라미터의 key 속성을 사용하여 데이터를 복호화하는 래핑 키를 지정할 수 있습니다. 복호화 시 AWS KMS 래핑 키 지정은 선택 사항이지만 사용하지 않으려는 키를 사용하지 않도록 하는 것이 모범 사례입니다. 사용자 지정 마스터 키 공급자를 사용하는 경우 공급자 및 래핑 키를 지정해야 합니다.

    key 속성을 사용하지 않는 경우 --wrapping-keys 파라미터의 discovery 속성true로 설정해야 하며, 이렇게 해야 AWS Encryption CLI에서 메시지를 암호화한 래핑 키를 사용하여 복호화할 수 있습니다.

    암호화된 데이터 키가 너무 많은 잘못된 형식의 메시지를 복호화하지 않도록 --max-encrypted-data-keys 파라미터를 사용하는 것이 모범 사례입니다. 암호화된 데이터 키의 예상 수(암호화에 사용되는 각 래핑 키당 하나) 또는 합리적인 최대값(예: 5개)을 지정합니다. 자세한 내용은 암호화된 데이터 키 제한 섹션을 참조하세요.

    --buffer 파라미터는 디지털 서명이 있는지 확인하는 등 모든 입력이 처리된 후에만 일반 텍스트를 반환합니다.

    --decrypt-unsigned 파라미터는 사이퍼텍스트를 복호화하고, 복호화 전에 메시지가 서명되지 않도록 합니다. --algorithm 파라미터를 사용하고 디지털 서명이 없는 알고리즘 제품군을 선택하여 데이터를 암호화한 경우 이 파라미터를 사용합니다. 사이퍼텍스트가 서명된 경우 복호화가 실패합니다.

    --decrypt 또는 --decrypt-unsigned를 복호화에 사용할 수 있지만 둘 다 사용할 수는 없습니다.

    aws-encryption-cli --decrypt --input myEncryptedMessage \ --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab \ --output myPlaintextData \ --metadata-output ~/metadata \ --max-encrypted-data-keys 1 \ --buffer \ --encryption-context purpose=test \ --commitment-policy require-encrypt-require-decrypt

    AWS Encryption CLI는 래핑 키를 사용하여 암호화된 메시지의 데이터 키를 복호화합니다. 그런 다음 데이터 키를 사용하여 해당 데이터를 복호화합니다. 작업에 대한 일반 텍스트 데이터 및 메타데이터를 반환합니다.

래핑 키를 지정하는 방법

AWS Encryption CLI에서 데이터를 암호화하는 경우 래핑 키(또는 마스터 키)를 하나 이상 지정해야 합니다. AWS Key Management Service(AWS KMS)의 AWS KMS keys, 사용자 지정 마스터 키 공급자의 래핑 키 또는 둘 다를 사용할 수 있습니다. 사용자 지정 마스터 키 공급자는 호환되는 모든 Python 마스터 키 공급자일 수 있습니다.

버전 1.8.x 이상에서 래핑 키를 지정하려면 --wrapping-keys 파라미터(-w)를 사용합니다. 이 파라미터의 값은 attribute=value 형식의 속성 모음입니다. 사용하는 속성은 마스터 키 공급자 및 명령에 따라 달라집니다.

  • AWS KMS. 암호화 명령에서 key 속성이 있는 --wrapping-keys 파라미터를 지정해야 합니다. 버전 2.1.x부터 복호화 명령에 --wrapping-keys 파라미터도 필요합니다. 복호화할 때는 --wrapping-keys 파라미터에 값이 truekey 속성 또는 discovery 속성이 있어야 합니다(둘 다는 아님). 다른 속성은 선택 사항입니다.

  • 사용자 지정 마스터 키 공급자. 모든 명령에 --wrapping-keys 파라미터를 지정해야 합니다. 파라미터 값에는 keyprovider 속성이 있어야 합니다.

동일한 명령에 여러 --wrapping-keys 파라미터 및 여러 key 속성을 포함할 수 있습니다.

주요 파라미터 속성 래핑

--wrapping-keys 파라미터 값은 다음 속성 및 해당 값으로 구성됩니다. 모든 암호화 명령에는 --wrapping-keys(또는 --master-keys) 파라미터가 필요합니다. 버전 2.1.x부터 복호화 시 --wrapping-keys 파라미터도 필요합니다.

속성 이름 또는 값에 공백이나 특수 문자가 포함된 경우 이름과 값을 모두 인용 부호로 묶습니다. 예: --wrapping-keys key=12345 "provider=my cool provider".

Key: 래핑 키 지정

key 속성을 사용하여 래핑 키를 식별합니다. 암호화할 때 값은 마스터 키 공급자가 인식하는 모든 키 식별자일 수 있습니다.

--wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab

암호화 명령에는 하나 이상의 key 속성 및 값을 포함해야 합니다. 여러 래핑 키로 데이터 키를 암호화하려면 여러 key 속성을 사용합니다.

aws-encryption-cli --encrypt --wrapping-keys key=1234abcd-12ab-34cd-56ef-1234567890ab key=1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

AWS KMS keys를 사용하는 암호화 명령에서 key의 값은 키 ID, 해당 키 ARN, 별칭 이름 또는 별칭 ARN일 수 있습니다. 예를 들어, 이 암호화 명령은 key 속성 값에 별칭 ARN을 사용합니다. AWS KMS key의 키 식별자에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드키 식별자를 참조하세요.

aws-encryption-cli --encrypt --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

사용자 지정 마스터 키 공급자를 사용하는 복호화 명령에서 keyprovider 속성이 필요합니다.

\\ Custom master key provider aws-encryption-cli --decrypt --wrapping-keys provider='myProvider' key='100101'

AWS KMS를 사용하는 복호화 명령에서 key 속성을 사용하여 복호화에 사용할 AWS KMS keys를 지정하거나 값이 truediscovery 속성을 지정하면 AWS Encryption CLI에서 메시지를 암호화하는 데 사용된 모든 AWS KMS key을 사용할 수 있습니다. AWS KMS key를 지정하는 경우 메시지를 암호화하는 데 사용되는 래핑 키 중 하나여야 합니다.

래핑 키를 지정하는 것이 AWS Encryption SDK 모범 사례입니다. 이렇게 하면 사용하고자 하는 AWS KMS key를 사용할 수 있도록 보장합니다.

복호화 명령에서 key 속성 값은 키 ARN이어야 합니다.

\\ AWS KMS key aws-encryption-cli --decrypt --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
Discovery: 복호화 시 AWS KMS key 사용

복호화 시 AWS KMS keys 사용을 제한할 필요가 없는 경우 값이 truediscovery 속성을 사용할 수 있습니다. 값이 true인 경우 AWS Encryption CLI에서 메시지를 암호화한 AWS KMS key를 사용하여 복호화할 수 있습니다. discovery 속성을 지정하지 않는 경우 discovery는 false(기본값)입니다. discovery 속성은 복호화 명령에서만 유효하며 메시지가 AWS KMS keys로 암호화된 경우에만 유효합니다.

값이 truediscovery 속성은 key 속성을 사용하여 AWS KMS keys를 지정하는 대신 사용할 수 있습니다. 메시지를 AWS KMS keys로 복호화할 때는 각 --wrapping-keys 파라미터에 값이 truekey 속성 또는 discovery 속성이 있어야 합니다(둘 다는 아님).

discovery가 true인 경우 discovery-partitiondiscovery-account 속성을 사용하여 사용된 AWS KMS keys를 지정하는 AWS 계정의 속성으로 제한하는 것이 모범 사례입니다. 다음 예제에서 AWS Encryption CLI는 discovery 속성을 사용하여 지정된 AWS 계정에서 AWS KMS key를 사용할 수 있습니다.

aws-encryption-cli --decrypt --wrapping-keys \ discovery=true \ discovery-partition=aws \ discovery-account=111122223333 \ discovery-account=444455556666
Provider: 마스터 키 공급자 지정

provider 속성은 마스터 키 공급자를 식별합니다. 기본값은 aws-kms이며, 이는 AWS KMS를 나타냅니다. 다른 마스터 키 공급자를 사용하는 경우 provider 속성이 필요합니다.

--wrapping-keys key=12345 provider=my_custom_provider

사용자 지정(비AWS KMS) 마스터 키 공급자 사용에 대한 자세한 내용은 AWSEncryption CLI 리포지토리의 README 파일에서 고급 구성 항목을 참조하세요.

Region: AWS 리전 지정

region 속성을 사용하여 AWS KMS key의 AWS 리전을 지정합니다. 이 속성은 암호화 명령에서, 그리고 마스터 키 공급자가 AWS KMS인 경우에만 유효합니다.

--encrypt --wrapping-keys key=alias/primary-key region=us-east-2

AWS Encryption CLI 명령은 ARN과 같은 리전이 포함된 경우 key 속성 값에 지정된 AWS 리전을 사용합니다. key 값이 AWS 리전을 지정하면 region 속성이 무시됩니다.

region 속성은 다른 리전 사양보다 우선합니다. region 속성을 사용하지 않는 경우 AWS Encryption CLI 명령은 AWS CLI 명명된 프로필(있는 경우) 또는 기본 프로필에 지정된 AWS 리전을 사용합니다.

Profile: 명명된 프로필 지정

profile 속성을 사용하여 AWS CLI 명명된 프로필을 지정합니다. 명명된 프로필에는 보안 인증 및 AWS 리전이 포함될 수 있습니다. 이 속성은 마스터 키 공급자가 AWS KMS인 경우에만 유효합니다.

--wrapping-keys key=alias/primary-key profile=admin-1

profile 속성을 사용하여 암호화 및 복호화 명령에서 대체 보안 인증을 지정할 수 있습니다. 암호화 명령에서 AWS Encryption CLI는 key 값에 리전이 포함되지 않고 region 속성이 없는 경우에만 명명된 프로필의 AWS 리전을 사용합니다. 복호화 명령에서 이름 프로필 내 AWS 리전은 무시됩니다.

여러 래핑 키를 지정하는 방법

각 명령에 여러 래핑 키(또는 마스터 키)를 지정할 수 있습니다.

래핑 키를 두 개 이상 지정하면 첫 번째 래핑 키가 데이터 암호화에 사용되는 데이터 키를 생성 및 암호화합니다. 다른 래핑 키는 동일한 데이터 키를 암호화합니다. 결과적으로 생성되는 암호화된 메시지에는 암호화된 데이터("사이퍼텍스트")와 암호화된 데이터 키 모음(각 래핑 키로 하나씩 암호화됨)이 포함됩니다. 모든 래핑은 암호화된 데이터 키 하나를 복호화한 다음 데이터를 복호화할 수 있습니다.

여러 래핑 키는 다음과 같이 두 가지 방법으로 지정할 수 있습니다.

  • --wrapping-keys 파라미터 값에 여러 key 속성을 포함합니다.

    $key_oregon=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab $key_ohio=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef --wrapping-keys key=$key_oregon key=$key_ohio
  • 동일한 명령에 여러 --wrapping-keys 파라미터를 포함합니다. 지정한 속성 값이 명령의 일부 래핑 키에 적용되지 않는 경우 다음 구문을 사용합니다.

    --wrapping-keys region=us-east-2 key=alias/test_key \ --wrapping-keys region=us-west-1 key=alias/test_key

값이 truediscovery 속성을 사용하면 AWS Encryption CLI에서 메시지를 암호화한 AWS KMS key를 사용할 수 있습니다. 동일한 명령에서 여러 --wrapping-keys 파라미터를 사용하는 경우 --wrapping-keys 파라미터의 discovery=true를 사용하면 다른 --wrapping-keys 파라미터에 있는 key 속성의 제한을 효과적으로 재정의할 수 있습니다.

예를 들어, 다음 명령에서 첫 번째 --wrapping-keys 파라미터의 key 속성은 AWS Encryption CLI를 지정된 AWS KMS key로 제한합니다. 그러나 두 번째 --wrapping-keys 파라미터의 discovery 속성을 사용하면 AWS Encryption CLI에서 지정된 계정의 AWS KMS key를 사용하여 메시지를 복호화할 수 있습니다.

aws-encryption-cli --decrypt \ --wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-keys discovery=true \ discovery-partition=aws \ discovery-account=111122223333 \ discovery-account=444455556666

입력을 제공하는 방법

AWS Encryption CLI의 암호화 작업은 일반 텍스트 데이터를 입력으로 받아 암호화된 메시지를 반환합니다. 복호화 작업은 암호화된 메시지를 입력으로 받아 일반 텍스트 데이터를 반환합니다.

입력을 찾을 위치를 AWS Encryption CLI에 알려주는 --input 파라미터(-i)는 모든 AWS Encryption CLI 명령에 필요합니다.

다음 방법 중 하나를 사용하여 입력을 제공할 수 있습니다.

  • 파일을 사용합니다.

    --input myData.txt
  • 파일 이름 패턴을 사용합니다.

    --input testdir/*.xml
  • 디렉터리 또는 디렉터리 이름 패턴을 사용합니다. 입력이 디렉터리인 경우 --recursive 파라미터(-r, -R)가 필요합니다.

    --input testdir --recursive
  • 입력을 명령(stdin)에 전달합니다. - 파라미터에 --input 값을 사용합니다. (--input 파라미터는 항상 필요합니다.)

    echo 'Hello World' | aws-encryption-cli --encrypt --input -

출력 위치를 지정하는 방법

--output 파라미터는 암호화 또는 복호화 작업의 결과를 기록할 위치를 AWS Encryption CLI에 알려줍니다. 이는 모든 AWS Encryption CLI 명령에 필요합니다. AWS Encryption CLI는 작업의 모든 입력 파일에 대해 새 출력 파일을 생성합니다.

출력 파일이 이미 있는 경우 AWS Encryption CLI는 기본적으로 경고를 인쇄한 다음 파일을 덮어씁니다. 덮어쓰기를 방지하려면, 덮어쓰기 전에 확인 메시지를 표시하는 --interactive 파라미터를 사용하거나, 출력으로 인해 덮어쓰기가 발생할 경우 입력을 건너뛰는 --no-overwrite를 사용합니다. 덮어쓰기 경고를 표시하지 않으려면 --quiet를 사용합니다. AWS Encryption CLI에서 오류 및 경고를 캡처하려면 2>&1 리디렉션 연산자를 사용하여 출력 스트림에 기록합니다.

참고

출력 파일을 덮어쓰는 명령은 출력 파일을 삭제하여 시작합니다. 명령이 실패하는 경우 출력 파일이 이미 삭제되었을 수 있습니다.

여러 가지 방법으로 출력 위치를 지정할 수 있습니다.

  • 파일 이름을 지정합니다. 파일 경로를 지정하는 경우 명령이 실행되기 전에 경로에 있는 모든 디렉터리가 존재해야 합니다.

    --output myEncryptedData.txt
  • 디렉터리를 지정합니다. 명령이 실행되기 전에 출력 디렉터리가 있어야 합니다.

    입력에 하위 디렉터리가 포함된 경우 명령은 지정된 디렉터리 아래의 하위 디렉터리를 다시 생성합니다.

    --output Test

    출력 위치가 파일 이름이 없는 디렉터리인 경우 AWS Encryption CLI는 입력 파일 이름과 접미사를 기반으로 출력 파일 이름을 생성합니다. 암호화 작업은 .encrypted를 입력 파일 이름에 추가하고 복호화 작업은 .decrypted를 추가합니다. 접미사를 변경하려면 --suffix 파라미터를 사용합니다.

    예를 들어, file.txt를 암호화하면 암호화 명령이 file.txt.encrypted를 생성합니다. file.txt.encrypted를 복호화하면 복호화 명령이 file.txt.encrypted.decrypted를 생성합니다.

     

  • 명령줄(stdout)에 씁니다. --output 파라미터의 - 값을 입력합니다. --output -을 사용하여 출력을 다른 명령이나 프로그램으로 전달할 수 있습니다.

    --output -

암호화 컨텍스트를 사용하는 방법

AWS Encryption CLI를 사용하면 암호화 및 복호화 명령에 암호화 컨텍스트를 제공할 수 있습니다. 필수는 아니지만 권장되는 암호화 모범 사례입니다.

암호화 컨텍스트는 비밀이 아닌 임의의 추가 인증 데이터 유형입니다. AWS Encryption CLI에서 암호화 컨텍스트는 name=value 페어 모음으로 구성됩니다. 파일에 대한 정보, 로그에서 암호화 작업을 찾는 데 도움이 되는 데이터 또는 허가나 정책에 필요한 데이터를 포함하여 페어로 구성된 모든 콘텐츠를 사용할 수 있습니다.

암호화 명령

암호화 명령에서 지정하는 암호화 컨텍스트와, CMM이 추가하는 추가 페어는 암호화된 데이터에 암호화 방식으로 바인딩됩니다. 또한 명령이 반환하는 암호화된 메시지에도 (일반 텍스트로) 포함됩니다. 또한 AWS KMS key를 사용하는 경우 암호화 컨텍스트는 감사 레코드 및 로그(예: AWS CloudTrail)에 일반 텍스트로 나타날 수도 있습니다.

다음 예제는 name=value 페어 3개로 구성된 암호화 컨텍스트를 보여줍니다.

--encryption-context purpose=test dept=IT class=confidential

복호화 명령

복호화 명령에서 암호화 컨텍스트는 암호화된 메시지를 올바르게 복호화하고 있는지 확인하는 데 도움이 됩니다.

암호화 시 암호화 컨텍스트를 사용한 경우에도 복호화 명령에 암호화 컨텍스트를 제공할 필요는 없습니다. 그러나 이를 수행하면 복호화 명령의 암호화 컨텍스트에 있는 모든 요소가 암호화된 메시지의 암호화 컨텍스트에 있는 요소와 일치하는지를 AWS Encryption CLI가 확인합니다. 요소가 일치하지 않으면 복호화 명령이 실패합니다.

예를 들어, 다음 명령은 암호화 컨텍스트에 dept=IT가 포함된 경우에만 암호화된 메시지를 복호화합니다.

aws-encryption-cli --decrypt --encryption-context dept=IT ...

암호화 컨텍스트는 보안 전략의 중요한 부분입니다. 그러나 암호화 컨텍스트를 선택할 때는 해당 값이 비밀이 아님을 기억해야 합니다. 암호화 컨텍스트에 기밀 데이터를 포함하지 마세요.

암호화 컨텍스트 지정

  • 암호화 명령에서 --encryption-context 파라미터를 하나 이상의 name=value 페어와 함께 사용합니다. 공백을 사용하여 각 페어를 구분합니다.

    --encryption-context name=value [name=value] ...
  • 복호화 명령의 --encryption-context 파라미터 값에는 name=value 페어, name 요소(값 없음) 또는 이 둘의 조합이 포함될 수 있습니다.

    --encryption-context name[=value] [name] [name=value] ...

name=value 페어의 name 또는 value에 공백이나 특수 문자가 포함된 경우 전체 페어를 인용 부호로 묶습니다.

--encryption-context "department=software engineering" "AWS 리전=us-west-2"

예를 들어, 이 암호화 명령에는 두 페어의 purpose=testdept=23이 포함된 암호화 컨텍스트가 포함됩니다.

aws-encryption-cli --encrypt --encryption-context purpose=test dept=23 ...

이러한 복호화 명령은 성공합니다. 각 명령의 암호화 컨텍스트는 원래 암호화 컨텍스트의 하위 집합입니다.

\\ Any one or both of the encryption context pairs aws-encryption-cli --decrypt --encryption-context dept=23 ... \\ Any one or both of the encryption context names aws-encryption-cli --decrypt --encryption-context purpose ... \\ Any combination of names and pairs aws-encryption-cli --decrypt --encryption-context dept purpose=test ...

하지만 이러한 복호화 명령은 실패합니다. 암호화된 메시지의 암호화 컨텍스트에는 지정된 요소가 포함되어 있지 않습니다.

aws-encryption-cli --decrypt --encryption-context dept=Finance ... aws-encryption-cli --decrypt --encryption-context scope ...

커밋 정책을 지정하는 방법

명령에 대한 커밋 정책을 설정하려면 --commitment-policy 파라미터를 사용합니다. 이 파라미터는 버전 1.8.x에 도입되었습니다. 이는 암호화 및 복호화 명령에 유효합니다. 설정한 커밋 정책은 해당 정책이 나타나는 명령에만 유효합니다. 명령에 대한 커밋 정책을 설정하지 않은 경우 AWS Encryption CLI에서 기본값을 사용합니다.

예를 들어 다음 파라미터 값은 커밋 정책을 require-encrypt-allow-decrypt로 설정합니다. 이 경우 커밋 정책은 항상 키 커밋으로 암호화하지만 키 커밋 사용 여부와 관계없이 암호화된 사이퍼텍스트는 복호화됩니다.

--commitment-policy require-encrypt-allow-decrypt

구성 파일에 파라미터를 저장하는 방법

자주 사용하는 AWS Encryption CLI 파라미터 및 값을 구성 파일에 저장해 시간을 절약하고 입력 오류를 방지할 수 있습니다.

구성 파일은 AWS Encryption CLI 명령에 대한 파라미터 및 값이 들어 있는 텍스트 파일입니다. AWS Encryption CLI 명령에서 구성 파일을 참조하면 참조가 구성 파일의 파라미터 및 값으로 대체됩니다. 명령줄에 파일 내용을 입력한 경우에도 동일한 효과가 나타납니다. 구성 파일은 어떤 이름이든 가질 수 있으며 현재 사용자가 액세스할 수 있는 모든 디렉터리에 위치할 수 있습니다.

다음 예제 구성 파일인 key.conf는 서로 다른 리전에 AWS KMS keys 두 개를 지정합니다.

--wrapping-keys key=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab --wrapping-keys key=arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef

명령에서 구성 파일을 사용하려면 파일 이름 앞에 at 기호(@)를 붙입니다. PowerShell 콘솔에서는 백틱 문자를 사용하여 at 기호(`@)를 이스케이프 처리합니다.

이 예제 명령은 암호화 명령에서 key.conf 파일을 사용합니다.

Bash
$ aws-encryption-cli -e @key.conf -i hello.txt -o testdir
PowerShell
PS C:\> aws-encryption-cli -e `@key.conf -i .\Hello.txt -o .\TestDir

구성 파일 규칙

구성 파일 사용 규칙은 다음과 같습니다.

  • 각 구성 파일에 여러 파라미터를 포함하고 원하는 순서대로 나열할 수 있습니다. 각 파라미터를 해당 값(있는 경우)과 함께 별도의 줄에 나열합니다.

  • #을 사용하여 줄 전체 또는 일부에 주석을 추가합니다.

  • 다른 구성 파일에 대한 참조를 포함할 수 있습니다. PowerShell에서도 백틱을 사용하여 @ 기호를 이스케이프 처리하지 마세요.

  • 구성 파일에서 따옴표를 사용하는 경우 인용된 텍스트는 여러 줄에 걸쳐 있을 수 없습니다.

예를 들어, 예제 encrypt.conf 파일의 내용은 다음과 같습니다.

# Archive Files --encrypt --output /archive/logs --recursive --interactive --encryption-context class=unclassified dept=IT --suffix # No suffix --metadata-output ~/metadata @caching.conf # Use limited caching

명령에 여러 구성 파일을 포함할 수도 있습니다. 이 예제 명령은 encrypt.confmaster-keys.conf 구성 파일을 모두 사용합니다.

Bash
$ aws-encryption-cli -i /usr/logs @encrypt.conf @master-keys.conf
PowerShell
PS C:\> aws-encryption-cli -i $home\Test\*.log `@encrypt.conf `@master-keys.conf

다음: AWS Encryption CLI 예제 사용해 보기