aws 금융 클라우드 진단홈카탈로그진단 항목 전체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 백엔드 암호화와 접근 통제가 함께 필요합니다.
📋 평가항목 정보
평가항목 ID
PISM-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 공식 문서를 따르십시오.