AWS KMS의 권한 부여 - AWS Key Management Service

AWS KMS의 권한 부여

권한 부여AWS 보안 주체가 암호화 작업에서 KMS 키를 사용할 수 있도록 하는 정책 도구입니다. 또한 KMS 키(DescribeKey)를 보고 권한 부여를 생성 및 관리할 수 있습니다. KMS 키에 대한 액세스 권한을 부여할 때 키 정책IAM 정책과 함께 권한 부여가 고려됩니다. 권한 부여는 키 정책이나 IAM 정책을 변경하지 않고 권한을 생성하고 삭제할 수 있기 때문에 임시 권한에 자주 사용됩니다.

권한 부여는 일반적으로 사용되는AWS KMS와 통합되어 저장 데이터를 암호화하는 AWS 서비스에서 사용됩니다. 서비스는 계정의 사용자를 대신하여 권한 부여를 만들고, 권한을 사용하고, 작업이 완료되는 즉시 권한 부여를 폐기합니다. AWS 서비스가 권한 부여를 사용하는 방법에 대한 자세한 내용은 서비스 사용 설명서 또는 개발자 안내서의 AWS 서비스의 AWS KMS 활용 방식 또는 저장 시 암호화를 참조하세요.

여러 프로그래밍 언어로 권한 부여 작업을 수행하는 방법을 보여주는 코드 예제는 권한 부여 작업 섹션을 참조하세요.

권한 부여 정보

권한 부여는 매우 유연하고 유용한 액세스 제어 메커니즘입니다. KMS 키에 대한 권한 부여를 생성하면 권한 부여에 지정된 모든 조건이 충족되는 경우 권한 부여를 통해 피부여자 보안 주체가 KMS 키에 대해 지정된 권한 부여 작업을 호출할 수 있습니다.

  • 각 권한 부여를 통해 정확히 하나의 KMS 키에 액세스할 수 있습니다. 다른 AWS 계정에서 KMS 키에 대한 권한 부여를 생성할 수 있습니다.

  • 권한 부여는 KMS 키에 대한 액세스를 허용할 수 있지만 액세스를 거부할 수는 없습니다.

  • 각 권한 부여에는 적어도 하나의 피부여자 주체가 있어야 합니다. 피부여자 주체는 다른 AWS 계정의 자격 증명일 수 있습니다.

  • 권한 부여는 권한 부여 작업만 허용할 수 있습니다. 권한 부여 작업은 권한 부여의 KMS 키로 지원되어야 합니다. 지원되지 않는 작업을 지정하면 CreateGrant 요청이 ValidationError 예외와 함께 실패합니다.

  • 피부여자 보안 주체는 권한이 키 정책 또는 IAM 정책에서 제공되는 경우와 마찬가지로 권한 부여를 지정하지 않고 권한 부여가 부여하는 권한을 사용할 수 있습니다. 그러나 권한 부여를 생성, 폐기 또는 취소할 때 작업에 최종 일관성이 달성될 때까지 일반적으로 5분 미만의 짧은 지연이 있을 수 있습니다. 권한 부여에서 권한을 즉시 사용하려면 권한 부여 토큰을 사용하십시오.

  • 권한이 부여된 보안 주체는 권한 부여를 삭제(사용 중지 또는 취소)할 수 있습니다. 권한 부여를 삭제하면 권한 부여가 허용한 모든 권한이 제거됩니다. 권한 부여를 실행 취소하기 위해 추가하거나 제거할 정책을 파악할 필요가 없습니다.

  • AWS KMS는 각 KMS 키에 대한 권한 부여 수를 제한합니다. 자세한 내용은 KMS 키당 권한 부여: 50,000 섹션을 참조하세요.

