암호화된 볼륨과 함께 사용하기 위한 필수 AWS KMS 키 정책 - Amazon EC2 Auto Scaling

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

암호화된 볼륨과 함께 사용하기 위한 필수 AWS KMS 키 정책

Amazon EC2 Auto Scaling은 서비스 연결 역할을 사용하여 다른 사람에게 권한을 위임합니다. AWS 서비스 Amazon EC2 Auto Scaling 서비스 연결 역할은 미리 정의되어 있으며 Amazon EC2 Auto Scaling에서 사용자를 대신하여 다른 사람을 호출하는 데 필요한 권한을 포함합니다. AWS 서비스 사전 정의된 권한에는 사용자 권한에 대한 액세스도 포함됩니다. AWS 관리형 키그러나, 해당 권한에는 이러한 키를 완전히 제어할 수 있는 고객 관리형 키에 대한 액세스 권한은 포함되어 있지 않습니다.

이 항목에서는 Amazon EBS 암호화에 대해 고객 관리형 키를 지정할 때 Auto Scaling 인스턴스를 시작하는 데 필요한 키 정책을 설정하는 방법에 대해 설명합니다.

참고

Amazon EC2 Auto Scaling은 기본 AWS 관리형 키 를 사용하여 계정의 암호화된 볼륨을 보호하는 데 추가 승인이 필요하지 않습니다.

개요

Amazon EC2 Auto Scaling에서 인스턴스를 시작할 때 Amazon EBS 암호화에 사용할 AWS KMS keys 수 있는 내용은 다음과 같습니다.

  • AWS 관리형 키— Amazon EBS가 생성, 소유 및 관리하는 사용자 계정의 암호화 키. 이 키는 새 계정을 위한 기본 암호화 키입니다. 고객 관리 키를 지정하지 않는 한 암호화에 사용됩니다. AWS 관리형 키

  • 고객 관리 키 — 직접 만들고 소유하고 관리하는 사용자 지정 암호화 키입니다. 자세한 정보는 AWS Key Management Service 개발자 안내서키 생성을 참조하세요.

    참고: 키는 대칭이어야 합니다. Amazon EBS에서는 비대칭 고객 관리형 키를 지원하지 않습니다.

암호화된 볼륨을 지정하는 시작 템플릿 또는 암호화된 스냅샷을 생성하거나 기본적으로 암호화를 활성화할 때 고객 관리형 키를 구성합니다.

키 정책 구성

KMS 키에는 Amazon EC2 Auto Scaling이 고객 관리형 키로 암호화된 Amazon EBS 볼륨으로 인스턴스를 시작할 수 있도록 허용하는 키 정책이 있어야 합니다.

이 페이지의 예를 사용하여 고객 관리형 키에 대한 Amazon EC2 Auto Scaling 액세스 권한을 부여하는 키 정책을 구성하세요. 키를 생성할 때 또는 나중에 고객 관리형 키의 키 정책을 수정할 수 있습니다.

Amazon EC2 Auto Scaling에서 사용하려면 키 정책에 최소한 두 개의 정책 명령문을 추가해야 합니다.

  • 첫 번째 명령문을 사용하면 Principal 요소에 지정된 IAM 자격 증명에서 CMK를 직접 사용하도록 할 수 있습니다. 여기에는 키에 대한 AWS KMS Encrypt,, Decrypt ReEncrypt*GenerateDataKey*, 및 DescribeKey 작업을 수행할 수 있는 권한이 포함됩니다.

  • 두 번째 명령문에서는 Principal 요소에 지정된 IAM ID가 CreateGrant 작업을 사용하여 권한을 생성하여 권한 중 일부를 AWS KMS 통합하거나 다른 보안 주체와 통합된 사용자에게 위임할 AWS 서비스 수 있도록 합니다. 이를 통해 사용자는 키를 사용하여 사용자 대신 암호화된 리소스를 생성할 수 있습니다.

키 정책에 새 정책 명령문을 추가할 경우 정책의 기존 섹션을 변경하지 마세요.

다음 각 예제에서 키 ID 또는 서비스 연결 역할 이름과 같이 대체해야 하는 인수는 사용자 자리 표시자 텍스트로 표시됩니다. 대부분의 경우 서비스 연결 역할의 이름을 Amazon EC2 Auto Scaling 서비스 연결 역할의 이름으로 대체할 수 있습니다.

