AWS CloudFormation을 사용하여 CMK(고객 마스터 키)를 생성하고 AWS Key Management Service(AWS KMS) 키 정책을 정의하려고 합니다. 그러나 “새로운 키 정책이 이후 키 정책의 업데이트를 허용하지 않습니다”라는 오류 메시지와 함께 CMK 생성이 실패합니다. 해결하려면 어떻게 해야 합니까?

AWS KMS는 키 정책이 생성될 때 안전 점검을 수행합니다. 여기에는 CreateKey 요청을 생성하는 보안 주체가 PutKeyPolicy API 호출을 수행하는 것이 허용되는지 확인하는 점검이 포함됩니다. 이는 CMK가 관리 불가능한 상태(변경하거나 삭제할 수 없는 상태)가 될 가능성을 낮추기 위해서입니다.

키 정책을 생성할 때는 해당 정책이 현재 사용자의 CMK 관리를 허용하는지 확인해야 합니다. 키 관리자가 CMK를 관리하도록 허용의 예제를 참조하십시오.

CloudFormation 스택을 생성하는 경우 CreateStack API 호출에 사용된 IAM 사용자 또는 역할이 스택의 리소스를 생성할 때에도 사용됩니다. CMK를 생성할 때 다음 예제에서와 같이 이 동일한 IAM 사용자 또는 역할을 CMK 관리의 보안 주체로 지정하십시오. 다음 예제는 IAM 사용자 "Alice"가 계정 "123456789012”에 CloudFormation 스택을 생성한 것으로 가정합니다.

    "myKey" : {
      "Type" : "AWS::KMS::Key",
      "Properties" : {
          "Description" : "A sample key",
          "KeyPolicy" : {
              "Version": "2012-10-17",
              "Id": "key-default-1",
              "Statement": [
                  {
                      "Sid": "Allow administration of the key",
                      "Effect": "Allow",
                      "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" },
                      "Action": [
                          "kms:Create*",
                          "kms:Describe*",
                          "kms:Enable*",
                          "kms:List*",
                          "kms:Put*",
                          "kms:Update*",
                          "kms:Revoke*",
                          "kms:Disable*",
                          "kms:Get*",
                          "kms:Delete*",
                          "kms:ScheduleKeyDeletion",
                          "kms:CancelKeyDeletion"
                      ],
                      "Resource": "*"
                  },
                  {
                      "Sid": "Allow use of the key",
                      "Effect": "Allow",
                      "Principal": { "AWS": "arn:aws:iam::123456789012:user/Bob" },
                      "Action": [
                          "kms:Encrypt",
                          "kms:Decrypt",
                          "kms:ReEncrypt",
                          "kms:GenerateDataKey*",
                          "kms:DescribeKey"
                      ], 
                      "Resource": "*"
                  }
              ]
          }
      }
  }

CloudFormation 스택이 연합된 사용자 계정으로 생성된 경우 다음 예제에서와 같이 보안 주체를 연합된 사용자의 가정된 역할 ARN으로 설정합니다. 다음 예제에서 "FederatedAccess"는 연합된 액세스 IAM 역할의 이름이고 "FederatedUsername"은 연합된 사용자의 이름입니다.

"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }

또는 AWS 계정 루트 사용자를 보안 주체로 지정할 수 있습니다. 이렇게 하면 다음 예제에서와 같이 키 정책 안전 잠금 점검을 통과하고 KMS 키를 생성할 수 있습니다.

"Principal": { "AWS": "arn:aws:iam::123456789012:root" }

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2016년 8월 19일

업데이트된 날짜: 2018년 5월 16일