컨텍스트 기반 제한을 사용하여 애플리케이션 및 기능에 대한 인바운드 트래픽 제한하기
IBM Cloud® 컨텍스트 기반 제한(CBR)을 사용하여 IBM Cloud® Code Engine 애플리케이션 및 기능에 대한 인바운드 네트워크 트래픽을 제어할 수 있습니다. CBR을 사용하면 비공개 엔드포인트, 공용 엔드포인트 또는 둘 모두를 통한 액세스를 제한하여 워크로드에 유연한 네트워크 수준의 보안을 제공할 수 있습니다. ID를 기반으로 액세스를 할당하는 대신 컨텍스트 기반 제한은 액세스 요청이 구성한 허용된 컨텍스트에서 오는지 확인합니다. Code Engine 프로젝트 내의 애플리케이션과 기능으로 인바운드 트래픽을 제한하여 원치 않는 인바운드 트래픽으로부터 프로젝트를 보호할 수 있습니다. 이러한 컨텍스트 기반 제한은 계정, 프로젝트, 리소스 그룹 또는 위치(지역) 수준에서 적용되며 제한 범위 내의 모든 애플리케이션 및 기능에 적용됩니다.
Code Engine 애플리케이션 및 기능에 대한 컨텍스트 기반 제한은 다음과 같은 사용 사례를 지원합니다:
-
퍼블릭 인바운드를 완전히 차단하세요: 애플리케이션과 기능이 CBR을 통해 비공개 엔드포인트를 통해서만 액세스할 수 있도록 제한하세요. 이 접근 방식은 네트워크 수준에서 공개 액세스가 차단되므로 애플리케이션 엔드포인트 가시성 설정을 구성할 필요가 없습니다. 워크로드는 프라이빗 네트워크(예: VPC)와 동일한 프로젝트 내의 다른 Code Engine 구성 요소에서 계속 액세스할 수 있습니다.
-
IP별로 공용 차단 및 비공개 제한: 모든 공용 인터넷 액세스를 차단하고 특정 IP 주소 또는 네트워크 영역에 대한 비공개 엔드포인트 액세스를 제한하여 인바운드 트래픽을 최대한 제어하세요. 이는 비공개 엔드포인트에 대한 IP 기반 제한 기능과 네트워크 수준에서 공용 엔드포인트를 완전히 차단하는 기능을 결합한 것입니다.
-
워크로드를 완전히 격리하세요: 비공개 및 공용 엔드포인트를 모두 차단하여 네트워크 수준에서 애플리케이션과 기능을 완전히 격리하세요. 이 사용 사례는 아웃바운드 연결만 하면 되는 일괄 처리 워크로드, 메시지 대기열 또는 이벤트 구독을 통해서만 통신하는 내부 마이크로서비스, 애플리케이션을 배포한 상태에서 모든 인바운드 트래픽을 일시적으로 방지하려는 유지 관리 중인 워크로드 등의 시나리오에 이상적입니다.
컨텍스트 기반 제한은 이러한 워크로드가 네트워크 엔드포인트를 노출하기 때문에 애플리케이션 및 기능에만 적용됩니다. 작업 및 차량에는 네트워크 엔드포인트가 노출되지 않으므로 컨텍스트 기반 제한이 적용되지 않습니다.
컨텍스트 기반 제한으로 Code Engine 리소스를 보호하면 컨텍스트 기반 규칙으로 애플리케이션 또는 기능에 연결하는 인바운드 트래픽을 제한하는 것 외에도 애플리케이션 및 비밀을 배포하거나 업데이트하는 등 Code Engine 리소스의 컨텍스트(네트워크 경로)를 제한합니다 관리할 수 있습니다.
Code Engine 에 대한 컨텍스트 기반 제한은 단일 프로젝트, 전체 리소스 그룹 또는 위치(지역)로 범위를 지정할 수 있습니다. IBM Cloud 의 컨텍스트 기반 제한 사항에 대한 자세한 내용은 ‘컨텍스트 기반 제한 사항을 활용한 계층형 보안’을 참조하십시오.
컨텍스트 기반 제한 규칙이 리소스 그룹 또는 위치(지역)에 적용되는 경우 기존 프로젝트에 제한이 적용됩니다. 동일한 위치 또는 리소스 그룹에 새 프로젝트를 만들면 새 프로젝트에 제한 사항이 자동으로 적용됩니다. 새 프로젝트가 제한 사항과 연결되는 데 몇 분 정도 걸릴 수 있습니다. CBR 규칙이 적용되는지 확인하려면 UI, CLI 또는 API에서 프로젝트 상태 연결 섹션을 확인하세요.
Code Engine 리소스에 대한 컨텍스트 기반 제한 만들기
IBM Cloud 콘솔, CLI, API, SDK 또는 Terraform을 사용하여 Code Engine 리소스에 대한 컨텍스트 기반 제한을 만들 수 있습니다. 컨텍스트 기반 제한을 만드는 방법에 대한 자세한 내용은 컨텍스트 기반 제한 만들기를 참조하세요. 다음 섹션에서는 Code Engine 애플리케이션 및 기능에 대한 제한을 만들기 위한 구체적인 지침을 제공합니다.
IPv6 에 대해서는 제한이 지원되지 않습니다 Code Engine.
콘솔을 사용하여 컨텍스트 기반 제한 추가하기
컨텍스트 기반 제한을 만들려면 컨텍스트 기반 제한 만들기를 참조하세요. 다음 단계는 Code Engine 리소스에 대한 생성에만 해당합니다.
-
컨텍스트 기반 제한 규칙 페이지로 이동합니다.
-
만들기를 클릭하여 서비스부터 시작하여 컨텍스트 기반 제한에 대한 새 규칙을 만듭니다.
-
서비스에서 Code Engine 를 선택하고 다음을 클릭하여 보호할 서비스 API를 선택합니다.
-
서비스 API의 데이터 플레인 옵션을 선택하여 Code Engine 애플리케이션 또는 함수 워크로드를 보호하기 위해 액세스를 제한하세요.
데이터 플레인 수준에서 워크로드 제한을 정의하므로 최소한 데이터 플레인 서비스를 선택합니다. 다른 서비스 또는 플랫폼 API를 선택할 수도 있습니다.
다음을 클릭하여 리소스에 대한 제한 범위를 지정합니다.
-
단일 프로젝트, 전체 리소스 그룹 또는 여러 프로젝트가 있는 위치(지역)에 제한을 적용합니다. 리소스 섹션에서 이 범위를 적용하고 검토를 클릭하여 계속 진행합니다.
-
계속을 클릭하여 규칙에 컨텍스트를 추가합니다.
-
컨텍스트를 구성하여 제한되는 엔드포인트를 정의하세요. 보안 요구 사항에 따라 다음 시나리오 중 하나를 선택하세요:
-
사용 사례 A: 퍼블릭 인바운드 전면 차단
이 사용 사례를 사용하면 네트워크 수준에서 공용 인터넷 액세스를 제거하여 비공개 엔드포인트를 통해서만 애플리케이션과 기능에 액세스할 수 있습니다.
- 엔드포인트를 켜짐으로 설정합니다.
- 비공개 (트래픽 허용)를 선택합니다.
- 공개를 선택 취소한 상태로 둡니다(트래픽 차단).
- 네트워크 영역을 비워 둡니다. 모든 비공개 엔드포인트에 액세스할 수 있도록 이 섹션에서 네트워크 영역이 사용 설정되어 있지 않은지 확인하세요.
- ‘추가’를 클릭하여 새 컨텍스트를 생성하세요.
-
사용 사례 B: 공개 차단 및 IP별 비공개 제한
이 사용 사례를 사용하면 모든 공용 인터넷 액세스를 차단하고 비공개 엔드포인트 액세스를 특정 IP 주소 또는 네트워크 영역으로 제한하여 최대한의 제어를 달성할 수 있습니다.
- 엔드포인트를 켜짐으로 설정합니다.
- 비공개 (트래픽 허용)를 선택합니다.
- 공개를 선택 취소한 상태로 둡니다(트래픽 차단).
- 비공개 액세스를 허용할 네트워크 영역(예: 특정 VPC 또는 IP 범위)을 선택합니다.
- ‘추가’를 클릭하여 새 컨텍스트를 생성하세요.
-
사용 사례 C: 워크로드 완전히 격리하기
이 사용 사례를 사용하면 비공개 및 공용 엔드포인트를 모두 차단하여 네트워크 수준에서 애플리케이션과 기능을 완전히 격리할 수 있습니다. 이는 아웃바운드 연결만 하는 워크로드, 메시지 대기열이나 이벤트를 통해서만 통신하는 내부 마이크로 서비스 또는 유지 관리 중인 워크로드를 일괄 처리하는 데 유용합니다.
- 엔드포인트를 켜짐으로 설정합니다.
- 비공개는 선택 해제된 상태로 둡니다(트래픽 차단).
- 공개를 선택 취소한 상태로 둡니다(트래픽 차단).
- 네트워크 영역을 비워 둡니다. 네트워크 영역이 없는 빈 공개 컨텍스트는 모든 공개 액세스를 차단합니다.
- ‘추가’를 클릭하여 새 컨텍스트를 생성하세요.
-
-
계속을 클릭하여 규칙 세부 정보를 입력합니다.
-
규칙에 대한 설명을 입력하세요.
-
시행을 위해 사용을 선택합니다.
-
요약을 확인한 후 ‘생성’을 클릭하세요.
CLI를 사용하여 컨텍스트 기반 제한 추가하기
IBM Cloud CLI를 사용하여 Code Engine 리소스에 대한 컨텍스트 기반 제한을 만들 수 있습니다. 시작하기 전에 IBM Cloud CLI가 설치되어 있는지 확인하고 ibmcloud plugin install cbr 을 실행하여 컨텍스트 기반 제한 플러그인을 설치하세요.
-
사용 사례 A: 퍼블릭 인바운드 전면 차단
이 사용 사례를 사용하면 네트워크 수준에서 공용 인터넷 액세스를 제거하여 비공개 엔드포인트를 통해서만 애플리케이션과 기능에 액세스할 수 있습니다.
비공개 액세스는 허용하고 공개 액세스는 차단하는 규칙을 만듭니다:
ibmcloud cbr rule-create --description "Block public inbound entirely" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \ --context-attributes endpointType=private -
사용 사례 B: 공개 차단 및 IP별 비공개 제한
이 사용 사례를 사용하면 모든 공용 인터넷 액세스를 차단하고 비공개 엔드포인트 액세스를 특정 IP 주소 또는 네트워크 영역으로 제한하여 최대한의 제어를 달성할 수 있습니다. 사용 가능한 영역 ID를 찾으려면 ibmcloud cbr 영역을 실행합니다.
특정 영역에 대한 비공개 액세스를 제한하고 공개 액세스를 차단하는 규칙을 만듭니다:
ibmcloud cbr rule-create --description "Block public and restrict private by IP" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \ --context-attributes endpointType=private \ --zone-id <zone-id> -
사용 사례 C: 워크로드 완전히 격리하기
이 사용 사례를 사용하면 비공개 및 공용 엔드포인트를 모두 차단하여 네트워크 수준에서 애플리케이션과 기능을 완전히 격리할 수 있습니다. 이는 아웃바운드 연결만 하는 워크로드, 메시지 대기열이나 이벤트를 통해서만 통신하는 내부 마이크로 서비스 또는 유지 관리 중인 워크로드를 일괄 처리하는 데 유용합니다.
모든 인바운드 트래픽을 차단하려면 컨텍스트가 없는 규칙을 만드세요(빈 규칙은 모든 액세스를 차단합니다):
ibmcloud cbr rule-create --description "Isolate workloads entirely" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane
컨텍스트 기반 제한 규칙은 전체 계정, 프로젝트, 리소스 그룹 또는 위치(지역)에 적용됩니다. --resource-attributes 을 사용하여 규칙이 적용되는 수준을 지정합니다(예: 프로젝트 수준에서 적용하려면 --resource-attributes "projectId=<your-project-id>" ).
인바운드 연결에 대한 컨텍스트 기반 제한 규칙 테스트하기
컨텍스트 기반 제한 규칙을 만든 후에는 애플리케이션이나 함수를 사용하여 테스트할 수 있습니다:
-
공개 엔드포인트를 차단한 경우: 공개 URL 을 통해 애플리케이션이나 함수에 액세스하려고 하면
RBAC Access Denied오류 메시지가 표시됩니다. 워크로드는 비공개 엔드포인트(동일한 프로젝트의 VPC 또는 기타 Code Engine 구성 요소에서)를 통해 계속 액세스할 수 있습니다. -
IP별로 비공개 엔드포인트를 제한한 경우: 허용 목록에 있는 네트워크 영역 또는 IP 주소로만 비공개 엔드포인트를 통한 액세스가 허용됩니다. 허용 목록에 없는 출처에서 요청이 들어오는 경우
RBAC Access Denied오류 메시지가 표시됩니다. 예를 들어9.9.9.9/32만 허용한 경우 해당 IP 범위에서만 비공개 엔드포인트를 통해 애플리케이션 또는 기능에 액세스할 수 있습니다. 이 범위를 벗어나는 모든 항목에는 오류 메시지가 표시됩니다.
VPC(가상 프라이빗 클라우드)를 가리키는 네트워크 영역을 선택한 경우, VPC가 프라이빗 워크로드에 액세스할 수 있도록 VPE(가상 프라이빗 엔드포인트) 게이트웨이도 만들어야 합니다. 게이트웨이를 생성한 후 PDNS 확인으로 인해 일시적인 지연이 발생할 수 있습니다. 처음에는 RBAC Access Denied 오류 메시지가 표시될 수 있지만 잠시 후 액세스 권한이 부여됩니다.