자세한 정보는 다음 자료를 참조하십시오.

예 1: 고객 관리형 키에 대한 액세스를 허용하는 키 정책 섹션

고객 관리형 키의 키 정책에 다음 두 정책 명령문을 추가하여 예제 ARN을 키에 대한 액세스가 허용된 적절한 서비스 연결 역할의 ARN으로 바꿉니다. 이 예에서는 정책 섹션에서 서비스 연결 역할에 고객 관리형 키를 사용할 수 있는 AWSServiceRoleForAutoScaling이라는 권한을 부여합니다.

{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

예 2: 고객 관리형 키에 대한 교차 계정 액세스를 허용하는 키 정책 섹션

Auto Scaling 그룹과 다른 계정에 고객 관리형 키를 생성하는 경우 키에 대한 크로스 계정 액세스를 허용하는 키 정책과 함께 권한 부여를 사용해야 합니다.

다음 순서로 완료해야 하는 두 단계가 있습니다.

  1. 먼저 고객 관리형 키의 키 정책에 다음 두 가지 정책 문을 추가합니다. 예제 ARN을 다른 계정의 ARN으로 바꾸고, 111122223333을 Auto Scaling 그룹을 AWS 계정 생성하려는 사용자의 실제 계정 ID로 바꾸십시오. 이렇게 하면 지정된 계정의 IAM 사용자 또는 역할에게 다음 CLI 명령을 사용하여 키에 대한 권한 부여를 생성할 수 있는 권한을 부여할 수 있습니다. 그러나, 이것만으로는 사용자에게 키에 대한 액세스 권한이 부여되지 않습니다.

    { "Sid": "Allow external account 111122223333 use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
    { "Sid": "Allow attachment of persistent resources in external account 111122223333", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*" }
  2. 그런 다음, Auto Scaling 그룹을 생성하려는 계정에서 관련 권한을 적절한 서비스 연결 역할에 위임하는 권한 부여를 생성합니다. 권한 부여의 Grantee Principal 요소는 적절한 서비스 연결 역할의 ARN입니다. key-id는 키의 ARN입니다.

    다음은 계정 111122223333AWSServiceRoleForAutoScaling이라는 서비스 연결 역할에 계정 444455556666의 고객 관리형 키를 사용하는 권한을 부여하는 create-grant CLI 명령의 예입니다.

    aws kms create-grant \ --region us-west-2 \ --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d \ --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling \ --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"

    이 명령이 성공하려면 요청을 하는 사용자에게 CreateGrant 작업에 대한 권한이 있어야 합니다.

    다음 예제 IAM 정책에서는 계정 111122223333의 IAM 자격 증명(사용자 또는 역할)이 계정 444455556666의 고객 관리형 키에 대한 권한 부여를 생성하도록 허용합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount444455556666", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }

    다른 AWS 계정에서 KMS 키에 대한 권한 부여 생성에 대한 자세한 정보는 AWS Key Management Service 개발자 안내서AWS KMS의 권한 부여를 참조하세요.

    중요

    피부여자 보안 주체로 지정된 서비스 연결 역할 이름은 기존 역할의 이름이어야 합니다. 권한 부여를 생성한 후 Amazon EC2 Auto Scaling에서 지정된 KMS 키를 사용할 수 있도록 허용하려면 서비스 연결 역할을 삭제했다가 다시 생성하지 마세요.

AWS KMS 콘솔에서 키 정책 편집

이전 섹션의 예에서는 키 정책을 변경하는 유일한 방법인 키 정책에 명령문을 추가하는 방법을 보여줍니다. 키 정책을 변경하는 가장 쉬운 방법은 AWS KMS 콘솔의 기본 보기를 키 정책에 사용하고 IAM ID (사용자 또는 역할) 를 적절한 키 정책의 주요 사용자 중 하나로 만드는 것입니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS Management Console 기본 보기 사용을 참조하십시오.

중요

주의할 점이 있습니다. 콘솔의 기본 보기 정책 설명에는 고객 관리 키에 대한 AWS KMS Revoke 작업을 수행할 수 있는 권한이 포함됩니다. 계정의 고객 관리 키에 AWS 계정 대한 액세스 권한을 부여한 후 이 권한을 부여한 권한을 실수로 취소하면 외부 사용자는 더 이상 암호화된 데이터나 데이터를 암호화하는 데 사용된 키에 액세스할 수 없습니다.