권한 부여를 생성할 때와 다른 사람에게 권한 부여 생성 권한을 부여할 때는 주의해야 합니다. 권한 부여를 생성할 수 있는 권한은 정책을 설정할 수 있는 kms:PutKeyPolicy 권한을 사용하여 정책을 설정할 수 있습니다.

  • KMS 키(kms:CreateGrant)에 대한 권한 부여를 생성할 수 있는 권한이 있는 사용자는 권한 부여를 사용하여 AWS 서비스를 포함한 사용자 및 역할이 KMS 키를 사용하도록 허용할 수 있습니다. 보안 주체는 자신의 AWS 계정에 있는 자격 증명이거나 다른 계정이나 조직에 있는 자격 증명일 수 있습니다.

  • 권한 부여는 AWS KMS 작업의 하위 집합만 허용할 수 있습니다. 권한 부여를 사용하여 보안 주체가 KMS 키를 보고, 암호화 작업에 사용하고, 권한 부여를 만들고 사용 중지하도록 허용할 수 있습니다. 자세한 내용은 권한 부여 작업 섹션을 참조하세요. 권한 부여 제약 조건을 사용하여 대칭 암호화 키에 대한 권한 부여의 사용 권한을 제한할 수 있습니다.

  • 보안 주체는 키 정책 또는 IAM 정책에서 권한 부여를 생성할 수 있는 권한을 가질 수 있습니다. 정책에서 kms:CreateGrant 권한을 받은 보안 주체는 KMS 키에 대한 권한 부여 작업에 대한 권한을 생성할 수 있습니다. 이러한 보안 주체는 키에 대해 부여한 권한이 필요하지 않습니다. 정책에서 kms:CreateGrant 권한을 허용하면 정책 조건을 사용하여 이 권한을 제한할 수 있습니다.

  • 보안 주체는 권한 부여에서 권한 부여를 만들 수 있는 권한을 가져올 수도 있습니다. 이러한 보안 주체는 정책에서 다른 권한이 있더라도 부여된 권한만 위임할 수 있습니다. 자세한 내용은 CreateGrant 권한 부여 섹션을 참조하세요.

보조금과 관련된 개념에 대한 도움을 받으려면 권한 부여 용어를 참조하세요.

권한 부여 개념

권한 부여를 효과적으로 사용하려면 AWS KMS가 사용하는 용어와 개념을 이해해야 합니다.

권한 부여 제약

권한 부여의 권한을 제한하는 조건입니다. 현재 AWS KMS는 암호화 작업에 대한 요청의 암호화 컨텍스트를 기반으로 하는 권한 부여 제약 조건을 지원합니다. 자세한 내용은 권한 부여 제약 사용 섹션을 참조하세요.

권한 부여 ID

KMS 키에 대한 권한 부여의 고유 식별자입니다. 키 식별자와 함께 권한 부여 ID를 사용하여 RetireGrant 또는 RevokeGrant 요청에서 권한 부여를 식별할 수 있습니다.

권한 부여 작업

권한 부여에서 허용할 수 있는 AWS KMS 작업입니다. 다른 작업을 지정하면 CreateGrant 요청이 ValidationError 예외와 함께 실패합니다. 권한 부여 토큰을 수락하는 작업이기도 합니다. 이러한 권한에 대한 자세한 내용은 AWS KMS 권한 섹션을 참조하세요.

이러한 권한 부여 작업은 실제로 작업을 사용할 수 있는 권한을 나타냅니다. 따라서 ReEncrypt 작업의 경우 ReEncryptFrom, ReEncryptTo 또는 둘 다 ReEncrypt*를 지정할 수 있습니다.

권한 부여 작업은 다음과 같습니다.

허용한 권한 부여 작업은 권한 부여의 KMS 키로 지원되어야 합니다. 지원되지 않는 작업을 지정하면 CreateGrant 요청이 ValidationError 예외와 함께 실패합니다. 예를 들어 대칭 암호화 KMS 키에 대한 권한 부여는 Sign, Verify, GenerateMac 또는 VerifyMac 작업을 허용하지 않습니다. 비대칭 KMS 키에 대한 권한 부여는 데이터 키 또는 데이터 키 페어를 생성하는 작업을 허용하지 않습니다.

권한 부여 토큰

권한 부여를 생성할 때 AWS KMS 전체에서 새 권한 부여를 사용할 수 있을 때까지, 즉 최종 일관성이 달성될 때까지 일반적으로 5분 미만의 짧은 지연이 있을 수 있습니다. 최종 일관성이 달성되기 전에 권한 부여를 사용하려고 하면 액세스 거부 오류가 발생할 수 있습니다. 권한 부여 토큰을 사용하면 권한 부여를 참조하고 즉시 권한 부여 권한을 사용할 수 있습니다.

권한 부여 토큰은 권한 부여를 나타내는 고유하고 암호화되지 않은 가변 길이 base64 인코딩 문자열입니다. 권한 부여 토큰을 사용하여 권한 부여 작업에서 권한 부여를 식별할 수 있습니다. 그러나 토큰 값은 해시 다이제스트이므로 권한 부여에 대한 세부 정보는 공개되지 않습니다.

