기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS KMS 키 링
AWS KMS키링은 대칭 암호화를 AWS KMS keys사용하여 데이터 키를 생성, 암호화 및 해독합니다. AWS Key Management Service(AWS KMS) 는 KMS 키를 보호하고 FIPS 경계 내에서 암호화 작업을 수행합니다. 가능하면AWS KMS 키링 또는 유사한 보안 속성을 가진 키링을 사용하는 것이 좋습니다.
버전 2.3부터AWS KMS 키링 또는 마스터 키 제공자에서AWS KMS 다중 지역 키를 사용할 수 있습니다. x 버전AWS Encryption SDK 및 버전 3.0입니다. AWS암호화 CLI의 x 새로운 다중 지역 인식 기호 사용에 대한 자세한 내용과 예는 을 참조하십시오사용 리전 사용AWS KMS keys. 다중 리전 키에 대한 자세한 내용을 알아보려면 AWS Key Management Service개발자 안내서 의 다중 리전 키 사용 을 참조하세요.
참고
는 비대칭 KMS 키를AWS Encryption SDK 지원하지 않습니다. 암호화 키링에 비대칭 KMS 키를 포함하면 암호화 호출이 실패합니다. 암호 해독 키링에 포함시키면 무시됩니다.
KMS 키링에 대한 모든 언급은AWS KMS 키링을AWS Encryption SDK 참조합니다.
AWS KMS키링에는 두 가지 유형의 래핑 키가 포함될 수 있습니다.
-
생성기 키: 일반 텍스트 데이터 키를 생성하고 암호화합니다. 데이터를 암호화하는 키링에는 생성기 키가 하나 있어야 합니다.
-
추가 키: 생성기 키가 생성한 일반 텍스트 데이터 키를 암호화합니다. AWS KMS키링에는 0개 이상의 추가 키가 있을 수 있습니다.
암호화할 때 사용하는AWS KMS 키링에는 생성기 키가 있어야 합니다. 암호 해독 시 생성기 키는 선택 사항이며 생성기 키와 추가 키 간의 구분은 무시됩니다.
AWS KMS암호화 키링에AWS KMS 키가 하나뿐인 경우 해당 키는 데이터 키를 생성하고 암호화하는 데 사용됩니다.
모든 키링과 마찬가지로AWS KMS 키링은 독립적으로 사용하거나 동일하거나 다른 유형의 다른 키링과 함께 멀티 키링으로 사용할 수 있습니다.
주제
AWS KMS키링에 필요한 권한
AWS Encryption SDK는 를AWS 계정 필요로 하지 않으며 어떤 것에도 의존하지 않습니다AWS 서비스. 하지만AWS KMS 키링을 사용하려면 키링에 있는AWS 계정 키링에 대한 다음과 같은 최소 권한이 필요합니다.AWS KMS keys
-
AWS KMS키링으로 암호화하려면 kms: 생성기 키에 대한GenerateDataKey 권한이 필요합니다. AWS KMS키링의 모든 추가 키에 대한 KMS: 암호화 권한이 필요합니다.
-
키링으로 암호를 해독하려면AWS KMS 키링에 있는 하나 이상의 키에 대한 KMS:Decrypt 권한이 필요합니다.AWS KMS
-
키링으로 구성된 다중 키링으로 암호화하려면 kms: 생성기AWS KMS 키링의 생성기 키에 대한GenerateDataKey 권한이 필요합니다. 다른 모든AWS KMS 키링의 다른 모든 키에 대해 KMS:Encrypt 권한이 필요합니다.
의 권한에 대한 자세한 내용은 AWS Key Management Service개발자 안내서의 인증 및 액세스 제어를 참조하십시오.AWS KMS keys
AWS KMS 키 링의 AWS KMS keys 식별
AWS KMS키링에는 하나 이상이 포함될 수AWS KMS keys 있습니다. AWS KMS keyAWS KMS키링에 를 지정하려면 지원되는AWS KMS 키 식별자를 사용하십시오. AWS KMS key키링에서 를 식별하는 데 사용할 수 있는 키 식별자는 작업 및 언어 구현에 따라 달라집니다. 의 키 식별자에 대한 자세한 내용은 AWS Key Management Service개발자 안내서의 키 식별자를 참조하십시오.AWS KMS key
작업에 가장 적합한 키 식별자를 사용하는 것이 가장 좋습니다.
-
의 암호화 키링에서는 키 ARN 또는 별칭 ARN을 사용하여 KMS 키를 식별할 수 있습니다.AWS Encryption SDK for C 다른 모든 언어 구현에서는 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN을 사용하여 데이터를 암호화할 수 있습니다.
-
암호 해독 키 링에서는 키 ARN을 사용하여 AWS KMS keys를 식별해야 합니다. 이 요구 사항은 AWS Encryption SDK의 모든 언어 구현에 적용됩니다. 세부 정보는 래핑 키 선택을 참조하세요.
-
암호화 및 암호 해독에 사용되는 키 링에서는 키 ARN을 사용하여 AWS KMS keys를 식별해야 합니다. 이 요구 사항은 AWS Encryption SDK의 모든 언어 구현에 적용됩니다.
암호화 키링에서 KMS 키에 별칭 이름 또는 별칭 ARN을 지정하는 경우 암호화 작업은 현재 별칭과 연결된 키 ARN을 암호화된 데이터 키의 메타데이터에 저장합니다. 별칭은 저장되지 않습니다. 별칭을 변경해도 암호화된 데이터 키를 해독하는 데 사용되는 KMS 키에는 영향을 주지 않습니다.
암호화를 위한AWS KMS 키링 만들기
동일하거나 다른AWS KMSAWS 계정 키링을 하나AWS KMS key 또는 여러AWS KMS keys 개로 구성하여 각 키링을 구성할 수AWS 리전 있습니다. 대칭 암호화 키 (SYMMETRIC_DEFAULT)AWS KMS keys 여야 합니다. 대칭 암호화 다중 지역 KMS 키를 사용할 수도 있습니다. 모든 키링과 마찬가지로 멀티 키링에도 하나 이상의AWS KMS 키링을 사용할 수 있습니다.
데이터를 암호화하는AWS KMS 키링을 만들 때는 일반 텍스트 데이터 키를 생성하고 암호화하는 데 사용되는 생성기 키를 지정해야 합니다.AWS KMS key 데이터 키는 수학적으로 KMS 키와 관련이 없습니다. 그런 다음 동일한 일반 텍스트 데이터 키를 암호화하는 AWS KMS keys를 추가로 지정할 수도 있습니다.
이 키링으로 보호되는 암호화된 메시지를 해독하려면 사용하는 키링에 키링에AWS KMS keys 정의된 키 중 하나 이상이 포함되어야 합니다AWS KMS keys. 그렇지 않으면 그렇지 않습니다. (없는AWS KMS 키링을 AWS KMS디스커버리AWS KMS keys 키링이라고 합니다.)
이외의AWS Encryption SDK 언어 구현에서는 암호화 키링 또는 다중 키링의 모든 래핑 키가 데이터 키를 암호화할 수 있어야 합니다.AWS Encryption SDK for C 래핑 키가 암호화에 실패하면 암호화 방법이 실패합니다. 따라서 호출자는 키링의 모든 키에 대해 필요한 권한을 가지고 있어야 합니다. 검색 키링을 사용하여 단독으로 또는 다중 키링으로 데이터를 암호화하는 경우 암호화 작업이 실패합니다. 단AWS Encryption SDK for C, 암호화 작업은 표준 검색 키링을 무시하지만 다중 지역 검색 키링을 단독으로 또는 다중 키링으로 지정하면 실패합니다.
다음 예제는 하나의 생성기AWS KMS 키와 하나의 추가 키로 키링을 만듭니다. 이 예에서는 키 ARN을 사용하여 KMS 키를 식별합니다. 이는 암호화에 사용되는AWS KMS 키링의 모범 사례이며 암호 해독에 사용되는AWS KMS 키링에 대한 요구 사항입니다. 세부 정보는 AWS KMS 키 링의 AWS KMS keys 식별을 참조하세요.
암호 해독을 위한AWS KMS 키링 만들기
또한 에서AWS Encryption SDK 반환하는 암호화된 메시지를 해독할 때AWS KMS 키링을 지정합니다. 암호 해독 키링에서 지정하는AWS KMS keys 경우AWS Encryption SDK 는 해당 래핑 키만 사용하여 암호화된 메시지의 암호화된 데이터 키를 해독합니다. (아무 것도 지정하지 않는 AWS KMS검색 키링을 사용할 수도AWS KMS keys 있습니다.)
암호를 해독할 때 는 암호화된 데이터AWS KMS 키 중 하나를 해독할 수AWS KMS key 있는 키를 키링에서AWS Encryption SDK 검색합니다. 특히 AWS Encryption SDK에서는 암호화된 메시지에서 암호화된 각 데이터 키에 대해 다음 패턴을 사용합니다.
-
는 암호화된 메시지의AWS KMS key 메타데이터에서 데이터 키를 암호화한 의 키 ARN을AWS Encryption SDK 가져옵니다.
-
는 암호 해독 키링에서 일치하는 키 ARN을AWS Encryption SDK 검색합니다.AWS KMS key
-
키링에서 일치하는 키 ARN을 찾으면 는 KMS 키를 사용하여 암호화된 데이터 키를AWS KMS 해독하도록AWS Encryption SDK 요청합니다.AWS KMS key
-
그렇지 않으면 다음 암호화된 데이터 키 (있는 경우) 로 건너뛰게 됩니다.
AWS Encryption SDK는 데이터 키를 암호화한 AWS KMS key의 키 ARN이 암호 해독 키 링에 포함되어 있지 않으면 암호화된 데이터 키의 암호화 해제를 시도하지 않습니다. 암호화 해제 키 링에 데이터 키를 암호화한 AWS KMS keys의 ARN이 포함되어 있지 않을 경우 AWS Encryption SDK는 AWS KMS를 호출하지 않고 암호화 해제 호출에 실패합니다.
1.로 버전 x, 암호화된 데이터 키를 해독할 때 는AWS Encryption SDK 항상 의 키AWS KMS key ARN을AWS KMS Decrypt 작업의KeyId
파라미터에 전달합니다. 암호 해독AWS KMS key 시기를 식별하는 것이 사용하려는 래핑 키로 암호화된 데이터 키를 해독할 수 있는AWS KMS 모범 사례입니다.
암호 해독AWS KMS 키링 내의 적어도 하나가 암호화된 메시지AWS KMS key 내의 암호화된 데이터 키 중 하나를 해독할 수 있을 때 키링을 사용한 암호 해독 호출은 성공한다. 또한 호출자는 이 AWS KMS key에 대한 kms:Decrypt
권한이 있어야 합니다. 이 동작을 통해 서로 다른AWS 리전 AND 계정의 여러AWS KMS keys 데이터를 암호화할 수 있지만 특정 계정, 지역, 사용자, 그룹 또는 역할에 맞게 조정된 보다 제한적인 암호 해독 키링을 제공할 수 있습니다.
복호화AWS KMS key 키링에서 a를 지정할 때는 키 ARN로 업데이트 그렇지 않으면 AWS KMS key가 인식되지 않습니다. 키 ARN을 찾는 데 도움이 필요하면 AWS Key Management Service개발자 안내서의 키 ID 및 ARN 찾기를 참조하십시오.
참고
암호 해독을 위해 암호화 키 링을 재사용하는 경우 키 링의 AWS KMS keys가 해당 키 ARN에 의해 식별되는지 확인합니다.
예를 들어, 다음AWS KMS 키링에는 암호화 키링에 사용된 추가 키만 포함됩니다. 그러나 이 예제에서는 별칭으로 추가 키를 참조하는 대신 암호 해독 호출에 필요한 추가 키의 키 ARN을 사용합니다.alias/exampleAlias
추가 키를 사용하여 데이터를 해독할 수 있는 권한이 있는 경우 이 키 링을 사용하여 생성기 키와 추가 키로 암호화된 메시지를 해독할 수 있습니다.
다음과 같이 암호 해독을 위한 생성기 키를 지정하는AWS KMS 키링을 사용할 수도 있습니다. 암호를 해독할 때 생성기 키와 추가 키 간의 구분을AWS Encryption SDK 무시합니다. 지정된 AWS KMS keys를 사용하여, 암호화된 데이터 키를 암호화 해제할 수 있습니다. AWS KMS 호출은 호출자가 해당 AWS KMS key를 사용하여 데이터를 암호화 해제할 수 있는 권한이 있어야만 성공합니다.
지정된 AWS KMS keys를 모두 사용하는 암호화 키 링과 달리, 암호화된 메시지와 무관한 AWS KMS keys 및 호출자가 사용 권한이 없는 AWS KMS keys를 포함하는 암호화 해제 키 링을 사용하여, 암호화된 메시지를 암호화 해제할 수 있습니다. 호출자가 필요한 권한이 없는 경우와 같이 AWS KMS에 대한 암호화 해제 호출이 실패하면 AWS Encryption SDK는 다음 암호화된 데이터 키로 건너뜁니다.
AWS KMS Discovery 키 링 사용
암호를 해독할 때는 사용할AWS Encryption SDK 수 있는 래핑 키를 지정하는 것이 가장 좋습니다. 이 모범 사례를 따르려면AWS KMS 래핑 키를 지정한 키로 제한하는AWS KMS 암호 해독 키링을 사용하십시오. 하지만 AWS KMS검색 키링, 즉 래핑 키를 지정하지 않는AWS KMS 키링을 만들 수도 있습니다.
는 표준AWS KMS 검색 키링과AWS KMS 다중 지역 키용 검색 키링을AWS Encryption SDK 제공합니다. 에서 다중 리전 키를 사용하는 방법은AWS Encryption SDK 섹션을 참조하십시오사용 리전 사용AWS KMS keys.
검색 키링은 래핑 키를 지정하지 않기 때문에 데이터를 암호화할 수 없습니다. 검색 키링을 사용하여 단독으로 또는 다중 키링으로 데이터를 암호화하는 경우 암호화 작업이 실패합니다. 단AWS Encryption SDK for C, 암호화 작업은 표준 검색 키링을 무시하지만 다중 지역 검색 키링을 단독으로 또는 다중 키링으로 지정하면 실패합니다.
암호 해독 시 검색 키링을 사용하면 암호화된 데이터 키를 사용하여 암호화된 데이터 키를 암호AWS Encryption SDKAWS KMS 해독하도록 요청할 수 있습니다. 누가AWS KMS key 해당 키를 소유하거나 액세스할 수 있든 상관AWS KMS key 없습니다. 호출자가 에 대한kms:Decrypt
권한을 가지고 있는 경우에만 호출이 성공합니다AWS KMS key.
중요
암호 해독 다중 키링에AWS KMS 검색 키링을 포함하면 검색 키링이 다중 키링의 다른 키링에서 지정한 모든 KMS 키 제한 사항보다 우선 적용됩니다. 멀티 키링은 가장 제한이 적은 키링처럼 동작합니다. AWS KMS검색 키링은 단독으로 사용하거나 다중 키링에서 사용할 경우 암호화에 영향을 미치지 않습니다.
AWS Encryption SDK는 편의를 위해 AWS KMS Discovery 키 링을 제공합니다. 그러나 다음과 같은 이유로 가급적 더 제한적인 키링을 사용하는 것이 좋습니다.
-
인증 —AWS KMS 검색 키링은 암호화된 메시지의 데이터 키를 암호화하는 데 사용된 모든AWS KMS key 키를 사용할 수 있습니다. 그러면 호출자가 해당 키를 사용하여 암호를AWS KMS key 해독할 수 있습니다. 이것이 호출자가 사용하려는 AWS KMS key가 아닐 수도 있습니다. 예를 들어, 암호화된 데이터 키 중 하나가 누구나 사용할 수 있어서 보안성이 약한 AWS KMS key를 사용하여 암호화되었을 수 있습니다.
-
지연 시간 및 성능 —AWS KMS 검색 키링은 기타 및 지역에서 암호화된 데이터 키를 포함하여 암호화된 데이터 키를 모두AWS Encryption SDK 해독하려고AWS 계정 시도하고 호출자에게 암호AWS KMS keys 해독에 사용할 권한이 없기 때문에 다른 키링보다 느릴 수 있습니다.AWS KMS keys
검색 키링을 사용하는 경우 검색 필터를 사용하여 사용할 수 있는 KMS 키를 지정된AWS 계정 키와 파티션에 있는 키로 제한하는 것이 좋습니다. 디스커버리 필터는 버전 1.7에서 지원됩니다. x 및 이후AWS Encryption SDK 버전 계정 ID 및 파티션을 찾는 데 도움이 필요하면 의 사용자AWS 계정 식별자 및 ARN 형식을 참조하십시오 AWS 일반 참조.
다음 코드는 사용할AWS Encryption SDK 수 있는 KMS 키를aws
파티션 및 111122223333 예제 계정에 있는 키로 제한하는 검색 필터를 사용하여 검색 키링을 인스턴스화합니다.AWS KMS
이 코드를 사용하기 전에 예제AWS 계정 및 파티션 값을 및 파티션에 유효한 값으로 바꾸십시오AWS 계정. KMS 키가 중국 지역에 있는 경우aws-cn
파티션 값을 사용하십시오. KMS 키가 있는AWS GovCloud (US) Regions 경우aws-us-gov
파티션 값을 사용하십시오. 다른 모든AWS 리전 경우에는aws
파티션 값을 사용하십시오.
AWS KMS Regional Discovery 키 링 사용
AWS KMS지역 검색 키링은 KMS 키의 ARN을 지정하지 않는 키링입니다. 대신 특히 KMS 키만 사용하여 암호를AWS Encryption SDK 해독할 수AWS 리전 있습니다.
AWS KMS지역 검색 키링을 사용하여 암호를AWS Encryption SDK 해독하는 경우 는 지정된 in으로 암호화된 모든 암호화된 데이터 키를 해독합니다AWS 리전.AWS KMS key 성공하려면 호출자에게 데이터 키를 암호화한 지정된AWS 리전 키 중 하나AWS KMS keys 이상에 대한kms:Decrypt
권한이 있어야 합니다.
다른 검색 키링과 마찬가지로 지역 검색 키링은 암호화에 영향을 미치지 않습니다. 암호화된 메시지를 해독할 때만 작동합니다. 암호화 및 암호 해독에 사용되는 다중 키링에서 지역 검색 키링을 사용하는 경우 암호 해독 시에만 유효합니다. 다중 지역 검색 키링을 사용하여 데이터를 단독으로 또는 다중 키링으로 암호화하는 경우 암호화 작업이 실패합니다.
중요
암호 해독 다중 키링에AWS KMS 지역 검색 키링을 포함하면 지역 검색 키링이 다중 키링의 다른 키링에서 지정한 모든 KMS 키 제한 사항보다 우선 적용됩니다. 멀티 키링은 가장 제한이 적은 키링처럼 동작합니다. AWS KMS검색 키링은 단독으로 사용하거나 다중 키링에서 사용할 경우 암호화에 영향을 미치지 않습니다.
지정된 지역의 KMS 키로만 암호 해독을AWS Encryption SDK for C 시도하는 지역 검색 키링입니다. AWS Encryption SDK for JavaScript및AWS Encryption SDK for .NET에서 검색 키링을 사용하는 경우AWS KMS 클라이언트에서 지역을 구성합니다. 이러한AWS Encryption SDK 구현은 지역별로 KMS 키를 필터링하지 않지만AWS KMS 지정된 지역 외부의 KMS 키에 대한 암호 해독 요청은 실패합니다.
검색 키링을 사용하는 경우 검색 필터를 사용하여 암호 해독에 사용되는 KMS 키를 지정된AWS 계정 키와 파티션에 있는 키로 제한하는 것이 좋습니다. 디스커버리 필터는 버전 1.7에서 지원됩니다. x 및 이후AWS Encryption SDK 버전
예를 들어 다음 코드는 검색 필터를 사용하여AWS KMS 지역 검색 키링을 만듭니다. 이 키링은 미국 서부 (오리건) (us-west-2) 에서 계정의 11112333 계정의 KMS 키로 제한합니다.AWS Encryption SDK
AWS Encryption SDK for JavaScript 또한 Node.js 및 브라우저에 대한 excludeRegions
함수를 내보냅니다. 이 함수는 특정 리전에서 AWS KMS keys를 생략하는 AWS KMS 리전 Discovery 키 링을 만듭니다. 다음AWS KMS keys 예에서는 미국 동부 (버지니아 북부) (us-east-1) 를AWS 리전 제외한 모든 계정의 11112333 계정에서 사용할 수 있는 리전 검색 키링을 생성합니다.AWS KMS
에는 유사한 메서드가 없지만 사용자 지정을 생성하여 구현할 수 ClientSupplier
이 예는 Node.js에 대한 코드를 보여줍니다.
const discovery = true const clientProvider = excludeRegions(['us-east-1'], getKmsClient) const keyring = new KmsKeyringNode({ clientProvider, discovery, discoveryFilter: { accountIDs: [
111122223333
], partition: 'aws
' } })