AWS Systems Manager Parameter Store SecureString 파라미터에 대한 AWS KMS 암호화 - AWS Systems Manager

AWS Systems Manager Parameter Store SecureString 파라미터에 대한 AWS KMS 암호화

AWS Systems Manager Parameter Store를 사용하면 일반 텍스트 파라미터 이름과 암호화된 파라미터 값이 있는 SecureString 파라미터를 생성할 수 있습니다. Parameter Store에서는 AWS KMS를 사용하여 SecureString 파라미터의 파라미터 값을 암호화하고 해독합니다.

Parameter Store를 사용하면 데이터를 값이 있는 파라미터로 생성, 저장, 관리할 수 있습니다. Parameter Store에서 파라미터를 생성한 후, 직접 설계한 정책과 권한이 적용되는 여러 애플리케이션 및 서비스에서 이 파라미터를 사용할 수 있습니다. 파라미터 값을 변경해야 하는 경우, 무수한 소스를 변경하고 관리하느라 오류가 발생하기 쉬운 방식 대신 한 인스턴스만 변경하면 됩니다. Parameter Store에서는 파라미터 이름에 대한 계층 구조를 지원하므로 파라미터를 특정 용도로 한정할 수 있습니다.

민감한 데이터를 관리하기 위해 SecureString 파라미터를 생성할 수 있습니다. Parameter Store에서는 SecureString 파라미터를 생성하거나 변경할 때 AWS KMS keys를 사용하여 해당 파라미터의 값을 암호화합니다. 또한 파라미터에 액세스할 때 KMS 키를 사용하여 파라미터 값을 해독합니다. Parameter Store에서 계정을 위해 생성한 AWS 관리형 키를 사용하거나 고유한 고객 관리형 키를 지정할 수 있습니다.

중요

Parameter Store는 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 파라미터를 암호화할 수 없습니다. KMS 키가 대칭인지 비대칭인지 확인하는 데 도움이 필요한 경우 AWS Key Management Service 개발자 안내서다양한 키 유형 식별을 참조하세요.

Parameter Store는 표준 및 고급 계층의 SecureString 파라미터를 지원합니다. 표준 파라미터(4,096바이트를 초과할 수 없음)는 사용자가 지정한 KMS 키로 직접 암호화 및 해독됩니다. 고급 SecureString 파라미터를 암호화 및 해독하기 위해 Parameter Store는 AWS Encryption SDK에서 봉투 암호화를 사용합니다. 표준 SecureString 파라미터를 고급 파라미터로 변환할 수 있지만, 고급 파라미터를 표준 파라미터로 변환할 수는 없습니다. 표준 파라미터와 고급 SecureString 파라미터의 차이점에 대한 자세한 내용은 파라미터 티어 관리 섹션을 참조하세요.

표준 SecureString 파라미터 보호

Parameter Store는 어떠한 암호화 작업도 수행하지 않습니다. 그 대신 AWS KMS를 사용하여 SecureString 파라미터 값을 암호화하고 해독합니다. 표준 SecureString 파라미터 값을 생성하거나 변경하면 Parameter Store가 AWS KMS Encrypt 작업을 호출합니다. 이 작업은 KMS 키를 사용하여 데이터 키를 생성하는 대신 대칭 암호화 KMS 키를 사용하여 직접 파라미터 값을 암호화합니다.

Parameter Store에서 파라미터 값을 암호화하는 데 사용할 KMS 키를 선택할 수 있습니다. KMS 키를 지정하지 않으면Parameter Store는 Systems Manager가 계정에서 자동으로 생성하는 AWS 관리형 키를 사용합니다. 이 KMS 키에는 별칭 aws/ssm이 있습니다.

계정의 기본 aws/ssm KMS 키를 보려면 AWS KMS API에서 DescribeKey 작업을 사용합니다. 다음 예에서는 AWS Command Line Interface(AWS CLI)의 describe-key 명령을 aws/ssm 별칭 이름과 함께 사용합니다.

aws kms describe-key \ --key-id alias/aws/ssm

표준 SecureString 파라미터를 생성하려면 Systems Manager API에서 PutParameter 작업을 사용합니다. Tier 파라미터를 생략하거나 기본값 Standard를 지정합니다. 값이 SecureStringType 파라미터를 포함합니다. KMS 키를 지정하려면 KeyId 파라미터를 사용합니다. 기본값은 계정 aws/ssm에 대한 AWS 관리형 키입니다.

