실행 환경 보안

모든 함수는 Cloud Functions 보안 실행 환경 내에서 버전이 지정된 런타임 이미지를 기반으로 실행됩니다. 런타임 이미지에는 운영체제 라이브러리, 언어 런타임, 기타 시스템 패키지가 포함됩니다. Google에서는 모든 Cloud Functions 런타임 이미지를 유지하여 일정 기간 동안 안정성 테스트를 마친 후 보안 패치와 유지보수 업데이트를 출시합니다.

런타임 이미지

각 런타임에는 gcr.io의 공개 저장소에 연결된 런타임 이미지(실행 이미지라고도 함)가 있습니다. 런타임 ID 및 런타임 이미지 목록은 런타임을 참조하세요.

런타임 이미지 식별

함수의 빌드 로그를 검사하여 함수를 만드는 데 사용되는 런타임 이미지를 식별할 수 있습니다.

빌드 로그 내에서 google.run-image를 검색합니다. 그러면 함수를 빌드하는 데 사용되는 런타임 이미지 버전을 설명하는 빌드 단계의 로그 항목이 제공됩니다. 예를 들어 Nodejs 함수의 로그 항목은 다음과 같습니다.

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/gae-runtimes/buildpacks/nodejs20/run:nodejs20_20230924_20_6_1_RC00",
  ...
}

보안 업데이트 정책

다음 보안 업데이트 정책 중 하나를 선택할 수 있습니다.

  • 자동 업데이트(기본값): 런타임 환경에 대한 업데이트 및 보안 패치가 런타임 이미지의 새 버전으로 게시됩니다. 안정성과 신뢰성을 테스트한 후 업데이트된 런타임이 모든 함수에 출시되어 다운타임 없이 업데이트됩니다. 자동 보안 업데이트는 Cloud Functions(1세대) 및 Cloud Functions(2세대)에서 사용할 수 있습니다. 언어 수준의 보안 수정사항을 적용하려면 Go 또는 Java와 같은 컴파일된 언어를 사용하는 함수를 다시 빌드해야 할 수 있습니다.

  • 배포 시 업데이트: 별도로 명시되지 않는 한 업데이트 및 보안 패치는 함수가 배포되거나 재배포될 때만 런타임에 적용됩니다. 배포 시 업데이트는 Cloud Functions(1세대) 및 Cloud Functions(2세대)에서 모두 사용할 수 있습니다.

런타임 업데이트 정책은 gcloud deploy 명령어에서 --runtime-update-policy 플래그를 사용하여 변경할 수 있습니다.

함수의 업데이트 정책 설정

다음과 같이 gcloud deploy 명령어에 --runtime-update-policy 플래그를 포함하여 함수의 업데이트 정책을 변경할 수 있습니다.

  gcloud functions deploy FUNCTION_NAME \
    --runtime-update-policy=POLICY ...

다음과 같이 바꿉니다.

  • FUNCTION_NAME을 함수 이름으로 바꿉니다.
  • POLICYautomatic 또는 on-deploy로 바꿉니다.

모든 함수의 기본 정책은 automatic입니다.

함수의 업데이트 정책 검사

다음 명령어를 사용하여 함수의 업데이트 정책을 검사할 수 있습니다.

  gcloud functions describe FUNCTION_NAME \

여기서 FUNCTION_NAME은 함수 이름입니다.

  • 자동 보안 업데이트가 사용 설정된 함수에는 automaticUpdatePolicy 키가 있습니다.
  • 배포 시 업데이트되는 함수에는 onDeployUpdatePolicy 키가 있습니다.

자동 업데이트 후 사용된 런타임 이미지 식별

자동 업데이트를 사용 설정하면 Cloud Functions가 함수의 런타임 이미지를 추가 보안 패치 및 업데이트가 포함된 최신 버전으로 바꿉니다. 이 변경 사항은 함수의 런타임 로그에 표시됩니다.

런타임 로그 내에서 runtime_version 라벨은 함수에 새 런타임 이미지가 사용될 때를 알려줍니다. 자동으로 업데이트된 Nodejs 함수의 로그 항목은 다음과 같습니다.

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}

Cloud Functions(2세대)의 보안 스캔

자동 업데이트가 사용 설정된 Cloud Functions(2세대)는 scratch 이미지를 기반으로 빌드됩니다. 따라서 Artifact Registry에서 함수를 나타내는 컨테이너에는 기본 이미지가 없으며 배포 시 업데이트를 사용하는 함수보다 크기가 상당히 작습니다. 런타임 시 기본 이미지가 함수 이미지와 결합되어 완전한 함수가 생성됩니다.

보안 스캐너를 사용하여 함수를 지원하는 Google 관리 기본 이미지를 모니터링할 수 있습니다. gcr.io/serverless-runtimes/RUNTIME_ID/run에서 함수의 최신 기본 이미지를 확인할 수 있습니다.

다음과 같이 바꿉니다.

  • RUNTIME_ID를 함수에서 사용하는 런타임 ID로 바꿉니다(예: python310).

이제 이미지가 scratch 기반으로 빌드되었으므로 Artifact Registry에 저장된 이미지를 직접 실행할 수 없습니다. 실행 가능한 이미지가 필요하면 배포 시 정책을 사용합니다.