KMS 키 | 생성 - AMS 고급 변경 유형 참조

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

KMS 키 | 생성

사전 정의된 키 정책을 사용하여 KMS 키를 요청합니다.

전체 분류: 배포 | 고급 스택 구성 요소 | KMS 키 | 생성

변경 유형 세부 정보

유형 ID 변경

ct-1d84keiri1jhg

현재 버전

1.0

예상 실행 기간

60분

AWS 승인

필수

고객 승인

불필요

실행 모드

자동

추가 정보

KMS 키 생성

AMS 콘솔에서이 변경 유형의 스크린샷:

Create KMS key change type with description, ID, version, and execution mode details.

작동 방식:

  1. RFC 생성 페이지로 이동합니다. AMS 콘솔의 왼쪽 탐색 창에서 RFCs 클릭하여 RFCs 목록 페이지를 연 다음 RFC 생성을 클릭합니다.

  2. 기본 변경 유형 찾아보기 보기에서 인기 있는 변경 유형(CT)을 선택하거나 범주별 선택 보기에서 CT를 선택합니다.

    • 변경 유형별 찾아보기: 빠른 생성 영역에서 인기 있는 CT를 클릭하여 RFC 실행 페이지를 즉시 열 수 있습니다. 빠른 생성으로 이전 CT 버전을 선택할 수 없습니다.

      CTs 정렬하려면 카드 또는 테이블 보기에서 모든 변경 유형 영역을 사용합니다. 어느 보기에서든 CT를 선택한 다음 RFC 생성을 클릭하여 RFC 실행 페이지를 엽니다. 해당하는 경우 RFC 생성 버튼 옆에 이전 버전으로 생성 옵션이 나타납니다.

    • 범주별 선택: 범주, 하위 범주, 항목 및 작업을 선택하면 해당하는 경우 이전 버전으로 생성 옵션이 있는 CT 세부 정보 상자가 열립니다. RFC 생성을 클릭하여 RFC 실행 페이지를 엽니다.

  3. RFC 실행 페이지에서 CT 이름 영역을 열어 CT 세부 정보 상자를 확인합니다. 제목은 필수입니다(변경 유형 찾아보기 보기에서 CT를 선택하면 입력됨). 추가 구성 영역을 열어 RFC에 대한 정보를 추가합니다.

    실행 구성 영역에서 사용 가능한 드롭다운 목록을 사용하거나 필요한 파라미터의 값을 입력합니다. 선택적 실행 파라미터를 구성하려면 추가 구성 영역을 엽니다.

  4. 완료되면 실행을 클릭합니다. 오류가 없는 경우 성공적으로 생성된 RFC 페이지에 제출된 RFC 세부 정보와 초기 실행 출력이 표시됩니다.

  5. 실행 파라미터 영역을 열어 제출한 구성을 확인합니다. 페이지를 새로 고쳐 RFC 실행 상태를 업데이트합니다. 선택적으로 RFC를 취소하거나 페이지 상단의 옵션을 사용하여 RFC 사본을 생성합니다.

작동 방식:

  1. 인라인 생성(모든 RFC 및 실행 파라미터가 포함된 create-rfc 명령을 실행) 또는 템플릿 생성(2개의 JSON 파일을 생성, 하나는 RFC 파라미터용이고 다른 하나는 실행 파라미터용)을 사용하고 두 파일을 입력으로 사용하여 create-rfc 명령을 실행합니다. 두 방법 모두 여기에 설명되어 있습니다.

  2. 반환된 RFC ID로 RFC: aws amscm submit-rfc --rfc-id ID 명령을 제출합니다.

    RFC: aws amscm get-rfc --rfc-id ID 명령을 모니터링합니다.

변경 유형 버전을 확인하려면 다음 명령을 사용합니다.

aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
참고

CreateRfc 변경 유형에 대한 스키마의 일부인지 여부에 관계없이 모든 파라미터를 RFC와 함께 사용할 수 있습니다. 예를 들어 RFC 상태가 변경될 때 알림을 받으려면 요청의 --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}" RFC 파라미터 부분(실행 파라미터 아님)에이 줄을 추가합니다. 모든 CreateRfc 파라미터 목록은 AMS Change Management API 참조를 참조하세요.

인라인 생성:

인라인으로 제공된 실행 파라미터(실행 파라미터를 인라인으로 제공할 때 따옴표 이스케이프)로 RFC 생성 명령을 실행한 다음 반환된 RFC ID를 제출합니다. 예를 들어 콘텐츠를 다음과 같은 내용으로 바꿀 수 있습니다.

필수 파라미터만 해당:

