기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Lambda 함수에 대한 노출 문제 해결
참고
Security Hub는 평가판 릴리스이며 변경될 수 있습니다.
AWS Security Hub는 AWS Lambda (Lambda) 함수에 대한 노출 조사 결과를 생성할 수 있습니다.
Security Hub 콘솔에서 노출 조사 결과와 관련된 Lambda 함수와 해당 식별 정보는 조사 결과 세부 정보의 리소스 섹션에 나열됩니다. 프로그래밍 방식으로 Security Hub API의 GetFindingsV2 작업을 통해 리소스 세부 정보를 검색할 수 있습니다.
노출 조사 결과와 관련된 리소스를 식별한 후 필요하지 않은 경우 리소스를 삭제할 수 있습니다. 필수적이지 않은 리소스를 삭제하면 노출 프로필과 AWS 비용을 줄일 수 있습니다. 리소스가 필요한 경우 다음 권장 문제 해결 단계를 수행하여 위험을 완화하세요. 문제 해결 주제는 특성 유형에 따라 구분됩니다.
단일 노출 조사 결과에는 여러 문제 해결 주제에서 식별된 문제가 포함됩니다. 반대로, 하나의 문제 해결 주제만 처리하여 노출 조사 결과를 해결하고 심각도 수준을 낮출 수 있습니다. 위험 해결 방법은 조직의 요구 사항과 워크로드에 따라 달라집니다.
참고
이 주제에 제공된 문제 해결 지침은 다른 AWS 리소스에서 추가 상담이 필요할 수 있습니다.
참고
이 주제에 제공된 문제 해결 지침은 다른 AWS 리소스에서 추가 상담이 필요할 수 있습니다.
목차
Lambda 함수의 잘못된 구성 특성
다음은 Lambda 함수에 대한 잘못된 구성 특성과 제안된 수정 단계입니다.
Lambda 함수가 지원되지 않는 런타임을 실행 중입니다.
Lambda를 사용하면 개발자가 관리형 환경에서 코드를 실행하는 런타임을 통해 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있습니다. Lambda는 관리형 런타임 및 해당 컨테이너 기본 이미지에 패치 및 보안 업데이트를 자동으로 적용합니다. 런타임 버전이 더 이상 지원되지 않는 경우 더 이상 보안 업데이트, 버그 수정 또는 기술 지원을 받지 않습니다. 더 이상 사용되지 않는 런타임에서 실행되는 함수는 보안 취약성이 있을 수 있으며 인증서 만료와 같은 문제로 인해 결국 작동이 중지될 수 있습니다. 또한 지원되지 않는 런타임은 사용 가능한 패치 없이 새로 발견된 보안 악용에 취약할 수 있습니다. 보안 모범 사례에 따라 Lambda 함수에 패치되고 지원되는 런타임을 사용하는 것이 좋습니다.
함수 런타임 업그레이드
노출의 리소스 탭에서 하이퍼링크를 사용하여 리소스를 엽니다. 그러면 Lambda 함수 창이 열립니다. 함수를 지원되는 런타임으로 업그레이드하려면 런타임 관리 구성을 구성합니다. 함수를 최신 런타임 버전으로 자동 업데이트하도록 선택할 수 있지만,이 옵션을 선택하기 전에 자동 업그레이드가 실행 중인 애플리케이션에 영향을 미칠 수 있는지 평가합니다. 자세한 내용은 Lambda가 런타임 버전 업데이트를 관리하는 방법 이해를 참조하세요.
Lambda 함수가 Amazon VPC 외부에 배포됨
Lambda 함수는 기본적으로 퍼블릭 인터넷에 액세스할 수 있도록 배포됩니다. 이 기본 구성은 Lambda 함수에 AWS 서비스 엔드포인트 및 외부 APIs에 연결할 수 있는 기능을 제공하지만 잠재적인 보안 위험에도 노출됩니다. 인터넷에 액세스할 수 있는 함수를 사용하여 데이터를 유출하거나, 승인되지 않은 서버와 통신하거나, 손상된 경우 외부 액터의 진입점이 될 수 있습니다. Amazon VPC는 정의된 프라이빗 네트워크 내의 리소스와만 통신하도록 Lambda 함수를 제한하여 네트워크 격리를 제공합니다. 표준 보안 원칙에 따라 VPC 내에 Lambda 함수를 배포하여 네트워크 격리를 통해 보안을 개선하는 것이 좋습니다.
VPC에 함수 연결
노출 조사 결과에서 하이퍼링크를 사용하여 리소스를 엽니다. 그러면 Lambda 함수 창이 열립니다. 네트워크 액세스를 제한하여 Lambda 함수를 보호하려면 적절한 네트워크 제어가 있는 VPC에 연결합니다. 함수를 VPC에 연결하기 전에 필요할 수 있는 모든 AWS 서비스 액세스를 계획합니다. NAT 게이트웨이 또는 VPC 엔드포인트가 없는 프라이빗 서브넷의 함수는 AWS 서비스 APIs에 연결할 수 없기 때문입니다. 계정의 Amazon VPC에 Lambda 함수를 연결하는 방법에 대한 자세한 내용은의 Amazon VPC에 Lambda 함수 연결을 참조하세요 AWS 계정. 함수가 프라이빗 서브넷 내에서 서비스에 액세스해야 하는 경우 인터넷 액세스 없이 AWS 서비스 연결에 VPC 엔드포인트를 사용하는 것이 좋습니다. 프라이빗 서브넷에서 아웃바운드 인터넷 연결이 필요한 경우 NAT 게이트웨이를 구성합니다.
Lambda 함수가 IAM 역할을 수임할 수 있음
Lambda 함수는 IAM 역할을 사용하여 AWS 서비스와 상호 작용합니다. 이러한 역할은 Lambda 함수가 실행 중에 AWS 리소스에 액세스할 수 있는 권한을 부여합니다. Lambda 함수가 작업을 수행하는 데 이러한 역할이 필요한 경우가 있지만 이러한 역할은 최소 권한 원칙을 따라야 합니다. 표준 보안 원칙에 따라는 함수의 의도된 기능에 따라 역할에 연결된 권한이 적절한지 검토하는 것이 AWS 좋습니다.
-
연결된 IAM 역할이 필요한지 확인
Lambda 함수에 IAM 실행 역할 구성이 필요한지 확인합니다. 대부분의 Lambda 함수는 CloudWatch에 로그 쓰기와 같은 기본적인 작동 권한이 필요합니다. 함수의 실행 역할에 연결된 권한을 검토하고 함수에 IAM 역할이 필요한지 확인합니다. Lambda 실행 역할에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 실행 역할을 사용하여 Lambda 함수 권한 정의를 참조하세요.
-
최소 권한 액세스 구현
지나치게 허용적인 정책을 함수 작동에 필요한 특정 권한만 부여하는 정책으로 바꿉니다. IAM 역할의 보안 모범 사례에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 최소 권한 적용을 참조하세요. 불필요한 권한을 식별하기 위해 IAM Access Analyzer를 사용하여 액세스 기록을 기반으로 정책을 수정하는 방법을 이해할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 외부 및 미사용 액세스 조사 결과를 참조하세요. 또는 새 IAM 역할을 생성하여 기존 역할을 사용하는 다른 Lambda 함수에 영향을 주지 않도록 할 수 있습니다. 이 시나리오에서는 새 IAM 역할을 생성한 다음 새 IAM 역할을 인스턴스와 연결합니다. 함수의 IAM 역할을 교체하는 방법에 대한 지침은 AWS Lambda 개발자 안내서의 함수의 실행 역할 업데이트를 참조하세요.
Lambda 함수와 연결된 IAM 역할에는 관리 액세스 정책이 있습니다.
관리 액세스 정책은 Lambda 함수에 AWS 서비스 및 리소스에 대한 광범위한 권한을 제공합니다. 이러한 정책에는 일반적으로 기능에 필요하지 않은 권한이 포함됩니다. 실행 역할에 필요한 최소 권한 집합 대신 Lambda 함수에 대한 관리 액세스 정책을 사용하여 IAM 자격 증명을 제공하면 함수가 손상된 경우 공격 범위가 증가할 수 있습니다. 표준 보안 원칙에 따라 최소 권한을 부여하는 것이 AWS 좋습니다. 즉, 작업을 수행하는 데 필요한 권한만 부여하는 것입니다.
-
관리 정책 검토 및 식별
노출 조사 결과에서 역할 이름을 식별합니다. IAM 대시보드로 이동하여 이전에 식별된 역할 이름을 가진 역할을 찾습니다. IAM 역할에 연결된 권한 정책을 검토합니다. 정책이 AWS 관리형 정책인 경우
AdministratorAccess
또는를 찾습니다IAMFullAccess
. 그렇지 않으면 정책 문서에서 문"Effect": "Allow", "Action": "*"
과가"Resource": "*"
함께 있는 문을 찾습니다. -
최소 권한 액세스 구현
관리 정책을 함수 작동에 필요한 특정 권한만 부여하는 정책으로 바꿉니다. IAM 역할의 보안 모범 사례에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 최소 권한 적용을 참조하세요. 불필요한 권한을 식별하기 위해 IAM Access Analyzer를 사용하여 액세스 기록을 기반으로 정책을 수정하는 방법을 이해할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 외부 및 미사용 액세스 조사 결과를 참조하세요. 또는 기존 역할을 사용하여 다른 Lambda 함수에 영향을 주지 않도록 새 IAM 역할을 생성할 수 있습니다. 이 시나리오에서는 새 IAM 역할을 생성합니다. 그런 다음 새 역할을 인스턴스와 연결합니다. 함수의 IAM 역할 대체에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 함수의 실행 역할 업데이트를 참조하세요.
-
보안 구성 고려 사항
인스턴스에 대한 관리 액세스 권한이 필요한 경우 위험을 완화하기 위해 다음과 같은 추가 보안 제어를 구현하는 것이 좋습니다.
-
다중 인증(MFA) - MFA는 추가 형식의 인증을 요구하여 보안 계층을 추가합니다. 이렇게 하면 자격 증명이 손상되더라도 무단 액세스를 방지할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 다중 인증(MFA) 요구 섹션을 참조하세요.
-
IAM 조건 - 조건 요소를 설정하면 소스 IP 또는 MFA 수명과 같은 요인에 따라 관리 권한을 사용할 수 있는 시기와 방법을 제한할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 IAM 정책에서 조건 사용을 참조하세요.
-
권한 경계 - 권한 경계는 역할이 가질 수 있는 최대 권한을 설정하여 관리자 액세스 권한이 있는 역할에 가드레일을 제공합니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 권한 경계를 사용하여 계정 내 권한 관리 위임을 참조하세요.
-
Lambda 함수와 연결된 IAM 역할에는 AWS 서비스에 대한 관리 액세스 권한이 있는 정책이 있습니다.
서비스 관리자 정책을 사용하면 Lambda 함수가 특정 AWS 서비스 내에서 모든 작업을 수행할 수 있습니다. 이러한 정책은 일반적으로 함수 작업에 필요한 것보다 더 많은 권한을 부여합니다. 서비스 관리자 정책이 있는 Lambda 함수가 손상된 경우 공격자는 이러한 권한을 사용하여 AWS 환경 내의 민감한 데이터 또는 서비스에 잠재적으로 액세스하거나 수정할 수 있습니다. 표준 보안 원칙에 따라 최소 권한을 부여하는 것이 좋습니다. 즉, 작업을 수행하는 데 필요한 권한만 부여하는 것입니다.
-
관리 정책 검토 및 식별
노출 조사 결과에서 ARN의 역할 이름을 식별합니다. IAM 대시보드로 이동하여 역할 이름을 찾습니다. 역할에 연결된 권한 정책을 검토합니다. 정책이 AWS 관리형 정책인 경우
AdministratorAccess
또는를 찾습니다IAMFullAccess
. 그렇지 않으면 정책 문서에서 및 문이 있는 문을 찾습니다"Effect": "Allow", "Action": "*"
"Resource": "*"
. -
최소 권한 액세스 구현
관리 정책을 함수 작동에 필요한 특정 권한만 부여하는 정책으로 바꿉니다. 자세한 정보는 AWS Identity and Access Management 사용 설명서의 최소 권한 적용을 참조하세요. 불필요한 권한을 식별하기 위해 IAM Access Analyzer를 사용하여 액세스 기록을 기반으로 정책을 수정하는 방법을 이해할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 외부 및 미사용 액세스 조사 결과를 참조하세요. 또는 새 IAM 역할을 생성하여 기존 역할을 사용하는 다른 Lambda 함수에 영향을 주지 않도록 할 수 있습니다. 이 시나리오에서는 새 IAM 역할을 생성한 다음 새 IAM 역할을 인스턴스와 연결합니다. 함수의 IAM 역할을 교체하는 방법에 대한 지침은 AWS Lambda 개발자 안내서의 함수의 실행 역할 업데이트를 참조하세요.
-
보안 구성 고려 사항
인스턴스에 서비스 수준 관리 권한이 필요한 경우 위험을 완화하기 위해 다음과 같은 추가 보안 제어를 구현하는 것이 좋습니다.
-
다중 인증(MFA) - MFA는 추가 형식의 인증을 요구하여 보안 계층을 추가합니다. 이렇게 하면 자격 증명이 손상되더라도 무단 액세스를 방지할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 멀티 팩터 인증(MFA) 요구 섹션을 참조하세요.
-
IAM 조건 - 조건 요소를 설정하면 소스 IP 또는 MFA 수명과 같은 요인에 따라 관리 권한을 사용할 수 있는 시기와 방법을 제한할 수 있습니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 IAM 정책에서 조건 사용을 참조하세요.
-
권한 경계 - 권한 경계는 역할이 가질 수 있는 최대 권한을 설정하여 관리자 액세스 권한이 있는 역할에 가드레일을 제공합니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서의 권한 경계를 사용하여 권한 관리 위임을 참조하세요.
-
Lambda 함수의 연결성 특성
다음은 Lambda 함수의 연결성 특성과 제안된 수정 단계입니다.
Lambda 함수는 공개적으로 호출할 수 있습니다.
Lambda 리소스 기반 정책에 따라 함수를 호출할 수 있는 사용자가 결정됩니다. "*"를 보안 주체로 포함하는(또는 보안 주체가 전혀 없는) 리소스 정책이 있는 함수는 인증된 AWS 사용자가 호출할 수 있도록 허용합니다. 이로 인해 특히 민감한 데이터를 처리하거나 리소스를 수정하거나 권한이 상승된 함수에 상당한 위험이 발생합니다. 권한이 없는 사용자는이 구성을 사용하여 원치 않는 작업을 수행하여 잠재적으로 데이터를 노출하거나 리소스를 조작하거나 함수 기능을 남용할 수 있습니다. 보안 모범 사례에 따라 Lambda 함수 액세스를 승인된 보안 주체로만 제한하는 것이 좋습니다.
함수의 리소스 기반 정책 수정
노출의 리소스 탭에서 하이퍼링크를 사용하여 리소스를 엽니다. 그러면 Lambda 함수 창이 열립니다. 리소스 기반 정책에서 승인된 AWS 계정 IDs 또는 특정 IAM 보안 주체(사용자, 역할 또는 서비스)만 지정하여 Lambda 함수에 대한 액세스를 제한합니다. 리소스 기반 정책은 프로그래밍 방식으로만 수정할 수 있습니다.
Lambda 함수의 취약성 특성
다음은 Lambda 함수의 취약성 특성과 제안된 문제 해결 단계입니다.
Lambda 함수에 네트워크 탐색 가능 소프트웨어 취약성이 있음
Lambda 함수 코드에 사용되는 소프트웨어 패키지에는 악용될 가능성이 높은 일반적인 취약성 및 노출(CVEs)이 포함될 수 있습니다. 중요 CVEs AWS 환경에 심각한 보안 위험을 초래합니다. 공격자는 이러한 패치되지 않은 취약성을 악용하여 데이터의 기밀성, 무결성 또는 가용성을 손상시키거나 다른 시스템에 액세스할 수 있습니다. 악용 가능성이 높은 심각한 취약성은 공격자 또는 자동 스캔 도구에서 악용 코드를 이미 공개적으로 사용할 수 있고 적극적으로 사용할 수 있으므로 즉각적인 보안 위협을 나타냅니다. 보안 모범 사례에 따라 이러한 취약성을 패치하여 공격으로부터 함수를 보호하는 것이 좋습니다.
영향을 받는 함수 업데이트
취약성 탭의 참조 섹션에서 특성을 검토합니다. 공급업체 설명서에는 특정 수정 지침이 포함될 수 있습니다. 공급업체 권장 절차에 따라 취약한 라이브러리를 최신 보안 버전으로 업데이트합니다. 일반적으로 문제 해결 워크플로는 zip 파일을 업로드하거나 컨테이너 이미지로 Lambda 함수를 생성하여 Lambda 패키지를 배포했는지 여부에 따라 달라집니다. 라이브러리를 업데이트한 후 고정 버전을 사용하도록 Lambda 함수 코드를 업데이트합니다. 그런 다음 업데이트된 버전을 배포합니다.
Lambda 함수에는 소프트웨어 취약성이 있습니다.
Lambda 함수는 중요한 CVEs에 비해 심각도 또는 악용성이 낮은 보안 취약성을 포함할 수 있는 타사 라이브러리 및 종속성을 사용하는 경우가 많습니다. 이러한 중요하지 않은 취약성은 즉시 악용할 수 없지만, 여전히 다른 취약성과 함께 연결되어 함수를 손상시킬 수 있는 보안 약점을 나타냅니다. 시간이 지남에 따라 이러한 취약성의 위험을 높이는 새로운 악용 기법도 나타날 수 있습니다. 표준 보안 원칙에 따라 이러한 취약성을 패치하여 안전한 환경을 유지하는 것이 좋습니다.
취약성 탭의 참조 섹션에서 특성을 검토합니다. 공급업체 설명서에는 특정 수정 지침이 포함될 수 있습니다. 공급업체 권장 절차에 따라 취약한 라이브러리를 최신 보안 버전으로 업데이트합니다. 일반적으로 문제 해결 워크플로는 zip 파일을 업로드하거나 컨테이너 이미지로 Lambda 함수를 생성하여 Lambda 패키지를 배포했는지 여부에 따라 달라집니다. 라이브러리를 업데이트한 후 고정 버전을 사용하도록 Lambda 함수 코드를 업데이트합니다. 그런 다음 업데이트된 버전을 배포합니다.