파라미터 처리 문제 해결 - AWS Systems Manager

파라미터 처리 문제 해결

일반적인 파라미터 처리 문제

실행 중에 사용할 수 없는 환경 변수

문제: 환경 변수(SSM_parameter-name)를 찾을 수 없어 명령이 실패합니다.

가능한 원인:

  • SSM Agent 버전이 환경 변수 보간을 지원하지 않습니다.

  • interpolationTypeENV_VAR로 설정되지 않았습니다.

  • 파라미터 이름이 예상 환경 변수 이름과 일치하지 않습니다.

해결 방법:

  • SSM Agent 버전이 3.3.2746.0 이상인지 확인합니다.

  • 이전 에이전트 버전에 대한 대체 로직을 추가합니다.

    if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
특수 문자가 포함된 파라미터 값

문제: 파라미터 값에 공백, 따옴표 또는 기타 특수 문자가 포함되면 명령이 실패합니다.

해결 방법:

  • 환경 변수를 참조할 때 적절한 따옴표를 사용합니다.

    # Correct echo "$SSM_parameter-name" # Incorrect echo $SSM_parameter-name
  • allowedPattern을 사용하여 특수 문자를 제한하는 입력 검증을 추가합니다.

플랫폼 간 일관되지 않은 동작

문제: 파라미터 처리가 Linux 시스템과 Windows Server 시스템에서 다르게 작동합니다.

해결 방법:

  • 플랫폼별 환경 변수 구문을 사용합니다.

    # PowerShell $env:SSM_parameter-name # Bash $SSM_parameter-name
  • 문서에서 플랫폼별 사전 조건 검사를 사용합니다.

파라미터 값이 제대로 이스케이프되지 않음

문제: 환경 변수 보간 사용에도 불구하고 명령 주입 취약성.

해결 방법:

  • 명령에 파라미터 값을 포함할 때는 항상 적절한 이스케이프를 사용합니다.

    # Correct mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\"" # Incorrect mysql_command="mysql -u $SSM_username -p$SSM_password"

파라미터 검증 팁

다음 기법을 사용하여 파라미터 처리를 검증합니다.

  1. 테스트 환경 변수 가용성:

    #!/bin/bash # Print all SSM_ environment variables env | grep ^SSM_ # Test specific parameter if [ -n "$SSM_parameter" ]; then echo "Parameter is available" else echo "Parameter is not available" fi
  2. 파라미터 패턴 확인:

    parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
  3. 오류 처리 포함:

    if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then echo "Parameter validation failed" exit 1 fi