aws amscm create-rfc --title my-app-key --change-type-id ct-1d84keiri1jhg --change-type-version 1.0 --execution-parameters '{"Description":"KMS key for my-app","VpcId":"VPC_ID","Name":"my-app-key","StackTemplateId":"stm-enf1j068fhg34vugt","TimeoutInMinutes":60,"Parameters":{"Description":"KMS key for my-app"}}'

템플릿 생성:

  1. 이 변경 유형에 대한 실행 파라미터 JSON 스키마를 파일로 출력합니다.이 예제에서는 CreateKmsKeyAutoParams.json.

    aws amscm get-change-type-version --change-type-id "ct-1d84keiri1jhg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateKmsKeyAutoParams.json
  2. CreateKmsKeyAutoParams 파일을 수정하고 저장합니다. 다음은 예제입니다.

    사용자 또는 역할에 생성된 CMK를 해독할 수 있는 권한을 부여합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID”, "Name": "my-app-key-decrypt", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringDecryptPermissions": [ "ARN:role/roleA", "ARN:user/userB", "ARN:role/instanceProfileA" ], "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요IAM 사용자 또는 역할에 대한 CML을 사용하여 복호화할 수 있는 권한을 부여합니다..

    사용자 또는 역할에 생성된 CMK를 사용하여 암호화할 수 있는 권한을 부여합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encrypt", "Tags": [ { "Key": "Name", "Value": "my-app-key" } ], "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringEncryptPermissions": [ "ARN:role/roleA", "ARN:user/userB", "ARN:role/instanceProfileA" ], "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요IAM 사용자 또는 역할에 대한 CML을 사용하여 암호화할 수 있는 권한을 부여합니다..

    사용자, 역할 또는 계정에 생성된 CMK를 사용하여 권한 부여를 생성할 수 있는 권한을 부여합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-create-grants", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringGrantsPermissions": [ "arn:aws:iam::999999999999:role/roleA", "888888888888" ], "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요IAM 사용자, 역할 또는 계정에 대한 CMK로 권한 부여를 생성할 수 있는 권한을 부여합니다..

    AWS KMS와 통합된 AWS 서비스만 GRANT 작업을 수행하도록 허용합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-limit-to-services", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringGrantsPermissions": [ "arn:aws:iam::999999999999:role/roleA" ], "LimitGrantsToAWSResources": "true", "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요GRANT 작업을 수행할 수 있도록 AWS KMS와 통합된 AWS 서비스만 허용.

    암호화 작업에서 암호화 컨텍스트 키 사용을 적용합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encryption-keys", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "EnforceEncryptionContextKeys": "true", "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요암호화 작업에서 암호화 컨텍스트 키 사용 적용.

    암호화 작업에서 특정 암호화 컨텍스트 키 목록을 적용합니다. 실행 파라미터의 예:

    { "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encryption-list", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "AllowedEncryptionContextKeys": [ "Name", "Application" ], "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요암호화 작업에 특정 암호화 컨텍스트 키 목록 적용.

    AWS 서비스가 생성된 CMK에 액세스하도록 허용합니다. 실행 파라미터의 예:

    { "Description" : "KMS key for my-app", "VpcId" : "VPC_ID", "Name" : "my-app-key-allow-aws-service-access", "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "AllowServiceRolesAccessKMSKeys": [ "ec2.us-east-1.amazonaws.com", "ecr.us-east-1.amazonaws.com" ], "Description": "KMS key for my-app" } }

    결과 정책은 섹션을 참조하세요AWS 서비스가 생성된 CMK에 액세스하도록 허용.

  3. RFC 템플릿 JSON 파일을 파일로 출력합니다.이 예제에서는 파일 이름을 CreateKmsKeyAutoRfc.json:으로 지정합니다.

    aws amscm create-rfc --generate-cli-skeleton > CreateKmsKeyAutoRfc.json
  4. CreateKmsKeyAutoRfc.json 파일을 수정하고 저장합니다. 예를 들어 콘텐츠를 다음과 같은 내용으로 바꿀 수 있습니다.

    { "ChangeTypeId": "ct-1d84keiri1jhg", "ChangeTypeVersion": "1.0", "Title": "Create KMS Key" }
  5. CreateKmsKeyAuto Rfc 파일과 CreateKmsKeyAutoParams 파일을 지정하여 RFC를 생성합니다.

    aws amscm create-rfc --cli-input-json file://CreateKmsKeyAutoRfc.json --execution-parameters file://CreateKmsKeyAutoParams.json

    응답에서 새 RFC의 ID를 수신하고 이를 사용하여 RFC를 제출하고 모니터링할 수 있습니다. 제출하기 전까지는 RFC가 편집 상태로 유지되고 시작되지 않습니다.

  • 이 CT는를 사용하여 KMS 키를 생성하는 CloudFormation 스택을 생성합니다DeletionPolicy: Retain. 기본적으로 생성된 KMS 키는 스택을 삭제한 후에도 유지됩니다. KMS 키를 삭제하려면 변경 유형 ct-2zxya20wmf5bf, 관리 | 고급 스택 구성 요소 | KMS 키 | 삭제(검토 필요)를 사용하여 RFC를 생성합니다.

  • 이 변경 유형은 ExecutionMode=Automated이므로이 변경 유형은 AMS 작업의 수동 검토가 필요하지 않으며 KMS 키: 생성(검토 필요)보다 더 빠르게 실행되어야 합니다. 그러나 비정상적인 상황이 발생하는 경우 수동 버전이 더 적합할 수 있습니다. KMS 키 | 생성(검토 필요)을 참조하세요.

  • 이 CT에는 지정된 AWS 서비스에 KMS 키에 대한 액세스 권한을 제공하는 새로운 파라미터 AllowServiceRolesAccessKMSKeys가 있습니다. KMS 키에 대한 권한이 없어 Autoscaling 그룹 서비스 역할이 암호화된 EBS 볼륨으로 EC2 인스턴스를 시작할 수 없기 때문에 변경되었습니다.

  • AWS KMS 키에 대한 자세한 내용은 AWS Key Management Service (KMS), AWS Key Management Service FAQsAWS Key Management Service 개념을 참조하세요.

KMS 키 결과 정책 생성

KMS 키를 생성한 방법에 따라 정책을 생성했습니다. 이러한 예제 정책은에 제공된 다양한 KMS 키 생성 시나리오와 일치합니다KMS 키 생성.

IAM 사용자 또는 역할에 대한 CML을 사용하여 복호화할 수 있는 권한을 부여합니다.

결과 예제 정책은 IAM 사용자, 역할 또는 인스턴스 프로파일에 CMK를 사용하여 복호화할 수 있는 권한을 부여합니다.

{ "Sid": "Allow decrypt using the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::999999999999:user/userB", "arn:aws:iam::999999999999:role/instanceProfileA" ] }, "Action": [ "kms:DescribeKey", "kms:Decrypt" ], "Resource": "*" }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