그러면 Parameter Store에서 KMS 키와 일반 텍스트 파라미터 값을 사용하여 AWS KMS Encrypt 작업을 호출합니다. AWS KMS는 암호화된 파라미터 값을 반환하고 Parameter Store에서는 이를 파라미터 이름과 함께 저장합니다.

다음 예제에서는 Systems Manager의 put-parameter 명령과 AWS CLI의 --type 파라미터를 사용하여 SecureString 파라미터를 생성합니다. 이 명령은 선택 항목인 --tier--key-id 파라미터를 생략하므로 Parameter Store는 표준 SecureString 파라미터를 생성하고 이를 AWS 관리형 키 아래에서 암호화합니다.

aws ssm put-parameter \ --name MyParameter \ --value "secret_value" \ --type SecureString

다음 유사한 예에서는 --key-id 파라미터를 사용하여 고객 관리형 키를 지정합니다. 이 예에서는 KMS 키 ID를 사용하여 KMS 키를 식별하지만 유효한 KMS 키 식별자를 사용할 수 있습니다. 이 명령은 Tier 파라미터(--tier)를 생략하므로 Parameter Store가 고급 SecureString 파라미터가 아니라 표준 파라미터를 생성합니다.

aws ssm put-parameter \ --name param1 \ --value "secret" \ --type SecureString \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Parameter Store에서 SecureString 파라미터를 가져올 때 값이 암호화됩니다. 파라미터를 얻으려면 Systems Manager API의 GetParameter 작업을 사용합니다.

다음 예제에서는 AWS CLI에서 Systems Manager get-parameter 명령을 사용하여 값을 해독하지 않고 Parameter Store에서 MyParameter 파라미터를 가져옵니다.

aws ssm get-parameter --name MyParameter
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}

파라미터 값을 반환하기 전에 값을 해독하려면 GetParameterWithDecryption 파라미터를 true로 설정합니다. WithDecryption을 사용하면 Parameter Store는 사용자 대신 AWS KMS Decrypt 작업을 호출하여 파라미터 값을 해독합니다. 따라서 GetParameter 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

aws ssm get-parameter \ --name MyParameter \ --with-decryption
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}

다음 워크플로는 Parameter Store에서 KMS 키를 사용하여 표준 SecureString 파라미터를 암호화하고 해독하는 방식을 보여줍니다.

표준 파라미터 암호화

  1. PutParameter를 사용하여 SecureString 파라미터를 생성하면 Parameter Store가 AWS KMS로 Encrypt 요청을 보냅니다. 이 요청은 일반 텍스트 파라미터 값, 사용자가 선택한 KMS 키, Parameter Store 암호화 컨텍스트를 포함합니다. AWS KMS로 전송하는 동안 SecureString 파라미터의 일반 텍스트 값은 TLS(전송 계층 보안)에 의해 보호됩니다.

  2. AWS KMS는 파라미터 값을 지정된 KMS 키와 암호화 컨텍스트로 암호화합니다. 암호화 텍스트는 Parameter Store에 반환되고, 여기에서 파라미터 이름과 암호화된 값이 저장됩니다.

    표준 SecureString 파라미터 값 암호화

표준 파라미터 복호화

  1. GetParameter 요청에 WithDecryption 파라미터를 포함하면 Parameter Store는 암호화된 SecureString 파라미터 값 및 Parameter Store 암호화 컨텍스트와 함께 Decrypt 요청을 AWS KMS로 전송합니다.

  2. AWS KMS는 동일한 KMS 키와 제공된 암호화 컨텍스트를 사용하여 암호화된 값을 해독합니다. 일반 텍스트(해독된) 파라미터 값을 Parameter Store에 반환합니다. 전송 중 일반 텍스트 데이터는 TLS에 의해 보호됩니다.

  3. Parameter Store에서는 일반 텍스트 파라미터 값을 GetParameter 응답으로 반환합니다.

고급 SecureString 파라미터 보호

PutParameter를 사용하여 고급 SecureString 파라미터를 생성하는 경우 Parameter Store에서는 AWS Encryption SDK 및 대칭 암호화 AWS KMS key가 있는 봉투 암호화를 사용하여 파라미터 값을 보호합니다. 각 고급 파라미터 값은 고유한 데이터 키로 암호화되고, 데이터 키는 KMS 키로 암호화됩니다. 계정(aws/ssm)의 AWS 관리형 키 또는 모든 고객 관리형 키를 사용할 수 있습니다.

AWS Encryption SDK는 업계 표준 및 모범 사례를 사용하여 데이터를 암호화하고 해독할 수 있게 도와주는 오픈 소스 클라이언트 측 라이브러리입니다. 이 SDK는 다양한 플랫폼과 명령줄 인터페이스를 비롯해 다양한 프로그래밍 언어에서 지원됩니다. 소스 코드를 볼 수 있으며 GitHub에서 개발에 기여할 수 있습니다.