권한 부여 토큰은 권한 부여에 최종 일관성이 달성될 때까지만 사용하도록 설계되었습니다. 그 후, 피부여자 보안 주체는 권한 부여 토큰이나 권한 부여에 대한 다른 증거를 제공하지 않고 권한 부여의 권한을 사용할 수 있습니다. 언제든지 권한 부여 토큰을 사용할 수 있지만 일단 권한의 일관성이 유지되면 AWS KMS는 권한 부여를 사용하여 권한 부여 토큰이 아닌 권한을 결정합니다.

예를 들어 다음 명령은 GenerateDataKey 작업을 사용합니다. 권한 부여 토큰을 사용하여 지정된 KMS 키에서 GenerateDataKey를 호출할 수 있는 권한을 호출자(피부여자 보안 주체)에게 부여하는 권한 부여를 나타냅니다.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

권한 부여 토큰을 사용하여 권한 부여를 관리하는 작업에서 권한 부여를 식별할 수도 있습니다. 예를 들어, 사용 중지 보안 주체RetireGrant 작업을 호출할 때 권한 부여 토큰을 사용할 수 있습니다.

$ aws kms retire-grant \ --grant-token $token

CreateGrant는 권한 부여 토큰을 반환하는 유일한 작업입니다. 다른 AWS KMS 작업 또는 CreateGrant 작업에 대한 CloudTrail 로그 이벤트에서 권한 부여 토큰을 가져올 수 없습니다. ListGrantsListRetirableGrants 작업은 권한 부여 ID를 반환하지만 권한 부여 토큰은 아닙니다.

자세한 내용은 권한 부여 토큰 사용 섹션을 참조하세요.

피부여자 보안 주체

권한 부여에 지정된 권한을 가져오는 자격 증명입니다. 권한 부여에는 피부여자 보안 주체가 한 명 이상 있어야 합니다. 피부여자 보안 주체는 AWS 계정(루트), IAM 사용자, IAM 역할, 페더레이션 역할 또는 사용자 또는 수임된 역할 사용자를 포함한 모든 AWS 보안 주체가 될 수 있습니다. 피부여자 보안 주체는 KMS 키와 동일한 계정 또는 다른 계정에 있을 수 있습니다. 그러나 피부여자 보안 주체는 서비스 주체, IAM 그룹 또는 AWS 조직일 수 없습니다.

권한 부여 사용 중지

권한 부여를 종료합니다. 권한 사용을 마치면 권한 부여를 사용 중지합니다.

권한 부여를 취소하거나 사용 중지하면 권한 부여가 삭제됩니다. 그러나 사용 중지는 권한 부여에 지정된 보안 주체에 의해 수행됩니다. 취소는 일반적으로 키 관리자가 수행합니다. 자세한 내용은 권한 부여 사용 중지 및 취소 섹션을 참조하세요.

사용 중지 보안 주체

권한 부여를 사용 중지할 수 있는 보안 주체입니다. 권한 부여에서 사용 중지 보안 주체를 지정할 수 있지만 필수는 아닙니다. 사용 중지 보안 주체는 AWS 계정, IAM 사용자, IAM 역할, 페더레이션 사용자 및 수임된 역할 사용자를 비롯해 모든 AWS 보안 주체가 될 수 있습니다. 사용 중지 보안 주체는 KMS 키와 동일한 계정에 있거나 다른 계정에 있을 수 있습니다.

권한 부여에 지정된 사용 중지 보안 주체 외에도 권한 부여는 권한 부여가 생성된 AWS 계정에 의해 사용 중지될 수 있습니다. 권한 부여가 RetireGrant 작업을 허용하는 경우 피부여자 보안 주체 권한 부여를 사용 중지할 수 있습니다. 또한, 사용 중지 보안 주체인 AWS 계정 또는 AWS 계정은 동일한 AWS 계정의 IAM 보안 주체에 권한 부여를 사용 중지할 수 있는 권한을 위임할 수 있습니다. 자세한 내용은 권한 부여 사용 중지 및 취소 섹션을 참조하세요.

권한 부여 취소

권한 부여를 종료합니다. 권한 부여를 취소하면 권한 부여가 허용하는 권한을 적극적으로 거부할 수 있습니다.

권한 부여를 취소하거나 사용 중지하면 권한 부여가 삭제됩니다. 그러나 사용 중지는 권한 부여에 지정된 보안 주체에 의해 수행됩니다. 취소는 일반적으로 키 관리자가 수행합니다. 자세한 내용은 권한 부여 사용 중지 및 취소 섹션을 참조하세요.

(권한 부여의) 최종 일관성

