시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Create shared flow and flow hook
/ 40
Add a Cloud Armor security policy
/ 40
Wait for instance to be ready
/ 20
이 실습에서는 Apigee X 위협 보호 정책을 사용하여 콘텐츠 기반 위협으로부터 API를 보호합니다. 또한 분산 서비스 거부(DDoS) 보호, OWASP 10대 위험 완화, IP 기반 및 지역 기반 액세스 제어와 같은 웹 애플리케이션 방화벽 기능을 제공하기 위해 Cloud Armor를 전역 외부 HTTPS 부하 분산기에 추가하기도 합니다.
런타임 인스턴스에 액세스할 수 있도록 브리지 VM의 부하 분산기와 관리형 인스턴스 그룹이 생성되었습니다. 이 구성의 아키텍처는 다음과 같습니다.
수신 API 호출은 전역 외부 HTTPS 부하 분산기를 통해 고객 프로젝트에 입력됩니다. 외부 HTTPS 부하 분산기는 테넌트 프로젝트로 호출을 전달할 수 없습니다. 대신 부하 분산기는 요청을 고객 프로젝트의 브리지 VM 관리형 인스턴스 그룹으로 전달합니다. 이러한 브리지 VM은 Apigee 런타임 인스턴스에 연결된 피어링 네트워크에 있으며, 이를 통해 VM은 API 호출을 런타임 인스턴스로 전달할 수 있습니다.
부하 분산기로 전송된 모든 HTTP 트래픽은 브리지 VM으로 전달된 다음 Apigee 런타임 인스턴스로 전달됩니다. Cloud Armor 보안 정책을 추가하여 특정 트래픽이 런타임으로 전송되지 않도록 차단합니다.
JSON 및 XML 공격은 JSON 및 XML 파서에 부담을 주고 애플리케이션 수준의 DoS 공격을 유도하도록 구성된 페이로드를 사용합니다. Cloud Armor는 이러한 유형의 공격을 감지하지 못하지만 Apigee는 감지할 수 있습니다. JSONThreatProtection 및 XMLThreatProtection 정책은 페이로드를 파서에 로드하지 않고도 이와 같이 악의적인 페이로드를 감지할 수 있습니다. 잘못된 형식의 JSON 페이로드로부터 보호하기 위해 JSONThreatProtection 정책을 사용할 것입니다.
이 실습의 안내는 유료 조직과 평가 조직 모두에 적용됩니다.
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지를 표시합니다.
실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음을 준비해야 합니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 대화상자가 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 창이 있습니다.
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
실습 세부정보 창에서도 사용자 이름을 확인할 수 있습니다.
다음을 클릭합니다.
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
실습 세부정보 창에서도 비밀번호를 확인할 수 있습니다.
다음을 클릭합니다.
이후에 표시되는 페이지를 클릭하여 넘깁니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다. Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
Google Cloud 콘솔 상단에서 Cloud Shell 활성화 를 클릭합니다.
다음 창을 클릭합니다.
연결되면 사용자 인증이 이미 처리된 것이며 프로젝트가 학습자의 PROJECT_ID,
gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
출력:
출력:
gcloud 전체 문서는 Google Cloud에서 gcloud CLI 개요 가이드를 참고하세요.
이 작업에서는 JSONThreatProtection 정책을 사용하여 공유 흐름을 만든 다음 흐름 후크를 사용하여 모든 Apigee API에 공유 흐름을 사용 설정합니다.
JSONThreatProtection 정책은 지정된 한도를 초과하는 수신 JSON 요청을 거부합니다. 정책을 공유 흐름에 배치하고 흐름 후크를 사용하여 공유 흐름을 연결하면 정책이 환경에 배포된 모든 프록시에 대한 모든 요청을 보호할 수 있습니다.
Apigee 콘솔을 열려면 다음 단계를 따르세요.
Apigee를 입력한 다음 검색 결과에서 Apigee API 관리를 클릭합니다.Apigee 콘솔이 열리고 자주 사용되는 위치로 연결되는 빠른 링크가 방문 페이지에 표시됩니다.
이제 Apigee가 탐색 메뉴에 즐겨찾기로 추가됩니다.
탐색 메뉴에서 프록시 개발 > 공유 흐름을 선택합니다.
만들기를 클릭합니다.
공유 흐름은 정책과 조건의 집합을 포함할 수 있으며 FlowCallout 정책을 사용하여 API 프록시 또는 다른 공유 흐름에서 실행할 수 있습니다. 이 실습에서는 흐름 후크의 공유 흐름을 사용하여 평가 조직에 배포된 모든 프록시에 연결합니다.
공유 흐름 이름을 protect-json으로 지정한 다음 만들기를 클릭합니다.
개발 탭을 클릭합니다.
공유 흐름의 왼쪽 메뉴에 있는 공유 흐름 섹션에서 기본값을 클릭합니다.
sharedflows/default.xml 창에서 정책 단계 추가()를 클릭합니다.
정책 선택에서 새 정책 만들기를 선택합니다.
JSON 위협 보호를 선택한 다음 표시 이름과 이름을 JTP-Protect로 설정합니다.
추가를 클릭합니다.
JSONThreatProtection 정책에는 수신 JSON 요청에 한도를 부과하는 여러 요소가 포함되어 있습니다. 보통 이러한 한도는 API의 최댓값을 기반으로 설정합니다. 이 경우 정책의 기본 구성을 유지합니다.
이 정책은 요청의 Content-Type 헤더가 application/json으로 설정된 경우에만 실행되며 이는 수신 요청에 JSON 페이로드가 있음을 나타냅니다.
저장을 클릭합니다.
배포를 클릭하고 환경에서 eval을 선택합니다.
배포를 클릭한 다음 확인을 클릭합니다.
공유 흐름은 프록시가 실행되기 전에 실행되도록 프록시 이전 흐름 후크에 연결됩니다.
관리 > 환경으로 이동합니다.
eval > 흐름 후크를 클릭합니다.
프록시 이전 행 드롭다운에서 protect-json 공유 흐름을 선택한 다음 저장을 클릭합니다.
이 흐름 후크는 이후 작업에서 테스트합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 부하 분산기를 보호하고 API에 대한 액세스를 제어하기 위해 Cloud Armor 보안 정책을 추가합니다.
Cloud Armor는 Google Cloud의 웹 애플리케이션 방화벽입니다. 부하 분산기에 하나의 Cloud Armor 정책을 지정할 수 있습니다. 이 실습에서는 Cloud Armor 보안 정책으로 특정 트래픽이 Apigee 런타임 인스턴스에 도달하기 전에 거부하여 API를 보호합니다.
Cloud 콘솔 탭의 탐색 메뉴()에서 모든 제품 보기를 클릭한 다음 네트워킹 섹션에서 네트워크 보안을 선택하고 Cloud Armor 정책으로 이동합니다.
정책 만들기를 클릭합니다.
이름에 protect-apis를 지정합니다.
이 보안 정책에서는 Apigee API를 대상으로 한 특정 트래픽을 차단하는 규칙을 사용합니다.
기본 규칙 작업에서 거부를 선택합니다.
트래픽을 구체적으로 허용하는 규칙과 일치하지 않는 한 API에 대한 사용자의 액세스가 거부됩니다.
거부 상태 드롭다운에서 403(Forbidden)을 선택합니다.
요청이 트래픽을 허용하는 규칙과 일치하지 않으면 403 Forbidden 상태 코드가 사용자에게 반환됩니다.
다음 단계를 클릭합니다.
이 규칙은 지정된 국가에서 오는 요청만 허용합니다.
규칙 추가를 클릭합니다.
고급 모드를 클릭합니다.
기본 모드 규칙에서는 일치시킬 IP 주소 또는 IP 주소 범위만 지정할 수 있습니다. 이 경우에는 허용되는 국가 코드를 지정하려고 합니다.
일치에 다음 표현식을 지정합니다.
Cloud Armor의 경우 region_code는 ISO 3166-2 리전으로 지정됩니다. 이 규칙은 미국에서 들어오는 요청과 일치합니다.
작업에 허용을 지정합니다.
우선순위를 1000으로 설정한 다음 규칙 변경사항 저장을 클릭합니다.
이 규칙은 SQL 입력으로 SQL 삽입을 초래할 수 있는 요청을 차단합니다.
규칙 추가를 클릭합니다.
고급 모드를 클릭합니다.
일치에 다음 표현식을 지정합니다.
이 표현식은 사전 구성된 Cloud Armor 규칙을 지정합니다. 사전 구성된 규칙은 오픈소스 업계 표준 서명을 사용하여 악의적인 요청을 감지합니다. 사용 중지할 서명 이름을 제공하면 특정 서명을 사용 중지할 수 있습니다.
이 경우 민감도 수준이 3과 4인 서명이 사용 중지됩니다. 서명의 민감도 수준은 paranoia 수준이라고도 하며, 더 높은 수준의 보안을 위해 더 많은 수의 오탐을 감수하는 절충점을 지정합니다.
수준 1은 기본 보안 수준으로, 오탐이 거의 또는 전혀 발생하지 않아야 합니다. 수준 2는 고급 공격과 난독화된 공격에 대한 추가적인 보호를 제공합니다. 수준 3 및 4의 서명은 더 공격적이며 오탐을 일으킬 가능성이 훨씬 더 높습니다. 예를 들어 단순한 JSON 페이로드가 포함된 POST 요청에는 수준 3 또는 4 서명으로 플래그가 지정될 수 있습니다.
작업을 거부로 설정하고 거부 상태를 403(Forbidden)으로 설정합니다.
우선순위를 500으로 설정합니다.
Cloud Armor 정책 규칙이 평가될 때 요청과 일치하는 첫 번째 규칙이 수행할 작업을 지정합니다. 허용된 리전에서 발생했지만 SQL 삽입 패턴도 포함하는 요청은 거부하는 것이 좋으므로 리전 확인 전에 SQL 삽입 확인이 이루어져야 합니다. 우선순위 번호를 더 작게 선택하면 리전 확인 전에 SQL 삽입 확인이 수행됩니다.
규칙 변경사항 저장을 클릭합니다.
오른쪽의 요약을 보세요. 정책에 3개의 규칙이 포함되어 있습니다. 규칙은 우선순위 번호가 가장 낮은 것부터 가장 높은 것 순으로 평가되며, 첫 번째로 일치하는 규칙이 사용됩니다.
첫 번째 규칙은 SQL 삽입 패턴이 감지되면 액세스를 거부합니다.
두 번째 규칙은 출처가 미국인 경우 액세스를 허용합니다.
마지막 규칙은 모든 트래픽에 대한 액세스를 거부합니다.
정책 만들기를 클릭합니다.
정책 탭을 보면 아직 부하 분산기에 연결하지 않았기 때문에 새 protect-apis 정책에 대상이 0개인 것을 확인할 수 있습니다.
protect-apis 옆에 있는 정책 메뉴 버튼()을 클릭한 다음 대상에 정책 적용을 클릭합니다.
백엔드 서비스 1 드롭다운에서 apigee-proxy-backend를 선택한 다음 추가를 클릭합니다.
protect-apis 정책 세부정보 페이지에 정책이 1개의 대상에 적용된다는 내용이 곧 표시됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 Apigee 평가 조직 프로비저닝이 완료될 때까지 기다립니다.
Apigee 조직 프로비저닝은 완료하는 데 시간이 꽤 걸릴 수 있습니다. 조직 프로비저닝 진행 상황은 Apigee API를 사용하여 모니터링할 수 있습니다.
Cloud Shell에서 다음 명령어를 사용하여 GOOGLE_CLOUD_PROJECT 변수에 프로젝트 이름이 포함되어 있는지 확인합니다.
GOOGLE_CLOUD_PROJECT 변수에는 Apigee 조직 이름과 동일한 프로젝트 이름이 포함되어야 합니다.
GOOGLE_CLOUD_PROJECT 변수가 설정되지 않은 경우, 다음과 같은 명령어를 사용하여 변수를 수동으로 설정합니다. {project}를 프로젝트 이름으로 바꿉니다.
다음 명령어를 Cloud Shell에 붙여넣습니다.
이 명령어 시리즈는 Apigee API를 사용하여 런타임 인스턴스가 생성되고 eval 환경이 연결된 시점을 확인합니다.
인스턴스가 준비될 때까지 기다립니다.
***ORG IS READY TO USE*** 텍스트가 출력되면 인스턴스를 사용할 수 있습니다.
조직이 준비되기를 기다리는 동안 Cloud Armor 개요, 커스텀 규칙, 사전 구성된 규칙을 살펴볼 수 있습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 Cloud Armor 보안 정책이 API를 보호하지만 허용된 리전의 허용 가능한 트래픽은 허용하고, 흐름 후크가 JSON 위협으로부터 보호하는지 확인합니다.
이름이 apigeex-test-vm인 가상 머신이 자동으로 생성되었습니다. 이 머신을 사용하여 미국에서 API를 호출할 수 있습니다.
Cloud Shell에서 미국에 있는 테스트 VM에 대한 SSH 연결을 엽니다.
Do you want to continue (Y/n)?라는 메시지가 표시되면 Y를 눌러 계속합니다.
Cloud Shell에서 묻는 질문마다 Enter 또는 Return을 클릭하여 기본 입력을 지정합니다.
로그인한 ID가 프로젝트 소유자이므로 이 머신에 대한 SSH가 허용됩니다.
이제 Cloud Shell 세션이 VM 내에서 실행됩니다.
이제 hello-world API 프록시에 액세스 가능한지 확인합니다.
hello-world 프록시가 배포되고 외부 부하 분산기를 통해 프록시를 사용할 수 있게 되기까지 잠시 시간이 걸릴 수 있습니다. 이러한 명령어가 ***HELLO-WORLD IS ACCESSIBLE***을 반환하면 hello-world 프록시를 사용할 수 있습니다.
eval 환경에서 배포된 hello-world API 프록시를 호출합니다.
호스트 이름 eval.example.com의 DNS 항목이 부하 분산기의 수신 IP 주소로 생성되었습니다.
-i 옵션은 응답의 상태 코드와 헤더를 표시합니다.
-k 옵션은 부하 분산기의 TLS 인증서 확인을 건너뜁니다. 부하 분산기에 사용된 TLS 인증서는 알려진 인증 기관에서 확인한 인증서가 아닌 자체 서명 인증서이기 때문입니다.
VM은 미국에 있으므로 curl 명령어는 hello-world 프록시에서 생성된 Hello, Guest! 응답을 성공적으로 반환해야 합니다.
다음 명령어를 사용하여 hello-world 프록시를 호출합니다.
이 요청은 공유 흐름에 포함된 JSONThreatProtection 정책에 지정된 ObjectEntryNameLength 한도를 초과합니다. 공유 흐름은 프록시 이전 흐름 후크를 사용하여 모든 API 프록시에 연결됩니다.
응답은 다음과 유사합니다.
이 명령어를 사용하여 hello-world API 프록시를 호출해 봅니다.
item 쿼리 파라미터는 문자열을 연결하여 SQL 쿼리를 빌드하는 경우 의도치 않은 결과를 초래할 수 있는 SQL 삽입 패턴을 사용합니다.
Cloud Armor가 SQL 삽입 패턴을 성공적으로 감지하고 요청을 차단하여 403 Forbidden 응답을 반환합니다.
exit를 입력하여 미국 가상 머신에 대한 SSH 연결을 닫습니다.
이 작업에서는 Cloud Armor 보안 정책이 허용 목록에 없는 리전의 트래픽을 허용하지 않는지 확인합니다.
승인을 요청하는 메시지가 나타나면 승인을 클릭합니다.
Cloud Shell에서 묻는 질문마다 Enter 또는 Return을 클릭하여 기본 입력을 지정합니다.
로그인한 ID가 프로젝트 소유자이므로 이 머신에 대한 SSH가 허용됩니다.
이제 Cloud Shell 세션이 VM 내에서 실행됩니다.
eval 환경에서 배포된 hello-world API 프록시를 호출합니다.
VM이 미국에 있지 않으므로 Cloud Armor가 요청을 차단하고 403을 반환해야 합니다.
이 작업에서는 Cloud Monitoring에서 Cloud Armor 정책 대시보드를 확인합니다.
Cloud 콘솔 탭에서 Monitoring > 대시보드로 이동합니다.
Cloud Armor 정책 개요를 클릭합니다.
이 대시보드에는 모든 Cloud Armor 정책에 대해 허용된 요청과 차단된 요청의 비율이 표시됩니다. 현재는 정책이 하나뿐입니다.
정책 창에서 protect-apis를 클릭합니다.
이 대시보드에는 protect-apis 정책에 대해 허용된 요청과 차단된 요청의 비율이 표시됩니다.
개별 요청 세부정보를 로깅하려면 부하 분산기에 대한 요청 로깅을 사용 설정해야 합니다.
이 실습에서는 Cloud Armor 정책을 만들고 이 정책을 사용하여 Cloud Armor 규칙에 따라 수신 트래픽을 거부하거나 허용했습니다.
Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.
설명서 최종 업데이트: 2025년 9월 17일
실습 최종 테스트: 2025년 9월 17일
Copyright 2026 Google LLC. All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.