SecureString 파라미터 값에 대해 Parameter Store는 AWS Encryption SDK를 호출하여 AWS KMS가 생성하는 고유한 데이터 키(GenerateDataKey)로 파라미터 값을 암호화합니다. AWS Encryption SDK는 암호화된 파라미터 값과 고유한 데이터 키의 암호화된 사본을 포함하는 암호화된 메시지를 Parameter Store로 반환합니다. Parameter Store는 SecureString 파라미터 값에 전체 암호화된 메시지를 저장합니다. 그런 다음 사용자가 고급 SecureString 파라미터 값을 가져오면 Parameter Store가 AWS Encryption SDK를 사용하여 파라미터 값을 해독합니다. 이를 위해 AWS KMS를 호출하여 암호화된 데이터 키를 해독해야 합니다.

고급 SecureString 파라미터를 생성하려면 Systems Manager API에서 PutParameter 작업을 사용합니다. Tier 파라미터의 값을 Advanced로 설정합니다. 값이 SecureStringType 파라미터를 포함합니다. KMS 키를 지정하려면 KeyId 파라미터를 사용합니다. 기본값은 계정 aws/ssm에 대한 AWS 관리형 키입니다.

aws ssm put-parameter \ --name MyParameter \ --value "secret_value" \ --type SecureString \ --tier Advanced

다음 유사한 예에서는 --key-id 파라미터를 사용하여 고객 관리형 키를 지정합니다. 예제에서는 KMS 키의 Amazon 리소스 이름(ARN)을 사용하지만 사용자는 유효한 KMS 키 식별자를 모두 사용할 수 있습니다.

aws ssm put-parameter \ --name MyParameter \ --value "secret_value" \ --type SecureString \ --tier Advanced \ --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab

Parameter Store에서 SecureString 파라미터를 가져오면 AWS Encryption SDK가 반환한 암호화된 메시지가 해당 값입니다. 파라미터를 얻으려면 Systems Manager API의 GetParameter 작업을 사용합니다.

다음 예제에서는 Systems Manager GetParameter 작업을 사용하여 값을 해독하지 않고 Parameter Store에서 MyParameter 파라미터를 가져옵니다.

aws ssm get-parameter --name MyParameter
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}

파라미터 값을 반환하기 전에 값을 해독하려면 GetParameterWithDecryption 파라미터를 true로 설정합니다. WithDecryption을 사용하면 Parameter Store는 사용자 대신 AWS KMS Decrypt 작업을 호출하여 파라미터 값을 해독합니다. 따라서 GetParameter 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

aws ssm get-parameter \ --name MyParameter \ --with-decryption
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}

고급 SecureString 파라미터를 표준 파라미터로 변환할 수 없지만, 표준 SecureString 파라미터를 고급 파라미터로 변환할 수는 있습니다. 표준 SecureString 파라미터를 고급 SecureString 파라미터로 변환하려면 PutParameter 작업에 Overwrite 파라미터를 사용합니다. TypeSecureString이고 Tier 값은 Advanced이어야 합니다. 고객 관리형 키를 지정하는 KeyId 파라미터는 선택 사항입니다. 이를 생략하면 Parameter Store가 계정의 AWS 관리형 키를 사용합니다. 다른 KMS 키를 사용하여 표준 파라미터를 암호화했더라도 보안 주체에게 사용 권한이 있는 모든 KMS 키를 사용할 수 있습니다.

Overwrite 파라미터를 사용하면 Parameter Store는 AWS Encryption SDK를 사용하여 파라미터 값을 암호화합니다. 그런 다음 Parameter Store에 새로 암호화된 메시지를 저장합니다.

aws ssm put-parameter \ --name myStdParameter \ --value "secret_value" \ --type SecureString \ --tier Advanced \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --overwrite

다음 워크플로는 Parameter Store에서 KMS 키를 사용하여 고급 SecureString 파라미터를 암호화하고 해독하는 방식을 보여줍니다.

