SecureString 파라미터 - AWS Systems Manager

SecureString 파라미터

SecureString 파라미터는 안전한 방식으로 저장되고 참조되어야 하는 모든 민감한 데이터를 뜻합니다. 암호나 라이선스 키처럼 사용자가 일반 텍스트로 수정하거나 참조해서는 안 되는 데이터가 있는 경우, SecureString 데이터 형식을 사용하여 이 파라미터를 생성합니다.

중요

String 또는 StringList 파라미터에 중요한 데이터를 저장하지 마십시오. 암호화된 상태로 유지해야 하는 모든 중요한 데이터의 경우 SecureString 파라미터 유형만 사용하십시오.

자세한 내용은 파라미터 유형 및 예제 단원을 참조하십시오.

다음 시나리오에 SecureString 파라미터를 사용하는 것이 좋습니다.

  • 명령, 함수, 에이전트 로그 또는 AWS CloudTrail 로그에 일반 텍스트로 값을 노출하지 않고 AWS 서비스 전반에 걸쳐 데이터/파라미터를 사용하고 싶은 경우.

  • 민감한 데이터에 액세스하는 대상을 제어하고 싶은 경우.

  • 민감한 데이터에 액세스하는 시점을 감사하고 싶은 경우(AWS CloudTrail).

  • 민감한 데이터를 암호화하고 싶은 경우와 자체 암호화 키로 액세스를 관리하고 싶은 경우.

중요

SecureString 파라미터의 만 암호화됩니다. 파라미터 이름, 설명, 기타 속성은 암호화되지 않습니다.

AWS KMS 암호화 및 요금

파라미터를 생성할 때 SecureString 형식을 선택하면 Parameter Store에서 AWS Key Management Service(KMS) 고객 마스터 키(CMK)를 사용하여 파라미터 값을 암호화합니다. KMS는 파라미터 값을 암호화할 때 고객 관리형 CMK 또는 AWS 관리형 CMK를 사용합니다.

SecureString 파라미터 생성 시 Parameter Store에서 비용이 부과되지 않지만 AWS Key Management Service 암호화 사용에 대한 요금이 적용됩니다. 자세한 내용은 AWS Key Management Service 요금을 참조하십시오.

AWS 관리형 및 고객 관리형 CMK에 대한 자세한 내용은 AWS Key Management Service Developer GuideAWS Key Management Service개념을 참조하십시오. Parameter Store 및 AWS KMS 암호화에 대한 자세한 내용은 AWS Systems Manager Parameter Store의 AWS KMS사용 방법을 참조하십시오.

참고

CMK를 보려면 AWS KMS DescribeKey 작업을 사용합니다. 이 AWS CLI 예에서는 DescribeKey를 사용하여 AWS 관리형 CMK를 봅니다.

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

AWS 기본 키 및 고객 관리형 키 사용에 대한 IAM 권한

Parameter Store SecureString 파라미터는 AWS Key Management Service(AWS KMS) 키를 사용하여 암호화되고 해독됩니다. 고객 마스터 키(CMK) 또는 AWS에서 제공하는 기본 KMS 키를 사용하여 SecureString 매개변수를 암호화하도록 선택할 수 있습니다.

고객 관리형 키를 사용하는 경우, 파라미터 또는 파라미터 경로에 대한 사용자 액세스 권한을 부여하는 IAM 정책에서 키에 대한 명시적 kms:Encrypt 권한을 제공해야 합니다. 예를 들어, 다음 정책은 사용자가 지정된 리전 및 계정에서 “prod-”로 시작하는 SecureString 파라미터를 생성, 업데이트 및 확인할 수 있도록 허용합니다.

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

1지정된 고객 관리형 키를 사용하여 암호화된 고급 파라미터를 만들려면 kms:GenerateDataKey 권한이 필요합니다.

이와 대조적으로 고객 계정 내의 모든 사용자는 기본 AWS 관리형 키에 액세스할 수 있습니다. 이 기본 키를 사용하여 SecureString 파라미터를 암호화하고 사용자가 SecureString 파라미터로 작업하지 않도록 하려면, 다음 정책 예제와 같이 IAM 정책에서 기본 키에 대한 액세스를 명시적으로 거부해야 합니다.

참고