IAM 사용자 또는 역할에 대한 CML을 사용하여 암호화할 수 있는 권한을 부여합니다.

결과 예제 정책은 IAM 사용자, 역할 또는 인스턴스 프로파일에 CMK를 사용하여 암호화할 수 있는 권한을 부여합니다.

{ "Sid": "Allow encrypt using the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::999999999999:user/userB", "arn:aws:iam::999999999999:role/instanceProfileA" ] }, "Action": [ "kms:DescribeKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*" }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

IAM 사용자, 역할 또는 계정에 대한 CMK로 권한 부여를 생성할 수 있는 권한을 부여합니다.

결과 예제 정책:

{ "Sid": "Allow grants", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::888888888888:root" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

GRANT 작업을 수행할 수 있도록 AWS KMS와 통합된 AWS 서비스만 허용

결과 예제 정책:

{ "Sid": "Allow grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:role/roleA" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "Deny if grant is not for AWS resource", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "false" } } } } }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

암호화 작업에서 암호화 컨텍스트 키 사용 적용

결과 예제 정책:

{ "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": "true" } } }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

암호화 작업에 특정 암호화 컨텍스트 키 목록 적용

결과 예제 정책:

{ "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContextKeys": [ "Name", "Application" ] } } }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

AWS 서비스가 생성된 CMK에 액세스하도록 허용

결과 예제 정책:

{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "ecr.us-east-1.amazonaws.com" ], "kms:CallerAccount": "111122223333" } } }

KMS 키 변경 유형 생성으로이 정책을 생성하는 실행 파라미터는 섹션을 참조하세요. KMS 키 생성

실행 입력 파라미터

실행 입력 파라미터에 대한 자세한 내용은 섹션을 참조하세요변경 유형 ct-1d84keiri1jhg에 대한 스키마.

예: 필수 파라미터

{ "Description" : "Test description", "VpcId" : "vpc-12345678901234567", "Name" : "TestStack", "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "Description" : "Test key" } }

예: 모든 파라미터

{ "Description" : "Test description", "VpcId" : "vpc-12345678", "Name" : "TestStack", "Tags" : [ { "Key" : "foo", "Value" : "bar" } ], "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "Alias" : "testkey", "EnableKeyRotation" : "true", "Description" : "Test key", "PendingWindow" : 30, "IAMPrincipalsRequiringDecryptPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole" ], "IAMPrincipalsRequiringEncryptPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole" ], "IAMPrincipalsRequiringGrantsPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole", "987654321098" ], "LimitGrantsToAWSResources" : "true", "EnforceEncryptionContextKeys" : "true", "AllowedEncryptionContextKeys" : [ "App" ], "AllowServiceRolesAccessKMSKeys": [ "ec2.us-east-1.amazonaws.com" ] } }