고급 파라미터 암호화

  1. PutParameter를 사용하여 고급 SecureString 파라미터를 생성하는 경우 Parameter Store는 AWS Encryption SDK 및 AWS KMS를 사용하여 파라미터 값을 암호화합니다. Parameter Store는 파라미터 값, 지정한 KMS 키, Parameter Store 암호화 컨텍스트와 함께 AWS Encryption SDK를 호출합니다.

  2. AWS Encryption SDK는 GenerateDataKey 요청을 지정한 KMS 키 식별자와 Parameter Store 암호화 컨텍스트와 함께 AWS KMS로 전송합니다. AWS KMS는 고유한 데이터 키의 사본 2개, 즉 일반 텍스트 사본 1개와 KMS 키로 암호화된 사본 1개를 반환합니다. (암호화 컨텍스트는 데이터 키를 암호화할 때 사용됩니다.)

  3. AWS Encryption SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 암호화합니다. 암호화된 파라미터 값, 암호화된 데이터 키, Parameter Store 암호화 컨텍스트를 포함하는 기타 데이터를 포함한 암호화된 메시지를 반환합니다.

  4. Parameter Store는 암호화된 메시지를 파라미터 값으로 저장합니다.

    고급 SecureString 파라미터 값 암호화

고급 파라미터 해독

  1. GetParameter 요청에 WithDecryption 파라미터를 포함시켜 고급 SecureString 파라미터를 가져올 수 있습니다. 그러면 Parameter Store가 암호화된 메시지를 파라미터 값에서 AWS Encryption SDK의 해독 메서드로 전달합니다.

  2. AWS Encryption SDK가 KMS AWS KMS Decrypt 작업을 호출합니다. 이 작업이 암호화된 데이터 키와 Parameter Store 암호화 컨텍스트를 암호화된 메시지로부터 전달합니다.

  3. AWS KMS는 KMS 키와 Parameter Store 암호화 컨텍스트를 사용하여 암호화된 데이터 키를 해독합니다. 그런 다음 일반 텍스트(해독된) 데이터 키를 AWS Encryption SDK에 반환합니다.

  4. AWS Encryption SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 해독합니다. 그런 다음 일반 텍스트 파라미터 값을 Parameter Store에 반환합니다.

  5. Parameter Store는 암호화 컨텍스트를 확인하고 GetParameter 응답에서 일반 텍스트 파라미터 값을 반환합니다.

파라미터 값 암호화 및 해독 권한 설정

표준 SecureString 파라미터 값을 암호화하려면 사용자에게 kms:Encrypt 권한이 필요합니다. 고급 SecureString 파라미터 값을 암호화하려면 사용자에게 kms:GenerateDataKey 권한이 필요합니다. 어떤 유형이든 SecureString 파라미터 값을 해독하려면 사용자에게 kms:Decrypt 권한이 필요합니다.

AWS Identity and Access Management(IAM) 정책을 사용하여 사용자가 Systems Manager PutParameterGetParameter 작업을 호출하는 권한을 허용하거나 거부할 수 있습니다.

고객 관리형 키를 사용하여 SecureString 파라미터 값을 암호화하는 경우 IAM 정책 및 키 정책을 사용하여 암호화 및 해독 권한을 관리할 수 있습니다. 그러나 기본 aws/ssm KMS 키에 대한 액세스 제어 정책은 수립할 수 없습니다. 고객 관리형 키 액세스 제어에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서KMS 키 액세스 및 권한을 참조하세요.

다음 예제는 표준 SecureString 파라미터용으로 고안된 IAM 정책을 보여줍니다. 이 정책은 사용자가 FinancialParameters 경로의 모든 파라미터에 대해 Systems Manager PutParameter 작업을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS Encrypt 작업을 호출할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:111122223333:parameter/FinancialParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

다음 예제는 고급 SecureString 파라미터용으로 고안된 IAM 정책을 보여줍니다. 이 정책은 사용자가 ReservedParameters 경로의 모든 파라미터에 대해 Systems Manager PutParameter 작업을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS GenerateDataKey 작업을 호출할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:111122223333:parameter/ReservedParameters/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

마지막 예제는 표준 또는 고급 SecureString 파라미터에 사용할 수 있는 IAM 정책입니다. 이 정책은 ITParameters 경로의 모든 파라미터에 대해 Systems Manager GetParameter 작업(및 관련 작업)을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS Decrypt 작업을 호출할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:111122223333:parameter/ITParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Parameter Store 암호화 컨텍스트

암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우 AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

암호화 컨텍스트를 사용하여 감사 레코드 및 로그에서 암호화 작업을 식별할 수도 있습니다. 암호화 컨텍스트는 로그(예: AWS CloudTrail 로그)에 일반 텍스트로 표시됩니다.