AWS 관리형 키 페이지의 AWS KMS 콘솔에서 기본 키의 ARN을 찾을 수 있습니다. 기본 키는 Alias(별칭)aws/ssm으로 식별되는 키입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey " ], "Resource": [ "default-key-ARN" ] } ] }

계정의 SecureString 파라미터에 대한 세분화된 액세스 제어가 필요한 경우, 고객 관리형 CMK를 사용하여 이러한 파라미터에 대한 액세스를 보호하고 제한해야 합니다. 또한 AWS CloudTrail를 사용하여 SecureString 파라미터 활동을 모니터링하는 것이 좋습니다.

자세한 정보는 다음 항목을 참조하십시오.

기본 AWS 관리형 키를 사용하여 SecureString 파라미터 생성

계정 및 리전에서 AWS 관리형 AWS KMS 키를 사용하여 SecureString 파라미터를 생성하는 경우, --key-id 파라미터에 값을 제공할 필요가 없습니다.

다음 AWS CLI 예제는 --key-id 파라미터 없이 Parameter Store에서 새로운 SecureString 파라미터를 생성하는 명령을 보여줍니다.

Linux
aws ssm put-parameter \ --name parameter-name \ --value "parameter-value" \ --type SecureString
Windows
aws ssm put-parameter ^ --name parameter-name ^ --value "parameter-value" ^ --type SecureString

고객 관리형 CMK를 사용하여 SecureString 파라미터 생성

계정에 할당된 AWS 관리형 CMK 대신 고객 관리형 CMK를 사용하려면 --key-id 파라미터를 사용하여 키를 지정해야 합니다. 파라미터는 다음 KMS 파라미터 형식을 지원합니다.

  • 키 ARN 예:

    arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012

  • 별칭 ARN 예:

    arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

  • 키 ID 예:

    12345678-1234-1234-1234-123456789012

  • 별칭 이름 예:

    alias/MyAliasName

AWS Management Console 또는 AWS KMS API를 사용하여 고객 관리형 CMK를 생성할 수 있습니다. 다음 AWS CLI 명령은 AWS 계정의 현재 리전에 고객 관리형 키를 생성합니다.

aws kms create-key

다음 형식의 명령을 통해 방금 생성한 키를 사용하여 SecureString 파라미터를 생성합니다.

Linux
aws ssm put-parameter \ --name parameter-name \ --value "parameter-value" \ --type SecureString \ --key-id arn:aws:kms:us-east-2:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e
Windows
aws ssm put-parameter ^ --name parameter-name ^ --value "parameter-value" ^ --type SecureString ^ --key-id arn:aws:kms:us-east-2:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e
참고

암호화된 값을 사용하여 파라미터를 수동으로 만들 수 있습니다. 이 경우 값이 이미 암호화되어 있기 때문에 SecureString 파라미터 유형을 선택할 필요가 없습니다. SecureString을 선택하면 파라미터가 이중으로 암호화됩니다.

기본적으로 모든 SecureString 값은 암호 텍스트로 표시됩니다. SecureString 값의 암호를 복호화하려면 사용자에게 KMS 복호화 API 작업을 호출할 수 있는 권한이 있어야 합니다. KMS 액세스 제어에 대한 자세한 정보는 AWS Key Management Service Developer GuideAWS KMS에 대한 인증 및 액세스 제어를 참조하십시오.

다른 AWS 서비스와 함께 SecureString 파라미터 사용

다른 AWS 서비스와 함께 SecureString 파라미터를 사용할 수도 있습니다. 다음 예제에서는 AWS Lambda 함수가 GetParameters API를 사용하여 SecureString 파라미터를 검색합니다.

from __future__ import print_function import json import boto3 ssm = boto3.client('ssm', 'us-east-2') def get_parameters(): response = ssm.get_parameters( Names=['LambdaSecureString'],WithDecryption=True ) for parameter in response['Parameters']: return parameter['Value'] def lambda_handler(event, context): value = get_parameters() print("value1 = " + value) return value # Echo back the first key value

관련 주제

SecureString 파라미터를 생성 및 사용하는 방법에 대한 예제는 연습: SecureString 파라미터를 생성하고 도메인에 인스턴스 조인(PowerShell) 단원을 참조하십시오. 다른 AWS 제품과 함께 Systems Manager 파라미터를 사용하는 방법에 대한 자세한 정보는 다음 블로그 게시물을 참조하십시오.