AWS Systems Manager Parameter Store에서 AWS KMS 사용 방법 - AWS Key Management Service

AWS Systems Manager Parameter Store에서 AWS KMS 사용 방법

AWS Systems Manager Parameter Store를 사용하면 일반 텍스트 파라미터 이름과 암호화된 파라미터 값이 있는 파라미터인 보안 문자열 파라미터를 생성할 수 있습니다. Parameter Store에서 AWS KMS를 사용하여 보안 문자열 파라미터 값을 암호화 및 복호화하는 방법을 알아봅니다.

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

중요한 데이터를 관리하기 위해 보안 문자열 파라미터를 만들 수 있습니다. Parameter Store는 보안 문자열 파라미터를 생성하거나 변경할 때 AWS KMS keys를 사용하여 보안 문자열 파라미터의 파라미터 값을 암호화합니다. 또한 파라미터에 액세스할 때 KMS 키를 사용하여 파라미터 값을 해독합니다. Parameter Store에서 계정용으로 생성한 AWS 관리형 키를 사용하거나, 고유한 고객 관리형 키를 지정할 수 있습니다.

중요

Parameter Store는 대칭 KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 파라미터를 암호화할 수 없습니다. KMS 키가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 및 비대칭 KMS 키 식별 단원을 참조하십시오.

Parameter Store는 두 계층의 보안 문자열 파라미터(표준고급)를 지원합니다. 표준 파라미터(4,096바이트를 초과할 수 없음)는 사용자가 지정한 KMS 키로 직접 암호화 및 해독됩니다. 고급 보안 문자열 파라미터를 암호화 및 복호화하기 위해 Parameter Store는 AWS Encryption SDK에서 봉투 암호화를 사용합니다. 표준 보안 문자열 파라미터를 고급 파라미터로 변환할 수 있지만, 고급 파라미터를 표준 파라미터로 변환할 수는 없습니다. 표준 보안 문자열 파라미터 및 고급 보안 문자열 파라미터 간의 차이에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 Systems Manager 고급 파라미터 정보를 참조하십시오.

표준 보안 문자열 파라미터 보호

Parameter Store는 어떠한 암호화 작업도 수행하지 않습니다. 그 대신 보안 문자열 매개변수 값을 암호화하고 복호화하기 위해 AWS KMS에 의존합니다. 표준 보안 문자열 매개변수 값을 생성하거나 변경할 때 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 작업을 사용합니다. 다음 예에서는 describe-key(AWS Command Line Interface)의 AWS CLI 명령을 aws/ssm 별칭 이름과 함께 사용합니다.

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

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

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

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

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

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

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

Parameter Store에서 보안 문자열 파라미터를 가져올 때 값이 암호화됩니다. 파라미터를 얻으려면 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/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }

파라미터 값을 반환하기 전에 값을 해독하려면 WithDecryptionGetParameter 파라미터를 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 키를 사용하여 표준 보안 문자열 파라미터를 암호화 및 복호화하는 방식을 보여줍니다.

표준 파라미터 암호화

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

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

    
              표준 보안 문자열 파라미터 값 암호화

표준 파라미터 해독

  1. GetParameter 요청에 WithDecryption 파라미터를 포함하면 Parameter Store는 암호화된 보안 문자열 파라미터 값 및 Parameter Store 암호화 컨텍스트와 함께 Decrypt 요청을 AWS KMS로 보냅니다.

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

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

고급 보안 문자열 파라미터 보호

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

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

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

고급 보안 문자열 파라미터를 만들려면 Systems Manager API에서 PutParameter 작업을 사용합니다. Tier 파라미터의 값을 Advanced로 설정합니다. 값이 TypeSecureString 파라미터를 포함합니다. 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-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Parameter Store에서 보안 문자열 파라미터를 가져오면 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/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }

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

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

고급 보안 문자열 파라미터를 표준 파라미터로 변환할 수 없지만, 표준 보안 문자열 파라미터를 고급 파라미터로 변환할 수는 있습니다. 표준 보안 문자열 파라미터를 고급 보안 문자열로 변환하려면 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 키를 사용하여 고급 보안 문자열 파라미터를 암호화 및 복호화하는 방식을 보여줍니다.

고급 파라미터 암호화

  1. PutParameter를 사용하여 고급 보안 문자열 파라미터를 생성하면 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는 암호화된 메시지를 파라미터 값으로 저장합니다.

    
              고급 보안 문자열 파라미터 값 암호화

고급 파라미터 복호화

  1. GetParameter 요청에 WithDecryption 파라미터를 포함시켜 고급 보안 문자열 파라미터를 가져올 수 있습니다. 그러면 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 응답에서 일반 텍스트 파라미터 값을 반환합니다.

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

표준 보안 문자열 파라미터 값을 암호화하려면 사용자에게 kms:Encrypt 권한이 필요합니다. 고급 보안 문자열 파라미터 값을 암호화하려면 사용자에게 kms:GenerateDataKey 권한이 필요합니다. 두 유형의 보안 문자열 매개변수 값을 해독하려면 사용자에게 kms:Decrypt 권한이 필요합니다.

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

고객 관리형 키를 사용하여 보안 문자열 파라미터 값을 암호화하는 경우 IAM 정책 및 키 정책을 사용하여 암호화 및 복호화 권한을 관리할 수 있습니다. 그러나 기본 aws/ssm KMS 키에 대한 액세스 제어 정책은 수립할 수 없습니다. 고객 관리형 KMS 키의 액세스 제어에 대한 자세한 내용은 AWS KMS에 대한 인증 및 액세스 제어 단원을 참조하십시오.

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

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

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ITParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-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_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"

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

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

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

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

Systems Manager GetParameter 작업에서 반환되는 암호화된 파라미터 값과 올바른 암호화 컨텍스트를 통해 AWS KMS Decrypt 작업을 호출하여 암호화된 보안 문자열 파라미터를 복호화할 수 있습니다. 그러나 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-west-2:111122223333:parameter/MyParameter" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter" } } } ] }

Parameter Store의 KMS 키 문제 해결

보안 문자열 매개변수에 대한 작업을 수행하려면 Parameter Store에서 의도한 작업에 대해 지정한 AWS KMS KMS 키를 사용할 수 있어야 합니다. KMS 키와 관련된 대부분의 Parameter Store 오류는 다음 문제로 인해 발생합니다.

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

    이 오류를 해결하려면 다른 자격 증명을 사용하여 애플리케이션을 실행하거나 작업을 차단하고 있는 IAM 또는 키 정책을 수정합니다. AWS KMS IAM 및 키 정책에 대한 도움말은 AWS KMS에 대한 인증 및 액세스 제어 단원을 참조하십시오.

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

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

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

    AWS KMS 콘솔에서 KMS 키의 키 상태를 찾으려면 고객 관리형 키 또는 AWS 관리형 키 페이지에서 상태 열을 참조하십시오. AWS KMS API를 사용해 KMS 키의 상태를 찾으려면 DescribeKey 작업을 사용합니다.