본문 바로가기
홈 카탈로그 진단 항목 전체 ap-northeast-2 · 3820-1174-9265
클라우드 관리체계 보안 취약점 평가기준 (퍼블릭 클라우드) / 5. 운영 관리 / 5.3 정보처리시스템 보호대책

PISM-036환경변수 내 중요정보 암호화 적용 여부

위험도 5 기술적 보안 Lambda 평가 구분: 스크립트
가상자원의 환경변수 내에 비밀번호, API Key 등 중요정보가 암호화되지 않은 평문 형태로 저장되어 있는 경우, 중요정보가 외부로 유출될 수 있는 위협이 존재하므로 중요정보를 암호화하여 저장하고 있는지 점검합니다.
1. 점검 대상 확인
2. CLI 진단
3. 양호/취약 판정
4. 조치 · 재확인

방법 1AWS Management Console 경로

Lambda → 함수 → 대상 함수 선택 → 구성 → 환경 변수에서 목록과 값 확인
콘솔은 화면이 자주 바뀝니다. 실제 점검에서는 아래 CLI(방법 2) 로 증적을 남기는 편이 재현성이 높습니다.

방법 2AWS CLI 진단

아래 명령을 눌러 실행하거나, 직접 입력해 보세요. 응답은 실제 AWS CLI 출력 형식을 따릅니다.
$ aws sts get-caller-identity { "UserId": "AIDA4XQ7N2VZK3RJTPLWE", "Account": "382011749265", "Arn": "arn:aws:iam::382011749265:user/audit-readonly" } 진단 계정으로 로그인되었습니다. 아래 명령을 실행해 점검을 시작하세요.

판정이 환경은 양호합니까, 취약합니까?

평가기준의 판단 근거는 명령 출력입니다. 먼저 위에서 명령을 실행해 출력을 확인하세요.

🛠️ 조치 방법

환경변수에서 비밀값을 걷어내고 Secrets Manager 에 옮긴 뒤, 함수가 실행 시점에 조회하도록 바꿉니다. 환경변수에는 시크릿의 이름(ARN) 만 남깁니다.
# 1) 시크릿 생성 (자동 교체 활성화) $ aws secretsmanager create-secret --name fin/openbanking/client-secret \ --kms-key-id alias/fin-secrets-cmk \ --secret-string '{"client_secret":"b7f3a91c-4e28-4d6a-9f05-c1873ae0d52b"}' $ aws secretsmanager rotate-secret --secret-id fin/openbanking/client-secret \ --rotation-lambda-arn arn:aws:lambda:ap-northeast-2:382011749265:function:fin-secret-rotator \ --rotation-rules AutomaticallyAfterDays=90 # 2) 환경변수에서 비밀값 제거 — 이름만 남긴다 $ aws lambda update-function-configuration \ --function-name fin-openbanking-token-refresh \ --environment 'Variables={STAGE=prod, OPENBANKING_BASE=https://openapi.openbanking.or.kr, SECRET_ID=fin/openbanking/client-secret}' # 3) 실행 역할에 해당 시크릿만 읽을 권한 부여 (와일드카드 금지) $ aws iam put-role-policy --role-name fin-lambda-openbanking \ --policy-name read-openbanking-secret --policy-document '{ "Version":"2012-10-17", "Statement":[{"Effect":"Allow","Action":"secretsmanager:GetSecretValue", "Resource":"arn:aws:secretsmanager:ap-northeast-2:382011749265:secret:fin/openbanking/client-secret-*"}] }' # 4) DB 비밀번호는 IAM 데이터베이스 인증으로 아예 없앨 수도 있다 $ aws rds modify-db-instance --db-instance-identifier fin-core-db \ --enable-iam-database-authentication --apply-immediately

📐 IaC 로 고정하기

콘솔에서 한 번 고쳐도 다음 배포에서 되돌아갑니다. 코드로 고정해야 재발하지 않습니다.
resource "aws_lambda_function" "token_refresh" { function_name = "fin-openbanking-token-refresh" role = aws_iam_role.lambda_openbanking.arn environment { variables = { STAGE = "prod" OPENBANKING_BASE = "https://openapi.openbanking.or.kr" SECRET_ID = aws_secretsmanager_secret.openbanking.name # 비밀값을 여기 두지 않는다. tfstate 에도 그대로 남기 때문이다. } } } resource "aws_secretsmanager_secret_rotation" "openbanking" { secret_id = aws_secretsmanager_secret.openbanking.id rotation_lambda_arn = aws_lambda_function.rotator.arn rotation_rules { automatically_after_days = 90 } }
주의 — 환경변수에서 값을 지워도 과거 버전에는 남아 있습니다. aws lambda list-versions-by-function 으로 이전 버전의 환경변수를 확인하고 필요하면 삭제하세요. 그리고 이미 노출된 시크릿은 교체가 답입니다 — 지웠다고 안전해지지 않습니다. Terraform 을 쓴다면 tfstate 파일에도 평문으로 기록되므로 state 백엔드 암호화와 접근 통제가 함께 필요합니다.

📋 평가항목 정보

평가항목 IDPISM-036
구분기술적 보안
통제분야5. 운영 관리
통제구분(대)5.3 정보처리시스템 보호대책
평가항목환경변수 내 중요정보 암호화 적용 여부
위험도5
평가 구분 (AWS)스크립트
상세설명가상자원의 환경변수 내에 비밀번호, API Key 등 중요정보가 암호화되지 않은 평문 형태로 저장되어 있는 경우, 중요정보가 외부로 유출될 수 있는 위협이 존재하므로 중요정보를 암호화하여 저장하고 있는지 점검합니다.

📎 확인 자료 (증적)

  • 함수별 get-function-configuration --query Environment 출력
  • 비밀값이 제거되었음을 보이는 조치 후 출력
  • Secrets Manager 시크릿 목록·KMS 키·자동 교체 주기 설정
  • 실행 역할의 시크릿 접근 정책 (리소스 한정 여부)
  • 노출 이력이 있는 시크릿의 교체 기록
평가에서는 화면 캡처보다 CLI 출력이 강한 증적입니다. 명령·실행시각·계정 ARN 이 함께 남기 때문입니다. 위 진단 탭의 출력을 그대로 보고서에 붙이면 됩니다.

🏦 금융 관점

오픈뱅킹 클라이언트 시크릿은 출금이체 API 호출 권한과 직결됩니다. 유출 시 곧바로 금전 피해로 이어지므로, 평가에서 위험도 5 가 붙습니다. 자격증명의 주기적 갱신(PISM-028·043)과 코드·이미지·리포지토리에 포함되지 않도록 자동 검출하는 체계까지 함께 갖춰야 합니다.
「클라우드 관리체계 보안 취약점 평가기준(퍼블릭 클라우드)」의 평가항목을 교육용으로 재구성한 시뮬레이터입니다. 계정 ID·ARN·리소스 ID 는 형식만 실제와 같게 만든 가상 값이며, 어떤 AWS 환경에도 접속하지 않습니다. 실제 평가에서는 기관의 최신 평가기준 원문과 AWS 공식 문서를 따르십시오.