권한 부여를 생성, 폐기 또는 취소할 때 AWS KMS 전체에서 변경 내용을 사용할 수 있을 때까지 짧은 지연(보통 5분 미만)이 있을 수 있습니다. 이 간격이 지나면 작업에 최종 일관성이 달성된 것으로 간주합니다.

예기치 않은 오류가 발생하는 경우 이 짧은 지연을 의식하게 됩니다. 예를 들어, AWS KMS 전체에 권한 부여가 알려지기 전에 새 권한 부여를 관리하거나 새 권한 부여에서 권한을 사용하려고 하면 액세스 거부 오류가 발생할 수 있습니다. 권한 부여를 사용 중지하거나 취소하는 경우 권한 부여가 완전히 삭제될 때까지 피부여자 보안 주체가 잠시 동안 해당 권한을 계속 사용할 수 있습니다. 일반적인 전략은 요청을 다시 시도하는 것이며 일부 AWS SDK에는 자동 백오프 및 재시도 로직이 포함됩니다.

AWS KMS에는 이 짧은 지연을 완화하는 기능이 있습니다.

  • 새 권한 부여에서 권한을 즉시 사용하려면 권한 부여 토큰을 사용하십시오. 권한 부여 토큰을 사용하여 모든 권한 부여 작업에서 권한 부여를 권한 부여를 참조할 수 있습니다. 지침은 권한 부여 토큰 사용 섹션을 참조하세요.

  • CreateGrant 작업에는 재시도 작업이 중복 부여를 생성하지 못하도록 하는 Name 파라미터가 있습니다.

참고

권한 부여 토큰은 서비스의 모든 엔드포인트가 새 권한 부여 상태로 업데이트될 때까지 권한 부여의 유효성을 대체합니다. 대부분의 경우 최종 일관성은 5분 이내에 달성됩니다.

AWS KMS 권한 부여의 모범 사례

AWS KMS에서는 권한 부여의 생성, 사용 및 관리를 수행할 때 다음 모범 사례를 권장합니다.

  • 권한 부여의 권한을 피부여자 보안 주체에게 필요한 권한으로 제한합니다. 최소 권한 액세스 원칙을 사용합니다.

  • IAM 역할과 같은 특정 피부여자 보안 주체를 사용하고 피부여자에게 필요한 API 작업만 사용할 수 있는 권한을 부여합니다.

  • 암호화 컨텍스트 권한 부여 제약 조건 을 사용하여 호출자가 의도한 목적으로 KMS 키를 사용하고 있는지 확인합니다. 요청에서 암호화 컨텍스트를 사용하여 데이터를 보호하는 방법에 대한 자세한 내용은 AWS 보안 블로그에서 AWS Key Management Service과 EncryptionContext를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 참조하세요.

    작은 정보

    가능할 때마다 EncryptionContextEqual 제약 조건을 사용하십시오. EncryptionContextSubset 권한 부여 제약 조건은 올바르게 사용하기가 더 어렵습니다. 그것을 사용해야 하는 경우 문서를 주의 깊게 읽고 권한 부여 제약 조건을 테스트해 의도한대로 작동하는지 확인하십시오.

  • 중복 권한 부여를 삭제합니다. 중복 권한 부여는 동일한 키 ARN, API 작업, 피부여자 보안 주체, 암호화 컨텍스트 및 이름을 갖습니다. 원래 권한 부여를 사용 중지 또는 취소하지만 중복된 권한 부여를 그대로 두는 경우 남은 중복 권한 부여가 의도하지 않은 권한 에스컬레이션을 구성합니다. CreateGrant 요청을 재시도할 때 중복 권한 부여를 방지하려면 Name 파라미터를 사용하십시오. 중복 권한 부여를 검색하려면 ListGrants 작업을 사용합니다. 실수로 중복 권한 부여를 생성한 경우 가능한 한 빨리 사용을 중지하거나 취소합니다.

    참고

    AWS 관리형 키에 대한 권한 부여는 중복처럼 보일 수 있지만 피부여자 보안 주체가 다릅니다.

    ListGrants 응답의 GranteePrincipal 필드에는 일반적으로 권한 부여의 피부여자 보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우 GranteePrincipal 필드에는 서비스 보안 주체(여러 피부여자 보안 주체가 될 수 있음)가 포함됩니다.

  • 권한 부여는 자동으로 만료되지 않습니다. 권한이 더 이상 필요하지 않으면 즉시 권한 부여 사용을 중지 또는 취소합니다. 삭제되지 않은 권한 부여는 암호화된 리소스에 대한 보안 위험을 초래할 수 있습니다.