Cloud 함수 보호
이 페이지에서는 Cloud Functions 리소스를 사용하여 상호작용을 제어하는 방법에 대한 간략한 개요를 제공합니다.
액세스 제어
Cloud Functions에 대한 액세스를 제어하는 방법에는 두 가지가 있습니다.
ID로 액세스 보안
함수에 대한 액세스를 제어하는 한 가지 방법은 요청 항목이 사용자 인증 정보를 사용하여 자신을 식별하게 하는 것입니다. 사용자 인증 정보는 비밀번호 또는 하드웨어 동글과 같이 항목이 확인하거나 액세스할 수 있는 보안 비밀로 보호되는 일종의 '이름'입니다. 기본적으로 함수는 비공개로 배포되며 이러한 사용자 인증 정보가 필요합니다. 단, 함수를 공개로 배포할 수 있으며, 이 경우 사용자 인증 정보가 필요하지 않습니다.
프로세스의 첫 번째 단계는 요청자가 정당한 요청자인지, 올바른 이름과 보안 비밀 조합을 제공하는지 확인하기 위해 사용자 인증 정보의 유효성을 검사하는 것입니다. 이 단계를 (Authentication
)이라고 합니다.
요청자의 ID가 인증되면 해당 액세스 수준과 ID가 부여된 권한을 평가할 수 있습니다. 이 단계를 (Authorization
)이라고 합니다.
인증
Cloud Functions는 주 구성원이라고도 하는 두 가지 종류의 ID를 지원합니다.
- 서비스 계정: 함수, 애플리케이션, VM과 같이 사람이 아닌 사용자의 ID로 사용되는 특수 계정입니다. 사람이 아닌 사용자를 인증하는 방법을 제공합니다.
- 사용자 계정: 이 계정은 개인 Google 계정 소유자 또는 Google 그룹과 같은 Google이 관리하는 항목에 속하는 사용자와 같은 사람을 나타냅니다.
서비스 계정과 사용자 계정에서 사용자 인증 정보의 이름 부분은 일반적으로 계정과 연결된 이메일 주소입니다. 사용자 계정의 보안 비밀은 일반적으로 비밀번호이며 서비스 계정의 경우에는 일반적으로 계정과 함께 생성된 키 쌍의 비공개 키입니다.
하지만 사용자 비밀번호와 서비스 계정 키 자체가 매우 강력합니다. 이들을 사용하여 데이터 및 기능에 광범위하게 액세스할 수 있으며 적극적으로 취소하거나 변경할 때까지 효력이 유지됩니다. 따라서 사용자 인증 정보가 유출되면 발생할 수 있는 잠재적 손실을 제한하기 위해 Google Cloud에서는 이 핵심 사용자 인증 정보를 기반으로 하는 단기 사용자 인증 정보(토큰)로 대체합니다. 이는 수명이 제한되어 있으며 요청 시퀀스의 일부로 즉시 생성됩니다. 토큰은 요청과 함께 전달되며 계정을 안전하게 인증하는 데 사용됩니다.
Cloud Functions에서는 액세스 토큰과 ID 토큰 등 두 가지 종류의 토큰이 사용됩니다. 액세스 토큰은 일반적으로 API 호출을 인증하는 데 사용되고 ID 토큰은 개발자가 만든 코드에 대한 호출을 인증하는 데 사용됩니다(예: 함수에서 다른 함수를 호출하는 경우). 토큰 자체는 OAuth 2 프레임워크와 확장 프로그램인 Open Identity Connect를 사용하여 생성되지만 시퀀스가 복잡하고 오류가 발생하기 쉬우며, 프로세스 관리를 위해 Cloud 클라이언트 라이브러리를 사용하는 것이 좋습니다.
승인
요청 항목 ID가 확인되면 요청자가 수행할 수 있는 작업을 평가해야 합니다. 이 평가는 설정 시 인증된 계정에 부여된 권한에 따라 다릅니다. 이를 위해 Cloud Functions는 Identity and Access Management(IAM)를 사용합니다. 편의를 위해 같이 그룹화된 개별 권한 집합인 역할은 계정에 직접 할당되거나 정책이라는 구성을 통해 할당됩니다. 역할 집합의 개별 권한은 일반적으로 요청된 서비스에서 노출한 단일 REST API 호출에 해당합니다. 이 프로세스에 대한 자세한 내용은 IAM을 통한 액세스 승인을 참조하세요.
네트워크 기반 액세스 제어
개별 함수의 네트워크 설정을 지정하여 액세스를 제한할 수도 있습니다. 이를 통해 함수에서의 네트워크 인그레스 및 이그레스를 세밀하게 제어할 수 있습니다.
격리 및 샌드박스
내부적으로 함수 인스턴스는 gVisor 샌드박스 플랫폼을 사용하여 상호 격리됩니다. 기본적으로 함수는 다른 함수의 운영 환경에 액세스할 수 없습니다.
실행 환경 업데이트
Google은 일정 기간의 안정성 테스트를 거친 후 보안 패치 및 유지관리 업데이트를 제공합니다. Cloud Functions는 운영체제나 포함된 패키지와 같은 실행 환경의 다른 구성 요소를 업데이트할 수 있습니다. 이러한 업데이트는 함수의 실행 환경을 안전하게 유지하는 데 유용합니다.
Cloud Functions 보안 업데이트
다음 보안 업데이트 정책 중 하나를 선택할 수 있습니다.
자동 업데이트(기본값): 런타임 환경에 대한 업데이트 및 보안 패치가 런타임 이미지의 새 버전으로 게시됩니다. 안정성과 신뢰성을 테스트한 후 업데이트된 런타임이 모든 함수에 출시되어 다운타임 없이 업데이트됩니다. 자동 보안 업데이트는 Cloud Functions(1세대) 및 Cloud Functions(2세대)에서 사용할 수 있습니다. 언어 수준의 보안 수정사항을 적용하려면 Go 또는 Java와 같은 컴파일된 언어를 사용하는 함수를 다시 빌드해야 할 수 있습니다.
배포 시 업데이트: 별도로 명시되지 않는 한 업데이트 및 보안 패치는 함수가 배포되거나 재배포될 때만 런타임에 적용됩니다. 배포 시 업데이트는 Cloud Functions(1세대) 및 Cloud Functions(2세대)에서 모두 사용할 수 있습니다.
런타임 업데이트 정책은 gcloud deploy
명령어에서 --runtime-update-policy
플래그를 사용하여 변경할 수 있습니다.
실행 환경 보안 업데이트에 대한 자세한 내용은 보안 업데이트 정책을 참조하세요.