Lambda 작업의 aws_access_key에 비밀 키가 포함되었을 가능성

Lambda 배포 플레이북에 실제 비밀 키를 직접 넣지 말고 배포 인증과 함수 실행 역할을 각각 관리하세요.

설명

Ansible의 aws_access_key는 AWS 요청 인증에 사용하는 액세스 키 ID를 받는 필드이며 비밀 액세스 키를 넣는 곳이 아닙니다. 실제 비밀 키를 잘못 넣으면 인증에 실패할 수 있고, 플레이북이나 배포 기록에 비밀정보도 남습니다. 의심되는 값이 공개된 예시인지 실제 비밀정보인지 확인하세요.

Ansible의 배포 인증과 Lambda 실행 역할은 별개입니다. 작업의 role은 실행 중인 함수가 AWS 리소스에 접근할 때 사용할 역할을 지정하며, Ansible의 배포 요청을 인증하지는 않습니다.

잠재적 영향

  • 실제 비밀 키와 필요한 다른 인증 정보가 함께 노출되면 해당 권한 범위에서 원치 않는 AWS 요청에 사용될 수 있습니다.
  • 잘못된 인증 필드는 배포 실패를 일으킬 수 있습니다. 공유 키가 노출되었다면 이를 사용하는 다른 작업도 조사하고 수정해야 합니다.

해결 방법

  • 실제 자격 증명을 플레이북에 직접 넣지 말고 모듈 실행 환경에서 지원하는 임시 자격 증명이나 외부 인증 설정을 사용하세요.
  • Lambda 함수에는 필요한 권한을 가진 실행 역할을 지정하고, 배포 주체의 권한과 함수 실행 역할의 권한을 각각 최소화하세요.
  • 유효한 키가 노출되었다면 신속히 비활성화하거나 폐기하고 교체하세요. 저장소 이력, 배포 기록과 접근 로그를 조사하고 의존 작업을 수정한 뒤 정상 배포와 함수 동작을 확인하세요.

예시

키 문자열은 AWS 문서의 공개 예시이며 실제 자격 증명이 아닙니다. lambda_functions에는 name과 zip_file이 있는 항목 목록을 제공하고, 코드에 맞는 지원 런타임을 lambda_runtime으로 지정하세요. 실행 역할 ARN과 배포 파일은 별도로 준비해야 합니다.

변경 전

yaml
- name: looped creation
  amazon.aws.lambda:
    aws_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
    name: "{{ item.name }}"
    state: present
    zip_file: "{{ item.zip_file }}"
    runtime: "{{ lambda_runtime }}"
    role: "{{ lambda_execution_role_arn }}"
    handler: "hello_python.my_handler"
  loop: "{{ lambda_functions }}"

비밀 액세스 키 예시가 ID 필드에 잘못 들어 있습니다. 실제 키를 이런 방식으로 넣어서는 안 됩니다.

변경 후

yaml
- name: looped creation
  amazon.aws.lambda:
    name: "{{ item.name }}"
    state: present
    zip_file: "{{ item.zip_file }}"
    runtime: "{{ lambda_runtime }}"
    role: "{{ lambda_execution_role_arn }}"
    handler: hello_python.my_handler
  loop: "{{ lambda_functions }}"

자격 증명을 직접 넣지 않고 모듈 실행 환경에서 제공하도록 합니다. role은 함수의 실행 권한이므로 별도의 배포 인증도 준비하세요. 필드를 지우는 것만으로 이미 노출된 키가 폐기되지는 않습니다.

참조