AWS Encryption SDK도 암호화 컨텍스트도 취하지만 취급 방법이 다릅니다. Parameter Store는 암호화 메서드에 암호화 컨텍스트를 제공합니다. AWS Encryption SDK는 암호화 컨텍스트를 암호화된 데이터에 암호화 방식으로 바인딩합니다. 또한 반환하는 암호화된 메시지의 헤더에 암호화 컨텍스트를 일반 텍스트로 포함시킵니다. 하지만 AWS KMS와 달리 AWS Encryption SDK 해독 메서드는 암호화 컨텍스트를 입력으로 취하지 않습니다. 대신, AWS Encryption SDK는 데이터를 해독할 때 암호화 컨텍스트를 암호화된 메시지에서 가져옵니다. Parameter Store는 일반 텍스트 파라미터 값을 사용자에게 반환하기 전에 암호화 컨텍스트가 예상된 값을 포함하는지 확인합니다.

Parameter Store에서는 암호화 작업에서 다음 암호화 컨텍스트를 사용합니다.

  • 키: PARAMETER_ARN

  • 값: 암호화 중인 파라미터의 Amazon 리소스 이름(ARN)입니다.

암호화 컨텍스트의 형식은 다음과 같습니다.

"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"

예를 들어 Parameter Store에서는 예제 AWS 계정 계정 및 리전에서 MyParameter 파라미터를 암호화하고 해독하는 호출에 이 암호화 컨텍스트를 포함합니다.

"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"

파라미터가 Parameter Store 계층 경로에 있는 경우, 그 경로와 이름도 암호화 컨텍스트에 포함됩니다. 예를 들어, 이 암호화 컨텍스트는 예제 AWS 계정 및 영역에서 /ReadableParameters 경로의 MyParameter 파라미터를 암호화 및 해독할 때 사용됩니다.

"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/ReadableParameters/MyParameter"

Systems Manager GetParameter 작업이 반환하는 올바른 암호화 컨텍스트와 암호화된 파라미터 값을 사용하여 AWS KMS Decrypt 작업을 호출하면 암호화된 SecureString 파라미터를 해독할 수 있습니다. 그러나 GetParameter 작업에 WithDecryption 파라미터를 사용하여 Parameter Store 파라미터 값을 해독하는 것이 좋습니다.

IAM 정책에 암호화 컨텍스트를 포함할 수도 있습니다. 예를 들어, 사용자가 특정 파라미터 값 하나만 해독하거나 파라미터 값 세트를 암호화하도록 허용할 수 있습니다.

다음 예제 IAM 정책에서는 사용자가 MyParameter 파라미터 값을 가져오고 지정된 KMS 키로 값을 해독할 수 있도록 허용합니다. 하지만 암호화 컨텍스트가 지정된 문자열과 일치하는 경우에만 권한이 적용됩니다. 이 권한은 다른 파라미터 또는 KMS 키에는 적용되지 않으며, 암호화 컨텍스트가 문자열과 일치하지 않을 경우 GetParameter 호출이 실패합니다.

이와 같은 정책 문을 사용하기 전에 예제 ARN을 유효한 값으로 바꾸세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter" } } } ] }

Parameter Store의 KMS 키 문제 해결

SecureString 파라미터에 대한 작업을 수행하려면 Parameter Store가 해당 작업에 대해 지정된 AWS KMS KMS 키를 사용할 수 있어야 합니다. KMS 키와 관련된 대부분의 Parameter Store 실패는 다음과 같은 문제가 원인입니다.

  • 애플리케이션에서 사용 중인 자격 증명이 KMS 키에 대해 지정된 작업을 수행할 수 있는 권한이 없습니다.

    이 오류를 해결하려면 다른 자격 증명을 사용하여 애플리케이션을 실행하거나 작업을 차단하고 있는 IAM 또는 키 정책을 수정합니다. AWS KMS IAM 및 키 정책에 대한 도움말은 AWS Key Management Service 개발자 안내서KMS 키 액세스 및 권한을 참조하세요.

  • KMS 키를 찾을 수 없습니다.

    일반적으로 KMS 키에 대해 잘못된 식별자를 사용하는 경우에 발생합니다. KMS 키에 대해 올바른 식별자를 찾고 명령을 다시 시도하십시오.

  • KMS 키를 사용할 수 없습니다. 이 경우 Parameter Store에서는 InvalidKeyId 예외와 AWS KMS의 자세한 오류 메시지를 반환합니다. KMS 키 상태가 Disabled이면 이를 활성화합니다. 상태가 Pending Import이면 가져오기 절차를 완료합니다. 키 상태가 Pending Deletion이면 키 삭제를 취소하거나 다른 KMS 키를 사용합니다.

    KMS 키의 키 상태를 확인하려면 DescribeKey 작업을 사용합니다.